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ń:
„Jak ustawić zachowanie przycisku„ Play ”na pilocie Bluetooth” - tylko praktyczny, inny nacisk, jak dotąd nie ma odpowiedzi, a ja również jestem zainteresowany odpowiedziami, które wymagałyby rootowania lub niestandardowego oprogramowania układowego (szczególnie CyanogenMod).
Zmień domyślną aplikację do obsługi elementów sterujących zestawu słuchawkowego - dokładny problem, który został naprawiony, ale nie w sposób, który odpowiedziałby na moje pytania, chociaż daje pewne wskazówki, jak to działa.
Jak sprawić, by przycisk na moich słuchawkach sterował czymś innym niż zwykły odtwarzacz muzyki? - częściowo podobne pytanie z praktycznego punktu widzenia, ale nie skupiam się na wyjaśnieniu, jak to naprawdę działa, a jedyna odpowiedź dotyczy części, o którą nie pytam (zmuszanie tylko jednej aplikacji do odbierania poleceń).
dlaczego wszystkie aplikacje dźwiękowe otrzymują zdarzenia przycisków bluetooth naraz - bardzo podobne, ale pytające o konkretny problem (wszystkie odtwarzacze multimedialne otrzymują polecenie AVRCP)
źródło
Odpowiedzi:
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_BUTTON
w 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.
źródło
W końcu dodali sekcję, aby odpowiedzieć na to dokładne pytanie: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
źródło
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.
źródło
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.
źródło
Ta aplikacja to „Media Button Router” https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr
źródło