5

AudioTrackヘッドフォンでストリーミングしています。ヘッドフォンでの再生SoundPoolを中断することなく、内蔵スピーカーのみに送信する必要があります。AudioTrackハッキングギャングはいますか?

4

1 に答える 1

11

多くの Android デバイスは、AudioFlinger / オーディオ HAL で単一の出力スレッドをすべてのローカル再生 (イヤホン、スピーカー、有線ヘッドセット/ヘッドフォン) に使用するため、2 つのトラックの異なるルーティングを同時に行うことはできません (これが、多くのデバイスでメディア ストリームが強制的にミュートされる理由です)。通知が再生され、有線ヘッドセットが接続されている場合; そうしないと、通知の再生中にラウドスピーカーで音楽が聞こえるためです)。

一部のデバイスでは、ラウドスピーカーで再生したいものにストリーム タイプを使用し、再生したいものにストリーム タイプをsetForceUse(FOR_MEDIA, FORCE_SPEAKER)使用することができれば、探していることを実行できる可能性があります。有線ヘッドセット。ただし、アプリケーションがその呼び出し を実行する方法があるかどうかはわかりません。おそらく、リフレクションを介してクラスのメソッドに到達し、メッセージを送信できます..私は自分で試したことがないので、惨めに失敗する可能性があります.MUSICVOICE_CALL
setForceUsehandleMessageAudioServiceMSG_SET_FORCE_USE

編集:有線ヘッドセットが実際のデバイスに接続されている間に MEDIA ストリームをラウドスピーカーに強制する setForceUse 方法をテストしましたが、動作します (ただし、すべてのデバイスで動作することを保証することはできません)。実装は、上で説明したものとは少し異なりました。私が使用したコードについては、android 4.0 でスピーカーをプログラムでオン/オフする方法に対する私の回答を参照してください。

于 2012-08-18T12:58:52.437 に答える