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
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" />
This may be too late but just for anyone who may need it in the future. For outgoing calls, you can read the duration from the CallLog. For incoming calls, you can calculate the duration based on the start and end times of the call.