1

私は、ユーザーが音声メモをとることができるアプリに取り組んでいます。このために、私はAudioRecorderを使用して、マイクからオーディオデータを常に取得し、それをMp3に処理しています。

最近まで、アプリがバックグラウンドで実行されているときに電話を受けたり電話をかけたりすると、相手に私の声が聞こえないことがわかりました。ダイヤラ画面のミュート/ミュート解除ボタンをクリックしても何も起こりません。アプリを停止するまでマイクが無効になっているようです。

問題は、この状況にどのように対処できるかということです。私の唯一のオプションは、音声通話が開始されたらAudioRecorderをリリースすることですか?AudioRecorderが通話中にマイクからの音声データをスキップするだけで十分ですが、アプリが原因でユーザーが通信できる状況は受け入れられません。

ありがとう、

4

2 に答える 2

0

BroadcastReceiver の一部として PHONE_STATE アクションを使用して、着信を傍受できます。次に、受信機の onReceive 関数で、電話の状態を確認します。

public void onReceive(Context context, Intent intent) {

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

    if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
        //Phone is ringing

    }else if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK){
        //Call received


    }else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
        //Call Dropped or rejected

    }

}

マニフェストに必要なアクセス許可を追加することを忘れないでください。

同様に、発信通話を傍受することもできます。これは、両方を行う方法を説明する素晴らしいチュートリアルです

残りは、傍受したものに応じてレコーダーを停止および再開することです。

于 2012-08-06T21:03:18.090 に答える
0

一度にマイクを使用できるアプリは 1 つだけです。PhoneStateListener を使用して、電話が鳴ったりオフフックになったりしたときにレコーダーを解放できるようにすることができます。

于 2012-08-06T20:57:50.100 に答える