UDP ソケット経由で受信したサウンドを再生するために AudioTrack を使用しています。音とともに多くのノイズが発生するので、AudioManager を使用することにしました。しかし、AudioManager は、アプリケーションの境界を超えてサウンド ルーティングを変更します。以下は私が使用しているコードです。
m_amAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
m_amAudioManager.setMode(AudioManager.MODE_IN_CALL);
m_amAudioManager.setSpeakerphoneOn(false);
このコードの問題は、アプリを閉じて音楽プレーヤーを起動すると、サウンドが通常のバックスピーカーではなくフロントスピーカーから聞こえ、どうにかして変更できないことです。この問題を解決するために、アプリを閉じるときに次の行を追加することにしました。
m_amAudioManager.setSpeakerphoneOn(true);
しかし、この行の問題は、電話 (通常の電話) を受信すると、デフォルトでスピーカーがオンになっていることです。これについて本当に助けが必要です。