Co decyduje o tym, która aplikacja działa na polecenie AVRCP Bluetooth?

18

Tło: Mam zestaw słuchawkowy Bluetooth A2DP / AVRCP ( Nokia BH-505 ), którego aktywnie używam do słuchania zarówno podcastów, jak i muzyki. Oczywiście słucham ich w różnych aplikacjach. Zestaw słuchawkowy bluetooth ma kilka przycisków „polecenia” (AVRCP), odnoszących się do dźwięku - w szczególności: „następny utwór”, „poprzedni utwór” i „odtwarzanie / pauza”

Obecnie za każdym razem, gdy naciskam jedno z poleceń, jeden z zainstalowanych przeze mnie odtwarzaczy muzycznych ( Meridian ) zawsze otrzymuje polecenie - nawet gdy nie jest aktywne. Więc kiedy kliknę „odtwarzaj / pauza” z zamiarem wstrzymania podcastu ( DoggCatcher ), zamiast tego Meridian jest aktywowany i zaczyna odtwarzać muzykę wraz z podcastem.

Obaj gracze są skonfigurowani do używania zestawu słuchawkowego: DoggCatcher ma włączoną funkcję „Powiąż z zestawem słuchawkowym”, a Meridian ma włączoną opcję „Przyciski zestawu słuchawkowego”. Obecnie używam nieukończonego Androida 2.2.1 na GT-S5570, ale w przyszłości mogę rootować i aktualizować do wersji 2.3 CyanogenMod (lub takiej).

Ignorując szczegóły, moje pytanie na ten temat jest bardziej ogólne:

  • W jaki sposób system Android określa, która aplikacja reaguje na te polecenia? Interesuje mnie nawet bardzo techniczna odpowiedź.

Z praktycznego punktu widzenia interesuję się:

  • Czy muszę majstrować przy ustawieniach każdej aplikacji, aby określić, która aplikacja przyjmuje polecenia, czy jest jakiś ogólny sposób na określenie tego?
  • Czy istnieje sposób, aby to skonfigurować, tak aby aplikacja, która jest rzeczywiście aktywna , zawsze automatycznie otrzymywała priorytet? (jak zostało zadane częściowo w innym pytaniu )

Czym różni się to pytanie od podobnych pytań:

Ilari Kajaste
źródło
1
Udało mi się znaleźć kilka dobrych informacji na ten temat z blogu programistów Androida - omawiając właściwy sposób, w jaki powinny to zaimplementować aplikacje w 2.2: „Zezwalanie aplikacjom na miłe granie ze sobą: Obsługa przycisków pilota”
Ilari Kajaste
W 2016 r. Wciąż jest to problem. - Przeniesienie z iOS może być dla mnie najbardziej irytującą częścią Androida: /
Squazz

Odpowiedzi:

11

Media-Button-Router , wspomniany już w jednym z twoich powiązanych pytań, próbuje dowiedzieć się, która aplikacja obecnie odtwarza muzykę i wywołać w nim zdarzenia AVRCP. Ponadto zawiera listę wszystkich zainstalowanych aplikacji, które deklarują nasłuchiwanie zdarzeń AVRCP.

Co komplikuje AVRCP: niektóre aplikacje, takie jak Music Unlimited firmy Sony , wydają się nie deklarować android.intent.action.MEDIA_BUTTONw swoim manifeście. Z tego (lub może innego) powodu nie można nimi sterować za pomocą routera z przyciskiem mediów. Wiem, że np. Music Unlimited może być kontrolowany przez AVRCP, ponieważ przeczytałem go w komentarzu użytkownika, a także mogłem go uruchomić raz, ale niestety nie można go odtworzyć. W takich przypadkach wydaje się, że musimy poczekać na aktualizację aplikacji z czystą implementacją obsługi zdarzeń AVRCP.

Według wiki media-button-routera „Obsługa przycisku Media Button Intent odbywa się poprzez uporządkowane transmisje, a każda aplikacja ma swój własny priorytet odbioru”. Być może więc byłoby możliwe napisanie aplikacji wyświetlającej te priorytety, która w efekcie pozwoliłaby określić, która aplikacja zostanie uruchomiona. Nie wiem jednak o takiej aplikacji.

Silas
źródło
0

Być może to trochę pomoże:

Samsung S5 -> odbiornik Bluetooth + wtyczki douszne do telefonu

Korzystam z Samsunga S5, najpierw z aplikacją 7digital, do pobierania i odtwarzania muzyki. Potem zmieniłem i użyłem Cloudplayera. Ale za każdym razem, gdy gra Clouplayer i naciskam przycisk pauzy / odtwarzania na odbiorniku Bluetooth, moja aplikacja 7digital zacznie odtwarzać muzykę. Nie mogłem zmienić żadnego ustawienia, aby zmienić odtwarzanie / pauzę Bluetooth w kierunku Cloudplayer. Następnie usunąłem całą pobraną muzykę z 7 cyfr i spróbowałem ponownie. Problem rozwiązany! Odtwarzanie / pauza jest teraz w jakiś sposób powiązane z Cloudplayer.

Chihwah Li
źródło
0

To nie jest problem z urządzeniem BT. Po sparowaniu z telefonem zestaw słuchawkowy Bluetooth odtwarza aktywny strumień A2DP inicjowany z telefonu komórkowego. Jeśli jest to jakiś standardowy odtwarzacz multimedialny w telefonie, może reagować na wszystkie polecenia sterujące AVRCP, takie jak pomijanie pauzy w odtwarzaniu, fw itp. Teraz, gdy grasz w Internecie lub w innym odtwarzaczu, który nie implementuje wszystkich takich kontroli nad AVRCP, dla Zestaw słuchawkowy BT to wciąż nadchodzący aktywny strumień A2DP. Wyśle wiadomości kontrolne AVRCP na twój telefon. Teraz to Twój telefon powinien kierować te polecenia do odpowiedniej aplikacji w większości przypadków do aktywnego źródła strumieniowego A2DP lub w twoim przypadku Twój telefon nadal przekazuje polecenia AVRCP do domyślnego odtwarzacza muzyki.

Najlepszym rozwiązaniem byłoby skonfigurowanie telefonu komórkowego, pod warunkiem, że odtwarzane źródło obsługuje kontrolę AVRCP. Jeśli tak się nie stanie, to i tak nie możesz nic zrobić. Jeśli tak, to zdecydowanie Mobile powinien pozwolić na obsługę tych poleceń AVRCP przez aktywne źródło przesyłania strumieniowego A2DP.

Rizwan Ul Haq
źródło