スピーカーフォンを有効にするために、BroadcastReceiver (電話状態リスナー) で次のコードを使用しています。
final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);
}
}, 500);
これは、アプリを介して新しい発信通話が開始されたときに発生します。通話が切断されたら、スピーカーフォンをオフにします。
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
これはすべてうまくいくようです...初めてです。その後、私の電話のオーディオ ストリームがごちゃごちゃになっているようです。後続の呼び出しは奇妙に静かで、アプリのコードの外部からの呼び出しでも (上記の設定がトリガーされていない場合)。一見ランダムに通話音声を戻すことができますが、何が原因で戻ってくるのかわかりません。
私が間違っている可能性があることについてのアイデアはありますか? 私が気付いていない Android のバグはありますか? 後続の通話で音声が無音にならないようにするにはどうすればよいですか?
編集: Galaxy S4 でテストしています。