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:
-
„So stellen Sie das Verhalten der Schaltfläche“ Wiedergabe „auf der Bluetooth-Fernbedienung ein – nur praktischer, anderer Fokus, hat bisher keine Antworten und Ich interessiere mich auch für Antworten, die Rooting oder benutzerdefinierte Firmware erfordern würden (insbesondere CyanogenMod).
-
Standardanwendung für die Verarbeitung ändern Headset-Steuerelemente – ein genaues Problem, das behoben wurde, das jedoch meine Fragen nicht beantworten würde, obwohl es einige Hinweise zur Funktionsweise gibt.
-
Wie kann ich die Taste an meinen Kopfhörern dazu bringen, etwas anderes als den Standard-Musikplayer zu steuern? – teilweise ähnliche Frage auf der praktischen Seite, aber kein Fokus darauf, zu erklären, wie Es funktioniert tatsächlich und die einzige Antwort konzentriert sich auf den Teil, nach dem ich nicht frage (nur eine App erhält die Befehle).
-
Warum erhalten alle Sound-Apps auf einmal Bluetooth-Tastenereignisse – sehr ähnlich, aber nach einem bestimmten Problem fragend (alle) von den Mediaplayern, die den AVRCP-Befehl erhalten haben)
Kommentare
- Ich habe es geschafft, einige gute Informationen zu finden Dies stammt aus einem Android-Entwicklerblog – in dem diskutiert wird, wie dieses von Anwendungen in 2.2 implementiert werden sollte: “ Anwendungen können gut (r) miteinander spielen: Umgang mit Fernbedienungstasten “
- 2016 ist dies immer noch ein Problem -. – Wenn ich von iOS wechsle, ist dies für mich möglicherweise der irritierendste Teil von Android: /
- Verwandte? android.stackexchange.com/q/218823/693
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
Diese App wäre „Media Button Router“ https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr