1

着信/発信通話を検出して録音するアプリを作成しています。ブロードキャストレシーバーを登録して通話の録音を開始することはできましたが、停止することはできません。

私が書いた関連するBroadcastRecieverのコードが添付されています.BTWはサービスから呼び出されています。

public class IncomingCall extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
    if(TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)){
        String incnum = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
        int day = new Date().getDate(), mont = new Date().getMonth() , yea = new Date().getYear(), hou = new Date().getHours(), min = new Date().getMinutes();
        String s = ""+day+"_"+mont+"_"+yea+"_"+hou+"_"+min+"_"+incnum+"_Incoming"+".3gp";
         final AudioRecorder ar = new AudioRecorder(s, context);
         ar.start();
         Thread th = new Thread(){
             public void run(){
                 String stat = TelephonyManager.ACTION_PHONE_STATE_CHANGED;
                while(stat == TelephonyManager.EXTRA_STATE_OFFHOOK){
                    stat = TelephonyManager.ACTION_PHONE_STATE_CHANGED;
                }
                ar.stop();
             }
         };
         th.start();
    }



}

アドバイスしてください。ウェブ上で同様の問題に関する詳細を見つけることができませんでした:\

4

1 に答える 1

0

BroadcastReceiverリファレンスhttp://developer.android.com/reference/android/content/BroadcastReceiver.htmlをご覧ください

ストーリーは次のとおりです。BroadcastReceiverは、起動されたとき、onReceive()メソッドからまだ戻らなかった場合にOSによって強制終了された後、10秒間しか存続しません。電話がかかってきたらサービスを開始し、そこで録音し、電話の状態が変わったら別の受信者からこのサービスを停止します。

于 2012-01-18T22:52:57.233 に答える