Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Track a phone call duration

Is it possible to utilize the users phone through their cell provider, and track the length of a phone call?

So the user presses a button in the app "Call Now". A call begins to a pre-determined number. We record the start time. When the call ends, we calculate how many minutes were used.

Possible?

like image 516
spentak Avatar asked Apr 05 '12 16:04

spentak


People also ask

How long until you can trace a call?

No, there's no minimum time the caller needs to be on the line. In fact, if the caller hangs up before you can pick up the phone, you probably can still trace the call. A connection simply needs to be made, and that usually happens once the phone rings at least two times.


1 Answers

To calculate time talked for both incoming , outgoing calls use the following broadcast 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
            }
        }
    }

Register your receiver in your manifest file like this:

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

Also add the uses permission:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
like image 58
Akhil Avatar answered Oct 27 '22 00:10

Akhil