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


18

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 diese mit verschiedenen Apps. Das Bluetooth-Headset verfügt über einige Audio-relevante "Command" (AVRCP) -Tasten: "Nächster Titel", "Vorheriger Titel" und "Wiedergabe / Pause".

Derzeit erhält immer einer der von mir installierten Musik-Player ( Meridian ) den Befehl, wenn ich einen der Befehle drücke - auch wenn er nicht aktiv ist. Wenn ich also auf "Wiedergabe / Pause" klicke , um einen Podcast anzuhalten ( DoggCatcher ), wird Meridian aktiviert und spielt Musik zusammen mit dem Podcast ab.

Beide Player verwenden das Headset: DoggCatcher hat "An Headset binden" und Meridian "Headset-Tasten" aktiviert. Ich verwende derzeit Android 2.2.1 für das GT-S5570, verwurzele mich jedoch möglicherweise und aktualisiere in Zukunft auf CyanogenMod 2.3 (oder eine ähnliche Version).

Wenn ich die Einzelheiten ignoriere, ist meine Frage allgemeiner:

  • Wie bestimmt Android, welche App auf diese Befehle reagiert? Ich interessiere mich sogar für eine sehr technische Antwort.

Praktisch interessiert mich:

  • Muss ich mit den Einstellungen der einzelnen Anwendungen experimentieren, um festzustellen, welche Anwendung die Befehle entgegennimmt, oder gibt es eine allgemeine Methode, um dies festzustellen?
  • Gibt es eine Möglichkeit, dies so zu konfigurieren, dass die tatsächlich aktive Anwendung automatisch immer die Priorität erhält? (wie teilweise in einer anderen Frage gestellt )

Wie unterscheidet sich diese Frage von ähnlichen Fragen:


1
Ich habe es geschaffen , einige gute Informationen zu finden , um diese von einem Android - Entwickler - Blog in Verbindung stehend - die richtige Art und Weise zu diskutieren , dass dies sollte von Anwendungen in 2.2 implementiert werden: „Zulassen von Anwendungen spielen schön (r) miteinander: Umgang mit Fernbedienungstasten“
Ilari Kajaste

Im Jahr 2016 ist dies immer noch ein Problem -.- Ab iOS ist dies für mich der bisher irritierendste Teil von Android: /
Squazz

Antworten:


11

Der Media-Button-Router , der bereits in einer Ihrer verknüpften Fragen erwähnt wurde, versucht herauszufinden, welche App gerade Musik abspielt, und sendet die AVRCP-Ereignisse an diese. Außerdem werden alle installierten Apps aufgelistet, die das Abhören von AVRCP-Ereignissen deklarieren .

Was macht AVRCP kompliziert: Einige Apps, wie z. B. Music Unlimited von Sony , scheinen android.intent.action.MEDIA_BUTTONin ihrem Manifest nicht deklariert zu sein. Aus diesem (oder einem anderen) Grund können sie nicht über einen Media-Button-Router gesteuert werden. Ich weiß, dass z. B. Music Unlimited über AVRCP gesteuert werden kann, da ich es in einem Benutzerkommentar gelesen habe und es auch einmal zum Laufen bringen konnte, aber leider nicht reproduzierbar ist. In diesen Fällen müssen wir also anscheinend auf das Update einer App mit einer sauberen Implementierung der AVRCP-Ereignisbehandlung warten.

Laut dem Wiki von media-button-router "Media Button Intent wird über bestellte Broadcasts gehandhabt und jede App legt ihre eigene Priorität für den Empfang fest." Vielleicht ist es also möglich, eine App zu schreiben, die diese Prioritäten anzeigt und es Ihnen tatsächlich ermöglicht, zu bestimmen, welche Anwendung gestartet wird. Allerdings kenne ich eine solche App nicht.



0

Vielleicht hilft das ein bisschen:

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

Ich benutze Samsung S5, zunächst mit 7digital App zum Herunterladen und Abspielen von Musik. Dann habe ich den Cloudplayer gewechselt und benutzt. Aber jedes Mal, wenn Clouplayer spielt und ich die Pause- / Wiedergabetaste an 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 Musikdateien gelöscht und es erneut versucht. Problem gelöst! Play / Pause ist jetzt irgendwie mit Cloudplayer verbunden.


0

Es ist kein Problem mit Ihrem BT-Gerät. Bei Kopplung mit Ihrem Telefon gibt das Bluetooth-Headset einen aktiven A2DP-Stream wieder, der vom Mobiltelefon initiiert wurde. Wenn es sich bei Ihrem Telefon um einen Standard-Media-Player handelt, kann er auf alle AVRCP-Steuerbefehle wie Überspringen der Wiedergabepause, FW usw. reagieren BT Headset es kommt noch ein aktiver A2DP Stream. Es werden AVRCP-Steuerungsnachrichten an Ihr Telefon gesendet. Es ist jetzt Ihr Telefon, das diese Befehle an die jeweilige App weiterleiten soll, in den meisten Fällen an die aktive A2DP-Streaming-Quelle, oder in Ihrem Fall leitet Ihr Telefon AVRCP-Befehle weiterhin an den Standard-Musikplayer weiter.

Versuchen Sie am besten, Ihr Mobiltelefon zu konfigurieren, sofern die von Ihnen gespielte Quelle die AVRCP-Steuerung unterstützt. 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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.