2012-04-05 8 views
7

携帯電話プロバイダーを通じてユーザーの電話を利用し、通話の長さを追跡できますか?電話の通話時間を追跡する

したがって、ユーザーは「今すぐ呼び出す」アプリのボタンを押します。コールは、事前に決められた番号に始まります。開始時刻を記録します。通話が終了すると、使用された分数が計算されます。

可能ですか?両方の着信、発信コールは、次の放送受信機を使用するための時間を計算するのに

+0

アプリで通話を開始して終了する場合は、通話の前後の現在の時間を確認できませんか? –

+0

それは私が把握しようとしているものです。 iOSとAndroidプラットフォームでは、通話が終了したときを検出できますか? – spentak

+0

AndroidやiOSで通話記録を取得することもできます。また、説明のとおりにアプリから発信された通話のみが心配な場合は、システム時刻を確認することもできます。 –

答えて

9

は話した:

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" /> 
+9

しかし、このような期間を計算するにはピックアップ時間が含まれ、その結果、実際の期間を超過する見積もりが得られます。私はこれも解決策を探しています。コールログが正確な期間情報を見つけることができる唯一の場所だと思われます。 –

+1

@Akhil TelephonyManager.EXTRA_STATE_RINGINGはあなたの開始時刻を取得する場所であり、自動的に逃した通話でも継続時間があることを意味するため、正確な結果が得られるかどうかはわかりません。私は 'CALL_STATE_OFFHOOK'が録音時間を記録するのに適切な場所であると思っていたでしょう – Zidane

+0

これは発信のために働くことができません –

0

これは遅すぎる可能性があります将来それを編集しました。発信通話の場合は、通話時間をコールログから読み取ることができます。着信コールの場合は、コールの開始時刻と終了時刻に基づいて期間を計算できます。

関連する問題