背景: A2DP / AVRCP Bluetoothヘッドセット( Nokia BH -505 )ポッドキャストと音楽の両方を聴くために積極的に使用しています。もちろん、私はさまざまなアプリでこれらを聴いています。 Bluetoothヘッドセットには、オーディオに関連するいくつかの「コマンド」(AVRCP)ボタンがあります。具体的には、「次のトラック」、「前のトラック」、「再生/一時停止」
現在、コマンドのいずれかを押すたびに、インストールした音楽プレーヤーの1つ( Meridian )は、アクティブでない場合でも常にコマンドを取得します。したがって、[再生/一時停止]をクリックするとポッドキャスト( DogCatcher )を一時停止する場合は、代わりにMeridianがアクティブになり、ポッドキャストと一緒に音楽の再生を開始します。
両方のプレーヤーがヘッドセットを使用している:DoggCatcherの「ヘッドセットへのバインド」がオンになっていて、Meridianの「ヘッドセットボタン」がオンになっています。現在、GT-S5570でルート化されていないストックAndroid 2.2.1を使用していますが、ルート化して2.3 CyanogenModにアップグレードしている可能性があります(など)、将来的に。
詳細を無視すると、これに関する私の質問はより一般的です:
- Androidはどのアプリを取得するかをどのように決定しますかこれらのコマンドに反応するには?非常に技術的な答えにも興味があります。
実用面では、次のことに興味があります。
- どのアプリケーションがコマンドを受け取るかを決定するために、各アプリケーションの設定をいじる必要がありますか、それともこれを決定する一般的な方法はありますか?
- 構成する方法はありますか?これにより、実際にアクティブなアプリケーションが常に自動的に優先されますか? (別の質問で部分的に尋ねられたように)
この質問と同様の質問との違い:
-
「BluetoothRemoteで「再生」ボタンの動作を設定する方法」-これまでのところ、実用的で異なる焦点しかありません。また、root化またはカスタムファームウェア(特にCyanogenMod)が必要な回答にも興味があります。
-
デフォルトのアプリケーションを変更して処理するヘッドセットコントロール-修正された正確な問題ですが、私の質問に答える方法ではありませんが、物事がどのように機能するかについていくつかのヒントを提供します。
-
ヘッドフォンのボタンでストックミュージックプレーヤー以外のものを制御するにはどうすればよいですか?-実用面では部分的に同様の質問ですが、方法の説明に焦点を当てていませんそれは実際に機能し、唯一の答えは私が尋ねていない部分に焦点を当てています(1つのアプリだけにコマンドを受信させる)。
-
すべてのサウンドアプリがBluetoothボタンイベントを一度に取得するのはなぜですか-非常に似ていますが、特定の問題について質問します(すべてAVRCPコマンドを取得しているメディアプレーヤーの数)
コメント
- 私はなんとか関連するいくつかの良い情報を見つけることができましたこれはAndroid開発者ブログからのものです-これを2.2のアプリケーションで実装する必要がある適切な方法について説明しています: "アプリケーションが互いにnice(r)を再生できるようにする:リモートコントロールボタンの処理"
- 2016年もこれはまだ問題です-。 -iOSから移行すると、これは私にとってこれまでのAndroidの最も苛立たしい部分かもしれません:/
- 関連? android.stackexchange.com/q/218823/693
回答
media-button-router 、リンクされた質問の1つですでに言及されている、試行現在音楽を再生しているアプリと、それにAVRCPイベントをディスパッチするアプリ。さらに、インストールされているすべてのアプリが一覧表示され、AVRCPイベントをリッスンするように宣言します。
AVRCPを複雑にする理由: Sonys Music Unlimited は、マニフェストでandroid.intent.action.MEDIA_BUTTON
を宣言していないようです。このため(またはその他の理由で)、メディアを介して制御することはできません-ボタンルーター。私はそれを知っています、例えばMusic Unlimitedは、ユーザーのコメントで読んだり、 1回実行できたので、AVRCPを介して制御できますが、残念ながら再現できません。そのため、そのような場合は、再現する必要があるようです。 AVRCPイベント処理のクリーンな実装によるアプリの更新を待ちます。
media-button-routerのwikiによると 「メディアボタンインテントの処理は順序付けられたブロードキャストを通じて行われ、各アプリはそれを受信するための独自の優先順位を設定します。」したがって、これらの優先順位を表示するアプリを作成することは可能かもしれません。どのアプリケーションを起動するかを決定できます。しかし、そのようなアプリについては知りません。
回答
彼らはついに、この正確な質問に答えるためのセクションを追加しました: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
回答
おそらくこれは少し役立つでしょう:
Samsung S5-> Bluetoothレシーバー+ InEar電話プラグ
最初に7digitalアプリで音楽をダウンロードして再生するSamsungS5を使用しています。次に、Cloudplayerを変更して使用しました。しかし、Clouplayerの再生中に、Bluetoothレシーバーの一時停止/再生ボタンを押すたびに、7digitalアプリが音楽の再生を開始します。 Bluetoothの再生/一時停止をCloudplayerに変更するための設定を変更できませんでした。次に、ダウンロードした7digitalの音楽をすべて削除して、再試行しました。問題が解決しました!再生/一時停止は、どういうわけかCloudplayerにリンクされています。
回答
BTデバイスに問題はありません。 Bluetoothヘッドセットは、携帯電話とペアリングすると、携帯電話から開始されたアクティブなA2DPストリームを再生します。それがお使いの携帯電話の標準的なメディアプレーヤーである場合、再生一時停止スキップ、fwなどのすべてのAVRCP制御コマンドに反応できます。WebまたはAVRCPに対するそのようなすべての制御を実装していない他のプレーヤーで何かを再生すると、 BTヘッドセットはまだアクティブなA2DPストリームです。それはあなたの電話にAVRCP制御メッセージを送ります。これで、これらのコマンドをそれぞれのアプリにルーティングし、ほとんどの場合アクティブなA2DPストリーミングソースにルーティングすることになっているのは携帯電話です。または、携帯電話がAVRCPコマンドをデフォルトの音楽プレーヤーに転送している場合もあります。
最善の策は、再生しているソースがAVRCP制御をサポートしている場合は、モバイルを構成してみることです。そうでない場合は、とにかく何もできません。そうであれば、間違いなくMobileは、これらのAVRCPコマンドをアクティブなA2DPストリーミングソースで処理できるようにする必要があります。
回答
このアプリは「メディアボタンルーター」になります https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr