Froyo で Intent.ACTION_MEDIA_BUTTON を処理するための正しい (新しい) アプローチを見つけようとしています。2.2 日前には、BroadcastReceiver を (永続的または実行時に) 登録する必要があり、他のアプリケーションがそれらをインターセプトしてブロードキャストを中止しない限り、メディア ボタン イベントが到着していました。
Froyo はまだそのモデルをある程度サポートしているようですが (少なくとも有線ヘッドセットの場合)、アプリケーション間の「トランスポート フォーカス」を制御するように見える registerMediaButtonEventReceiver メソッドと unregisterMediaButtonEventReceiver メソッドも導入されています。
私の実験では、registerMediaButtonEventReceiver を使用すると、Bluetooth と有線のヘッドセット ボタンの両方の押下がアプリケーションのブロードキャスト レシーバーにルーティングされます (アプリは「トランスポート フォーカス」を取得します)。ヘッドセット) は、フォーカスをデフォルトのメディア プレーヤーに戻します。
Android 2.2 での実装の背後にあるロジックは何ですか? トランスポート コントロールを処理する正しい方法は何ですか? オーディオ ルーティングの変更を検出して、フォーカスを取り戻す必要がありますか?
これは、Android プラットフォーム上のすべてのサードパーティ メディア プレーヤーが対処しなければならない問題であるため、誰か (おそらく Google エンジニア) が、私たち全員が従うことができるガイドラインを提供してくれることを願っています。標準的なアプローチを採用することで、ヘッドセットのボタン制御がエンド ユーザーにとってより予測しやすくなる場合があります。
ステファン