2012-04-05 15 views
7

ट्रैक करें क्या उपयोगकर्ता के सेल प्रदाता के माध्यम से फोन का उपयोग करना संभव है, और फोन कॉल की लंबाई को ट्रैक करना संभव है?फ़ोन कॉल अवधि

तो उपयोगकर्ता ऐप "अभी कॉल करें" में एक बटन दबाता है। एक कॉल पूर्व निर्धारित संख्या से शुरू होता है। हम प्रारंभ समय रिकॉर्ड करते हैं। जब कॉल समाप्त होता है, तो हम गणना करते हैं कि कितने मिनट का उपयोग किया गया था।

संभव है?

<receiver android:name=".CallDurationReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 

भी उपयोग करता है अनुमति जोड़ें:

public class CallDurationReceiver extends BroadcastReceiver { 

    static boolean flag = false; 
    static long start_time, end_time; 

    @Override 
    public void onReceive(Context arg0, Intent intent) { 
     String action = intent.getAction(); 
     if (action.equalsIgnoreCase("android.intent.action.PHONE_STATE")) { 
      if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
      TelephonyManager.EXTRA_STATE_RINGING)) { 
       start_time = System.currentTimeMillis(); 
      } 
      if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
      TelephonyManager.EXTRA_STATE_IDLE)) { 
       end_time = System.currentTimeMillis(); 
       //Total time talked = 
       long total_time = end_time - start_time; 
       //Store total_time somewhere or pass it to an Activity using intent 
      } 
     } 
    } 

इस तरह से अपनी मैनिफ़ेस्ट फ़ाइल में अपने रिसीवर रजिस्टर:

+0

यदि वे आपके ऐप में कॉल शुरू और समाप्त करते हैं, तो क्या आप कॉल के पहले और बाद में वर्तमान समय की जांच नहीं कर सकते? –

+0

यही वह है जिसे मैं समझने की कोशिश कर रहा हूं। क्या आईओएस और एंड्रॉइड प्लेटफ़ॉर्म मुझे कॉल करने के दौरान पहचानने की अनुमति देता है? – spentak

+0

आप एंड्रॉइड और आईओएस पर कॉल लॉग प्राप्त कर सकते हैं, या यदि आप ऐप से कॉल किए गए कॉल के बारे में चिंतित हैं, तो आप सिस्टम का समय देख सकते हैं। –

उत्तर

9

गणना करने के लिए समय दोनों इनकमिंग, आउटगोइंग कॉल निम्नलिखित प्रसारण रिसीवर का उपयोग के लिए बात की थी:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+9

हालांकि, इस तरह की अवधि की गणना करने में पिक अप टाइम शामिल होगा, जिसके परिणामस्वरूप वास्तविक अवधि से अधिक अनुमान होगा। मैं इसके लिए भी एक समाधान खोज रहा हूं, और ऐसा लगता है कि कॉल लॉग एकमात्र ऐसा स्थान है जहां आप सटीक अवधि की जानकारी पा सकते हैं। –

+1

@ अखिल मुझे नहीं पता कि यह सटीक परिणाम देगा क्योंकि TelephonyManager.EXTRA_STATE_RINGING वह जगह है जहां आपको अपना प्रारंभ समय मिलता है और इसका स्वचालित रूप से मतलब है कि मिस्ड कॉल की अवधि भी होगी। मैंने सोचा होगा कि 'CALL_STATE_OFFHOOK' रिकॉर्डिंग अवधि – Zidane

+0

शुरू करने के लिए अनुमोदित स्थान है यह आउटगोइंग कॉल के लिए काम नहीं कर सकता –

0

यह बहुत देर हो सकती है लेकिन केवल किसी के लिए जो इसे भविष्य में संपादित करें। आउटगोइंग कॉल के लिए, आप कॉललॉग से अवधि पढ़ सकते हैं। आने वाली कॉल के लिए, आप कॉल के प्रारंभ और समाप्ति समय के आधार पर अवधि की गणना कर सकते हैं।

संबंधित मुद्दे