Was bestimmt, welche Anwendung auf einen Bluetooth-AVRCP-Befehl reagiert?

Hintergrund: Ich habe ein A2DP / AVRCP-Bluetooth-Headset ( Nokia BH -505 ), mit dem ich aktiv Podcasts und Musik höre. Natürlich höre ich mir diese mit verschiedenen Apps an. Das Bluetooth-Headset verfügt über einige „Befehls“ -Tasten (AVRCP), die für Audio relevant sind – insbesondere: „Nächster Titel“, „Vorheriger Titel“ und „Wiedergabe / Pause“

Derzeit, wenn ich einen der Befehle drücke Einer der von mir installierten Musikplayer ( Meridian ) erhält immer den Befehl – auch wenn er nicht aktiv ist. Wenn ich also auf „Wiedergabe / Pause“ klicke. In der Absicht, einen Podcast anzuhalten ( DoggCatcher ), wird stattdessen Meridian aktiviert und beginnt mit der Wiedergabe von Musik zusammen mit dem Podcast.

Beide Player sind auf eingestellt Verwenden Sie das Headset: DoggCatcher hat „An Headset binden“ aktiviert und Meridian hat „Headset-Schaltflächen“ aktiviert. Ich verwende derzeit Android 2.2.1 ohne Rootberechtigung für GT-S5570, aber möglicherweise rooting und aktualisiere auf 2.3 CyanogenMod ( oder so), in Zukunft.

Wenn ich die Einzelheiten ignoriere, ist meine Frage dazu allgemeiner:

  • Wie ermittelt Android, welche App abgerufen wird? Um auf diese Befehle zu reagieren? Ich bin sogar an einer sehr technischen Antwort interessiert.

Auf der praktischen Seite interessiert mich:

  • Muss ich an den Einstellungen der einzelnen Anwendungen herumspielen, um festzustellen, welche Anwendung die Befehle ausführt, oder gibt es eine allgemeine Möglichkeit, dies festzustellen?
  • Gibt es eine Möglichkeit zum Konfigurieren dies, damit die Anwendung, die tatsächlich aktiv ist, automatisch immer die Priorität erhält? (wie teilweise in einer anderen Frage gestellt wurde)

Wie unterscheidet sich diese Frage von ähnlichen Fragen:

Kommentare

Antwort

Media-Button-Router , der bereits in einer Ihrer verknüpften Fragen erwähnt wurde, versucht herauszufinden Welche App spielt gerade Musik ab und sendet die AVRCP-Ereignisse an sie. Darüber hinaus werden alle installierten Apps aufgelistet, die deklarieren zum Abhören von AVRCP-Ereignissen.

Was macht AVRCP kompliziert: Einige Apps, wie Sonys Music Unlimited scheint android.intent.action.MEDIA_BUTTON in ihrem Manifest nicht zu deklarieren. Aus diesem (oder einem anderen) Grund können sie nicht über Medien gesteuert werden. Button-Router. Ich weiß, dass z.B. Music Unlimited kann über AVRCP gesteuert werden, da ich es in einem Benutzerkommentar gelesen habe und es auch einmal zum Laufen gebracht habe, aber leider nicht reproduzierbar ist. In diesen Fällen scheint es also so, als müssten wir es tun Warten Sie auf das Update einer App mit einer sauberen Implementierung der AVRCP-Ereignisbehandlung.

Laut dem Wiki von media-button-router „Media Button Die Absichtsabwicklung erfolgt über geordnete Sendungen, und jede App legt ihre eigene Priorität für den Empfang fest.“ Es könnte also möglich sein, eine App zu schreiben, die diese Prioritäten anzeigt und dies tatsächlich tun würde Hier können Sie bestimmen, welche Anwendung gestartet wird. Ich weiß jedoch nichts über eine solche App.

Antwort

Sie haben schließlich einen Abschnitt hinzugefügt, um genau diese Frage zu beantworten: https://developer.android.com/guide/topics/media-apps/mediabuttons.html

Antwort

Vielleicht hilft dies ein bisschen:

Samsung S5 -> Bluetooth-Empfänger + In-Ear-Telefonstecker

Ich verwende Samsung S5, zuerst mit der 7digital-App zum Herunterladen und Abspielen von Musik. Dann habe ich Cloudplayer geändert und verwendet. Aber jedes Mal, wenn Clouplayer spielt und ich die Pause / Wiedergabetaste auf meinem Bluetooth-Empfänger drücke, beginnt meine 7digital-App mit der Musikwiedergabe. Ich konnte keine Einstellung ändern, um die Bluetooth-Wiedergabe / Pause in Richtung Cloudplayer zu ändern. Ich habe dann alle meine 7digital heruntergeladenen Musik gelöscht und es erneut versucht. Problem gelöst! Play / Pause ist jetzt irgendwie mit Cloudplayer verbunden.

Antwort

Es ist kein Problem mit Ihrem BT-Gerät. In Verbindung mit Ihrem Telefon spielt das Bluetooth-Headset einen aktiven A2DP-Stream ab, der vom Mobiltelefon initiiert wurde. Wenn es sich um einen Standard-Mediaplayer auf Ihrem Telefon handelt, kann er auf alle AVRCP-Steuerbefehle wie Wiedergabepause, Überspringen usw. reagieren. Wenn Sie jetzt etwas im Web oder einen anderen Player abspielen, der nicht alle derartigen Steuerelemente über AVRCP implementiert, z BT Headset Es ist immer noch ein aktiver A2DP-Stream. Es werden AVRCP Control-Nachrichten an Ihr Telefon gesendet. Es ist jetzt Ihr Telefon, das diese Befehle in den meisten Fällen an die jeweilige App an die aktive A2DP-Streaming-Quelle weiterleiten soll. In Ihrem Fall leitet Ihr Telefon weiterhin AVRCP-Befehle an den Standard-Musikplayer weiter.

Ihre Am besten versuchen Sie, Ihr Handy zu konfigurieren, vorausgesetzt, die Quelle, die Sie spielen, unterstützt die AVRCP-Steuerung. Wenn dies nicht der Fall ist, können Sie sowieso nichts tun. Wenn dies der Fall ist, sollte Mobile definitiv zulassen, dass diese AVRCP-Befehle von Ihrer aktiven A2DP-Streaming-Quelle verarbeitet werden.

Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.