セルプロバイダーを介してユーザーの電話を利用し、通話の長さを追跡することは可能ですか?
そのため、ユーザーはアプリ「今すぐ電話」のボタンを押します。あらかじめ決められた番号への通話が始まります。開始時間を記録します。通話が終了すると、使用された分数が計算されます。
可能?
セルプロバイダーを介してユーザーの電話を利用し、通話の長さを追跡することは可能ですか?
そのため、ユーザーはアプリ「今すぐ電話」のボタンを押します。あらかじめ決められた番号への通話が始まります。開始時間を記録します。通話が終了すると、使用された分数が計算されます。
可能?
両方の着信通話と発信通話の通話時間を計算するには、次のブロードキャストレシーバーを使用します。
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
}
}
}
次のように、受信者をマニフェストファイルに登録します。
<receiver android:name=".CallDurationReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
また、使用許可を追加します。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
これは手遅れかもしれませんが、将来それを必要とするかもしれない人のためだけです。発信コールの場合、CallLogから期間を読み取ることができます。着信コールの場合、コールの開始時間と終了時間に基づいて継続時間を計算できます。