Tło: mam zestaw słuchawkowy Bluetooth A2DP / AVRCP ( Nokia BH -505 ), z którego aktywnie korzystam 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 „poleceń” (AVRCP), związanych z dźwiękiem – w szczególności: „następny utwór”, „poprzedni utwór” i „odtwórz / wstrzymaj”
Obecnie za każdym razem, gdy naciskam dowolne z poleceń , jeden z zainstalowanych przeze mnie odtwarzaczy muzycznych ( Meridian ) zawsze otrzymuje polecenie – nawet jeśli nie jest aktywny. Kiedy więc kliknę „odtwórz / wstrzymaj” zamierzając wstrzymać podcast ( DoggCatcher ), zamiast tego Meridian jest aktywowany i rozpoczyna odtwarzanie muzyki wraz z podcastem.
Oba odtwarzacze są ustawione na używać zestawu słuchawkowego: DoggCatcher ma włączoną opcję „Powiąż z zestawem słuchawkowym”, a Meridian ma włączone „Przyciski zestawu słuchawkowego”. Obecnie używam nieukorzenionego systemu Android 2.2.1 na GT-S5570, ale mogę rootować i aktualizować do 2.3 CyanogenMod ( lub takie) w przyszłości.
Ignorując szczegóły, moje pytanie na ten temat jest bardziej ogólne:
- W jaki sposób Android określa, która aplikacja ma reagować na te polecenia? Interesuje mnie nawet bardzo techniczna odpowiedź.
Z praktycznego punktu widzenia interesuje mnie:
- Czy muszę majstrować przy ustawieniach każdej aplikacji, aby określić, która aplikacja przyjmuje polecenia, czy jest jakiś ogólny sposób określenia tego?
- Czy istnieje sposób konfiguracji tak, aby aplikacja, która jest faktycznie aktywna zawsze otrzymałaby priorytet? (jak zostało częściowo zadane w innym pytaniu )
Czym to pytanie różni się od podobnych pytań:
-
„Jak ustawić zachowanie przycisku„ Odtwarzaj ”na pilocie Bluetooth” – tylko praktyczny, inny cel, jak dotąd nie ma odpowiedzi i Interesują mnie również odpowiedzi, które wymagałyby rootowania lub niestandardowego oprogramowania sprzętowego (zwłaszcza CyanogenMod).
-
Zmień domyślną aplikację do obsługi sterowanie zestawem słuchawkowym – dokładny problem, który został naprawiony, ale nie w sposób, który dałby odpowiedź na moje pytania, chociaż daje pewne wskazówki, jak to działa.
-
Jak ustawić przycisk na słuchawkach do sterowania czymś innym niż odtwarzacz muzyki? – częściowo podobne pytanie z praktycznej strony, ale nie skupiam się na wyjaśnieniu, jak to faktycznie działa, a jedyna odpowiedź skupia się na części, o którą nie pytam (sprawianie, by tylko jedna aplikacja otrzymywała polecenia).
-
dlaczego wszystkie aplikacje dźwiękowe otrzymują zdarzenia przycisków bluetooth, wszystkie naraz – bardzo podobne, ale pytające o konkretny problem (wszystkie odtwarzaczy multimedialnych otrzymujących polecenie AVRCP)
Komentarze
- Udało mi się znaleźć dobre informacje związane z to z bloga dla programistów Androida – omawiam właściwy sposób, w jaki powinno zostać zaimplementowane przez aplikacje w wersji 2.2: ” Zezwalanie aplikacjom na zabawę (r) ze sobą: Obsługa przycisków pilota ”
- W 2016 roku nadal jest to problem -. – Przenosząc się z iOS, to może być jak dotąd najbardziej irytująca część Androida: /
- Powiązane? android.stackexchange.com/q/218823/693
Odpowiedź
router-przycisku-multimediów , wspomniany już w jednym z Twoich powiązanych pytań, próbuje dowiedzieć się jaka aplikacja obecnie odtwarza muzykę i przesyła do niej zdarzenia AVRCP. Ponadto zawiera listę wszystkich zainstalowanych aplikacji, które deklarują nasłuchiwanie zdarzeń AVRCP.
Co komplikuje AVRCP: niektóre aplikacje, takie jak Sony „Music Unlimited , wydaje się nie deklarować android.intent.action.MEDIA_BUTTON
w swoim manifeście. Z tego (a może innego) powodu nie można nimi sterować za pomocą mediów- przycisk routera. Wiem, że np. Music Unlimited można kontrolować za pomocą AVRCP, ponieważ przeczytałem go w komentarzu użytkownika, a także udało mi się uruchomić go raz , ale niestety nie można go odtworzyć. W takich przypadkach wydaje się, że musimy poczekaj na aktualizację aplikacji z czystą implementacją obsługi zdarzeń AVRCP.
Zgodnie z wiki media-button-router „Obsługa intencji przycisku multimediów odbywa się za pośrednictwem uporządkowanych transmisji, a każda aplikacja ustawia swój własny priorytet odbioru”. Może więc byłoby możliwe napisanie aplikacji, która wyświetla te priorytety i w efekcie pozwalają określić, która aplikacja zostanie uruchomiona. Jednak nie wiem o takiej aplikacji.
Odpowiedź
W końcu dodali sekcję, aby odpowiedzieć dokładnie na to pytanie: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
Odpowiedź
Może to trochę pomoże:
Samsung S5 -> Odbiornik Bluetooth + douszne wtyczki do telefonów
Używam Samsung 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łą moją pobraną muzykę z 7digital i spróbowałem ponownie. Problem rozwiązany! Odtwarzanie / pauza jest teraz w jakiś sposób połączone z Cloudplayer.
Odpowiedź
To nie jest problem z urządzeniem BT. Po sparowaniu z telefonem zestaw słuchawkowy Bluetooth odtwarza aktywny strumień A2DP zainicjowany z telefonu komórkowego. Jeśli jest to jakiś standardowy odtwarzacz multimedialny w Twoim telefonie, może reagować na wszystkie polecenia sterowania AVRCP, takie jak odtwarzanie, pauza, pomiń, przewijanie itp. Teraz, gdy odtwarzasz coś w Internecie lub innym odtwarzaczu, który nie obsługuje wszystkich takich kontroli nad AVRCP Zestaw słuchawkowy BT to wciąż nadchodzi aktywny strumień A2DP. Będzie wysyłać wiadomości kontrolne AVRCP na Twój telefon. To teraz Twój telefon powinien w większości przypadków kierować te polecenia do odpowiedniej aplikacji do aktywnego źródła strumieniowego A2DP lub w Twoim przypadku telefon nadal przekazuje polecenia AVRCP do domyślnego odtwarzacza muzyki.
Twój najlepiej byłoby spróbować skonfigurować telefon komórkowy, pod warunkiem, że źródło, z którego korzystasz, obsługuje kontrolę AVRCP. Jeśli tak się nie stanie, i tak nie możesz nic zrobić. Jeśli tak, to zdecydowanie telefon komórkowy powinien zezwalać na obsługę tych poleceń AVRCP przez Twoje aktywne źródło przesyłania strumieniowego A2DP.
Odpowiedź
Ta aplikacja to „Media Button Router” https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr