14

プログラムでサービスを使用して通話でスピーカーフォンをオンに設定しようとしてaudiomanager.setSpeakerphoneOn(true)いますが、機能していないようで、理由がわかりません。私は何か他のことをすべきですか?

ありがとう

4

2 に答える 2

17

マニフェスト ファイルに、この操作を実行するために必要な権限があるかどうかを確認してください。

これはあなたが必要とする許可だと思いますMODIFY_AUDIO_SETTINGS

于 2010-04-18T18:38:42.503 に答える
4

Android 4.1以降では、電話をかけるとスピーカーフォンが自動的にオフになります。だからあなたがする必要があるのは、状態が「offHook」のときに行われる通話をリッスンするレシーバーにスピーカーフォンを追加し、そのようにスピーカーをオンにするために0.5秒遅延させることです:

final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
    @Override
    public void run() {
    audioManager.setMode(AudioManager.MODE_IN_CALL);
    audioManager.setSpeakerphoneOn(true);
    MainActivity.shouldTurnSpeakerOn = false;
    MainActivity.shouldTurnSpeakerOff = true;
    Log.d("incoming_call","speaker_on");                    
    }
}, 500);

これを Phone 状態リスナーに忘れずに追加してください。また、状態が IDLE のときにスピーカー フォンをオフにする (以前のバージョンで必要)。

幸運を。

于 2014-08-17T06:20:38.030 に答える