Baggrund: Jeg har et A2DP / AVRCP bluetooth-headset ( Nokia BH -505 ), som jeg bruger aktivt til at lytte til både podcasts og musik. Selvfølgelig lytter jeg til disse med forskellige apps. Bluetooth-headsettet har nogle “kommandoknapper” (AVRCP), der er relevante for lyd – specifikt: “næste spor”, “forrige spor” og “afspil / pause”
I øjeblikket når jeg trykker på en af kommandoerne , en af de musikafspillere, jeg har installeret ( Meridian ) får altid kommandoen – også når den ikke er aktiv. Så når jeg klikker på “play / pause” har til hensigt at sætte en podcast på pause ( DoggCatcher ), i stedet aktiveres Meridian og begynder at afspille musik sammen med podcasten.
Begge spillere er indstillet til bruger headsettet: DoggCatcher har “Bind til headset” tændt, og Meridian har “Headset Buttons” tændt. Jeg bruger i øjeblikket ikke rodfæstet lager Android 2.2.1 på GT-S5570, men kan rodfæste og opgradere til 2.3 CyanogenMod ( eller sådan) i fremtiden.
Når jeg ignorerer detaljerne, er mit spørgsmål om dette mere generelt:
- Hvordan bestemmer Android, hvilken app der får for at reagere på disse kommandoer? Jeg er interesseret selv i et meget teknisk svar.
På den praktiske side er jeg interesseret i:
- Skal jeg fikle med hver applikationsindstilling for at bestemme, hvilken applikation der tager kommandoerne, eller er der en generel måde at bestemme dette på?
- Er der en måde at konfigurere dette, så applikationen, der er faktisk aktiv automatisk altid får prioritet? (som blev stillet delvist i et andet spørgsmål )
Hvordan adskiller dette spørgsmål sig fra lignende spørgsmål:
-
“Sådan indstilles” Afspil “-knappens adfærd på Bluetooth-fjernbetjening” – kun praktisk, forskelligt fokus, indtil videre har ingen svar, og Jeg er også interesseret i svar, der kræver rooting eller brugerdefineret firmware (især CyanogenMod).
-
Skift standardapplikation til håndtering headset-kontrol – et nøjagtigt problem, der blev løst, men ikke på en måde, der ville besvare mine spørgsmål, selvom det giver nogle tip til, hvordan ting fungerer.
-
Hvordan kan jeg få knappen på mine hovedtelefoner til at styre noget andet end aktiemusikafspilleren? – delvis lignende spørgsmål på den praktiske side, men ikke fokus på at forklare, hvordan det fungerer faktisk, og det eneste svar er fokuseret på den del, jeg ikke spørger om (at kun en app modtager kommandoerne).
-
hvorfor får alle lydapps bluetooth-knaphændelser på én gang – meget ens, men spørger om et specifikt problem (alle af medieafspillere, der får AVRCP-kommandoen)
Kommentarer
- Det lykkedes mig at finde nogle gode oplysninger relateret til dette fra en Android-udviklerblog – diskuterer den rigtige måde, at denne skal implementeres af applikationer i 2.2: ” Tillader applikationer at spille pæne (r) med hinanden: Håndtering af fjernbetjeningsknapper ”
- I 2016 er dette stadig et problem -. – At flytte fra iOS kan være den mest irriterende del af Android indtil videre for mig: /
- Relateret? android.stackexchange.com/q/218823/693
Svar
medieknaprouter , der allerede er nævnt i et af dine sammenkædede spørgsmål, forsøger at finde ud af hvilken app der i øjeblikket spiller musik og sender AVRCP-begivenhederne til den. Derudover viser den alle installerede apps, der erklærer for at lytte til AVRCP-begivenheder.
Hvad gør AVRCP kompliceret: Nogle apps som Sonys Music Unlimited synes ikke at erklære android.intent.action.MEDIA_BUTTON
i deres manifest. Af denne (eller måske en anden) grund kan de ikke styres via medier- knap-router. Jeg ved, at f.eks. Music Unlimited kan styres via AVRCP, da jeg læste den i en brugerkommentar, og jeg kunne også få den til at køre en gang men desværre er den ikke reproducerbar. Så i disse tilfælde ser det ud til at vi er nødt til at vent på en apps opdatering med en ren implementering af AVRCP-håndtering af hændelser.
I henhold til wiki til medieknaprouter “ “Medieknap Hensigtsbehandling håndteres gennem bestilte udsendelser, og hver app indstiller sin egen prioritet til modtagelse.” Så måske kunne det være muligt at skrive en app, der viser disse prioriteter og faktisk ville giver dig mulighed for at bestemme, hvilken applikation der starter. Jeg ved dog ikke noget om en sådan app.
Svar
De tilføjede endelig et afsnit for at besvare dette nøjagtige spørgsmål: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
Svar
Måske hjælper dette lidt:
Samsung S5 -> Bluetooth-modtager + In Ear-telefonstik
Jeg bruger Samsung S5, først med 7-digital app til at downloade og afspille musik. Så skiftede jeg og brugte Cloudplayer. Men hver gang mens Clouplayer spiller, og jeg trykker på pause / afspil-knappen på min Bluetooth-modtager, begynder min 7digital-app at afspille musik. Jeg kunne ikke ændre nogen indstilling for at ændre Bluetooth-afspilning / pause i retning af Cloudplayer. Derefter slettede jeg al min 7digital-downloadede musik og prøvede igen. Problem løst! Afspil / pause er på en eller anden måde knyttet til Cloudplayer nu.
Svar
Det er ikke et problem med din BT-enhed. Når det er parret med din telefon, afspiller Bluetooth-headset den aktive A2DP-stream, der er startet fra mobiltelefonen. Hvis det er en standard medieafspiller på din telefon, kan den reagere på alle AVRCP-kontrolkommandoer som afspilningspause, fw osv. Nu når du spiller noget på nettet eller en anden afspiller, der ikke implementerer alle sådanne kontroller over AVRCP, f.eks. BT Headset er det stadig en aktiv A2DP-strøm, der kommer. Det sender AVRCP-kontrolmeddelelser til din telefon. Det er nu din telefon, der i de fleste tilfælde formodes at dirigere disse kommandoer til den respektive app til den aktive A2DP-streamingkilde, eller i dit tilfælde videresender din telefon stadig AVRCP-kommandoer til standardmusikafspilleren.
Din bedst ville det være at prøve at konfigurere din mobil, forudsat at den kilde, du spiller, understøtter AVRCP-kontrol. Hvis det ikke gør det, kan du alligevel ikke gøre noget. Hvis det gør det, skal Mobile definitivt tillade, at disse AVRCP-kommandoer håndteres af din aktive A2DP-streamingkilde.
Svar
Denne app er “Media Button Router” https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr