2012-04-05 39 views
7

Có thể sử dụng điện thoại của người dùng thông qua nhà cung cấp dịch vụ di động của họ và theo dõi thời lượng cuộc gọi điện thoại không?Theo dõi thời lượng cuộc gọi điện thoại

Vì vậy, người dùng nhấn một nút trong ứng dụng "Gọi ngay". Cuộc gọi bắt đầu với số được xác định trước. Chúng tôi ghi lại thời gian bắt đầu. Khi cuộc gọi kết thúc, chúng tôi tính toán số phút đã được sử dụng.

Có thể?

+0

Nếu họ bắt đầu và kết thúc cuộc gọi trong ứng dụng của bạn, bạn không thể chỉ kiểm tra thời gian hiện tại trước và sau cuộc gọi? –

+0

Đó là những gì tôi đang cố gắng tìm ra. Nền tảng iOS và Android có cho phép tôi phát hiện khi cuộc gọi kết thúc không? – spentak

+0

Bạn có thể nhận nhật ký cuộc gọi trên Android và iOS hoặc nếu bạn chỉ lo lắng về các cuộc gọi được đặt từ ứng dụng khi bạn mô tả, thì bạn có thể kiểm tra thời gian của hệ thống. –

Trả lời

9

Để tính toán thời gian nói chuyện cho cả hai, cuộc gọi đi đến sử dụng máy thu phát sóng sau:

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 
      } 
     } 
    } 

Đăng ký nhận của bạn trong file manifest của bạn như thế này:

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

Ngoài ra thêm sự cho phép sử dụng:

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

Mặc dù, tính toán thời lượng như thế này sẽ bao gồm thời gian nhận, dẫn đến ước tính vượt quá thời lượng thực. Tôi đang tìm kiếm một giải pháp cho điều này quá, và nó có vẻ như nhật ký cuộc gọi là nơi duy nhất mà bạn có thể tìm thấy thông tin thời gian chính xác. –

+1

@Akhil Tôi không biết nếu điều này sẽ cho kết quả chính xác bởi vì TelephonyManager.EXTRA_STATE_RINGING là nơi u có được thời gian bắt đầu của bạn và điều đó tự động có nghĩa là ngay cả cuộc gọi nhỡ sẽ có thời lượng. Tôi đã có thể nghĩ 'CALL_STATE_OFFHOOK' là nơi hấp dẫn để bắt đầu thời lượng ghi hình – Zidane

+0

điều này không thể hoạt động cho cuộc gọi đi –

0

Điều này có thể đã quá muộn nhưng chỉ dành cho bất kỳ ai có thể chỉnh sửa nó trong tương lai. Đối với các cuộc gọi đi, bạn có thể đọc thời lượng từ CallLog. Đối với cuộc gọi đến, bạn có thể tính toán thời lượng dựa trên thời gian bắt đầu và kết thúc cuộc gọi.

Các vấn đề liên quan