Bakgrund: Jag har ett A2DP / AVRCP bluetooth-headset ( Nokia BH -505 ) som jag använder aktivt för att lyssna på både podcasts och musik. Naturligtvis lyssnar jag på dessa med olika appar. Bluetooth-headsetet har några ”kommandoknappar” (AVRCP), relevanta för ljud – specifikt: ”nästa spår”, ”föregående spår” och ”spela / pausa”
För närvarande när jag trycker på något av kommandona , en av de musikspelare jag har installerat ( Meridian ) får alltid kommandot – även när det inte är aktivt. Så när jag klickar på ”spela / pausa” tänker pausa en podcast ( DoggCatcher ), istället aktiveras Meridian och börjar spela musik tillsammans med podcasten.
Båda spelarna är inställda på använder headsetet: DoggCatcher har ”Bind to headset” påslagen och Meridian har ”Headset Buttons” aktiverat. Jag använder för närvarande icke rotat lager Android 2.2.1 på GT-S5570 men kan rota och uppgradera till 2.3 CyanogenMod ( eller liknande), i framtiden.
Jag ignorerar detaljerna, min fråga om detta är mer allmän:
- Hur bestämmer Android vilken app som får att reagera på dessa kommandon? Jag är intresserad även av ett mycket tekniskt svar.
På den praktiska sidan är jag intresserad av:
- Måste jag lura med varje applikationsinställning för att bestämma vilken applikation som tar kommandona, eller finns det något allmänt sätt att bestämma detta?
- Finns det ett sätt att konfigurera detta så att applikationen ”s faktiskt aktiv automatiskt alltid skulle få prioritet? (som ställdes delvis i en annan fråga )
Hur denna fråga skiljer sig från liknande frågor:
-
”Hur man ställer in” Spela ”-knappbeteende på Bluetooth-fjärrkontroll” – bara praktiskt, annorlunda fokus, har hittills inga svar och Jag är också intresserad av svar som kräver rooting eller anpassad firmware (särskilt CyanogenMod).
-
Ändra standardapplikation för hantering headsetkontroller – en exakt fråga som fick rätt, men inte på ett sätt som skulle svara på mina frågor, men det ger några tips om hur saker fungerar.
-
Hur kan jag få knappen på mina hörlurar att styra något annat än lagermusikspelaren? – delvis liknande fråga på praktisk sida, men inget fokus på att förklara hur det fungerar faktiskt, och det enda svaret är inriktat på den del jag inte frågar om (att bara en app får kommandona).
-
varför får alla ljudappar bluetooth-knapphändelser på en gång – väldigt lika, men frågar om ett specifikt problem (alla av mediaspelarna som får AVRCP-kommandot)
Kommentarer
- Jag lyckades hitta bra information relaterad till detta från en Android-utvecklarblogg – diskuterar rätt sätt att detta ska implementeras av applikationer i 2.2: ” Tillåter att applikationer spelar trevligt (r) med varandra: Hantering av fjärrkontrollsknappar ”
- 2016 är detta fortfarande ett problem -. – Att flytta från iOS kan vara den mest irriterande delen av Android för mig hittills: /
- Relaterat? android.stackexchange.com/q/218823/693
Svar
media-button-router , som redan nämns i en av dina länkade frågor, försöker att räkna ut vilken app som för närvarande spelar musik och att skicka AVRCP-händelser till den. Dessutom listas alla installerade appar som deklarerar att lyssna på AVRCP-händelser.
Vad gör AVRCP komplicerat: Vissa appar, som Sonys Music Unlimited , verkar inte förklara android.intent.action.MEDIA_BUTTON
i sitt manifest. Av detta (eller kanske någon annan) anledning kan de inte styras via media- knapp-router. Jag vet att t.ex. Music Unlimited kan styras via AVRCP eftersom jag läste den i en användarkommentar och jag kunde också få den igång en gång men tyvärr är den inte reproducerbar. Så i dessa fall verkar det som om vi måste vänta på en apps uppdatering med en ren implementering av AVRCP-händelseshantering.
Enligt media-button-router ”s wiki ”Medieknapp Avsiktlig hantering sker genom beställda sändningar, och varje app ställer in sin egen prioritet för mottagning.” Så det kan vara möjligt att skriva en app som visar dessa prioriteringar och i själva verket skulle låter dig bestämma vilken ansökan som ska starta. Men jag vet inte om en sådan app.
Svar
De lade äntligen till ett avsnitt för att svara på denna exakta fråga: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
Svar
Kanske hjälper det lite:
Samsung S5 -> Bluetooth-mottagare + In-ear-telefonkontakter
Jag använder Samsung S5, först med 7digital-appen för att ladda ner och spela musik. Sedan bytte jag och använde Cloudplayer. Men varje gång Clouplayer spelar och jag trycker på paus / play-knappen på min Bluetooth-mottagare kommer min 7digital-app att börja spela musik. Jag kunde inte ändra någon inställning för att ändra Bluetooth-uppspelning / paus mot Cloudplayer. Jag raderade sedan all min 7digital nedladdade musik och försökte igen. Problemet löst! Spela / pausa är på något sätt länkat till Cloudplayer nu.
Svar
Det är inte ett problem med din BT-enhet. När du parar ihop med din telefon spelar Bluetooth-headset en aktiv A2DP-ström som initierats från mobiltelefonen. Om det är någon vanlig mediaspelare på din telefon kan den reagera på alla AVRCP-kontrollkommandon som paushopp, fw osv. Nu när du spelar något på webben eller någon annan spelare som inte implementerar alla sådana kontroller över AVRCP, för BT Headset är det fortfarande en aktiv A2DP-ström som kommer. Det skickar AVRCP-kontrollmeddelanden till din telefon. Det är nu din telefon som ska dirigera dessa kommandon till respektive app i de flesta fall till den aktiva A2DP-streamingkällan eller i ditt fall vidarebefordrar din AVRCP-kommando till standardmusikspelaren.
Din det bästa är att försöka konfigurera din mobil förutsatt att källan du spelar stöder AVRCP-kontroll. Om det inte gör det i alla fall kan du inte göra någonting. Om det gör det, skulle Mobile definitivt tillåta att dessa AVRCP-kommandon hanteras av din aktiva A2DP-strömningskälla.
Svar
Den här appen skulle vara ”Media Button Router” https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr