Logo pl.androidermagazine.com
Logo pl.androidermagazine.com

Powtórka: narastająca walka o sterowanie odtwarzaniem przez bluetooth

Anonim

To jest to, czego używam w pracy, w domu, w łóżku, pod prysznicem i wszędzie pomiędzy, aby zachować rozsądek i szczęście. Muzyka czyni mnie lepszym, a ponieważ muzyka jest tak dużą częścią mojego doświadczenia z Androidem, nastąpił powolny spadek, o którym boleśnie wiedziałem w ciągu ostatnich kilku lat, a zwłaszcza ostatnich kilku miesięcy.

Czasami włączam słuchawki Bluetooth, uruchamiam odtwarzanie i nic się nie dzieje. I nic się nie dzieje o wiele bardziej niż kiedyś.

We wczesnych latach Androida, z Soarinem w kieszeni (tak, nazwałem swojego Samsunga Captivate Glide) i pierwszą parą słuchawek Kinivo Bluetooth na szyi, nie musiałem mieć otwartej Muzyki Google Play, po prostu musiałem trafić grać na moich słuchawkach. W rzeczywistości wyjąłem Samsunga Galaxy SII z szuflady, uruchomiłem go po raz pierwszy od miesięcy, sparowałem z nim słuchawki Bluetooth i nacisnąłem przycisk odtwarzania. I grała muzyka.

Nie tyle na obecnych urządzeniach w mojej stajni.

HTC 10 po prostu czasami nie przestrzega sterowania Bluetooth, trwałego powiadamiania o aplikacji muzycznej, czy nie. Wolę grać w Moto 360 lub w sam telefon. HTC A9 jest równie wybredny. Nexus 5X czasami nie uruchamia tworzenia kopii zapasowej przy stałym powiadomieniu, ale czasami robi to bez niego. Samsung S6 edge będzie odtwarzany, ale czasami zamiast odtwarzać ostatnio aktywną aplikację muzyczną, domyślnie wraca do fabrycznie załadowanej aplikacji Muzyka.

Powtarzają się tutaj słowa: czasami. Dzieje się tak, ponieważ jest to problem, który ma wiele zmiennych: jakiego urządzenia z Androidem używasz, jakiego urządzenia Bluetooth używasz, jakiej wersji Androida i Bluetooth mają twoje urządzenia, jaką aplikację muzyczną próbujesz odtwarzać, w jakim środowisku jesteś itp. Wiele rzeczy przyczynia się do pozornie prostego problemu z przyciskami, które nie działają przy każdym naciśnięciu.

Co się tu właściwie dzieje? Odpowiedź staje się trochę - ok, dużo - techniczna.

Po naciśnięciu przycisku jest on interpretowany przez system Android i nadawany w systemie za pośrednictwem KeyEvent. Następny przycisk na zestawie słuchawkowym jest interpretowany i dostarczany jako KEYCODE_MEDIA_NEXT za pośrednictwem KeyEvent. Istnieje wiele różnych wartości, które można wyciągnąć dla różnych przycisków, a nawet dla tego samego przycisku. Przycisk odtwarzania w większości zestawów słuchawkowych jest również przyciskiem pauzy, więc klucz może zwrócić KEYCODE_MEDIA_PAUSE, KEYCODE_MEDIA_PLAY lub znacznie bardziej prawdopodobne KEYCODE_MEDIA_PLAY_PAUSE w zależności od urządzenia i jego bieżącego stanu. Nawiasem mówiąc, jeśli kiedykolwiek wcisnąłeś pauzę, a muzyka zaczęła się gdzieś indziej, podczas gdy to, co oglądałeś / słuchałeś, zostało zatrzymane, jest to wina KeyEvent, ponieważ została odebrana i uruchomiona przez dwie aplikacje.

Po zinterpretowaniu KeyEvent nadal musi być słyszany przez aplikację muzyczną, która nasłuchuje przycisków multimediów za pośrednictwem zamiaru BroadcastReceiver. W końcu aplikacja nie może działać na KeyEvent, jeśli go nie widzi. Jeśli coś uniemożliwia odbiornikowi naciśnięcie przycisku w aplikacji, może zepsuć sterowanie odtwarzaniem na kilka sposobów, w tym sporadyczny problem, który opisałem powyżej. Jeśli aplikacja zbyt szybko wyrejestrowuje odbiornik BroadcastReceiver, gdy utraci fokus audio (metoda, dzięki której Android określa, które aplikacje mogą odtwarzać dźwięk w danym momencie), to po wstrzymaniu muzyki może przestać słuchać i nie słyszeć naciskania przycisku aby ponownie zacząć grać. Dlatego ważne jest, aby aplikacje multimedialne poprawnie obsługiwały zarówno Audio Focus, jak i ich BroadcastReceiver, aby nawet gdy urządzenie straciło to pierwsze, nie traci drugiego.

Wiele z tego sprowadza się do tego, jak dobrze jest zaprogramowana Twoja aplikacja muzyczna i które przyciski multimedialne są nadawane przez twoje urządzenie po naciśnięciu przycisku na zestawie słuchawkowym. Oznacza to również, że nawet jeśli elementy sterujące odtwarzaniem są spójne przy zakupie urządzenia, mogą zostać uszkodzone przez aktualizacje aplikacji lub aktualizacje systemu, które zmieniają, jak szybko przestaje słuchać.

W przypadku aplikacji takich jak Muzyka Google Play wydaje się, że aktualizacje powodujące zepsucie stają się coraz częstsze. Podczas gdy większość przerw jest naprawiana szybko, inne mogą zająć miesiące. Przejściowe problemy, takie jak nieprawidłowe uruchamianie muzyki przez Bluetooth, mogą być trudne do zarejestrowania i prawidłowej identyfikacji, co dodatkowo spowalnia ewentualną naprawę.

Jeśli aplikacje muzyczne nie mają fokusu audio i nie działają jako usługi pierwszego planu (jeśli nie ma tam stałego powiadomienia dla odtwarzacza multimedialnego), istnieje szansa, że ​​system Android (a dokładniej Doze) lub tak zwany „zasób” -saving ”aplikacje mogą zabić aplikację, aby zwolnić pamięć na inne działania. Gdy tak się dzieje, naciśnięcie przycisku odtwarzania może nic nie zrobić, ponieważ nie ma otwartych odbiorników i nie oczekuje poleceń.

Teraz, ponieważ istnieje kilka rzeczy, które mogą zepsuć twoje sterowanie odtwarzaniem, istnieją również opcje, aby spróbować to naprawić.

Pierwsze rozwiązanie jest nieco ekstremalne, ale jedno z niewielu, które użytkownicy mogliby dziś wdrożyć na swoich obecnych telefonach bez żadnych modyfikacji oprogramowania. Korzystając z aplikacji takich jak Tasker i AutoInput, możemy wykryć naciśnięcie przycisku, wyłączyć oryginalną akcję KeyEvent, a następnie wykonać bardziej wyspecjalizowane (i bardziej spójne) polecenie skierowane bezpośrednio na jedną aplikację. Na przykład zamiast przycisku odtwarzania będącego ogólnym poleceniem odtwarzania multimediów, które może być wychwycone lub zignorowane przez dziesiątki serwisów multimedialnych, możemy zmienić jego mapę jako polecenie przełączania odtwarzania / pauzy specyficzne dla Muzyki Google Play, aby inne aplikacje nie zamiast tego uruchom.

To może być żmudne do zaprogramowania, a tłumiąc pierwotną akcję i zastępując ją, łamiemy natywny przycisk pauzy, którego możemy chcieć używać w innych aplikacjach, takich jak YouTube lub Netflix. Krótko mówiąc, nie jest to zbyt duże rozwiązanie dla użytkowników nietechnicznych lub użytkowników korzystających z różnych aplikacji multimedialnych.

Wiele telefonów zawiera wiele gestów i działań przycisków, które można włączać i wyłączać w Ustawieniach, takich jak dwukrotne stuknięcie w celu wybudzenia lub dwukrotne naciśnięcie przycisku Home / power dla kamery. Dodanie elementów sterujących Bluetooth do tej listy może wydłużyć i skomplikować ją, ale jeśli system Android miałby potwierdzić i skierować KeyEvent do konkretnej aplikacji, zamiast emitować ogólny sygnał do dowolnego odbiornika, który nasłuchuje lub nie, możemy zapewnić spójność. Widzieliśmy to już wcześniej na urządzeniach, na przykład otwierając Moto Assist, uruchamiając wyznaczoną aplikację muzyczną, gdy jest ona podłączona do Bluetooth samochodu.

Zmiana sposobu, w jaki Android obsługuje przyciski multimedialne - i ogólnie zajmuje się wprowadzaniem przycisków, ponieważ kontrolery i klawiatury Bluetooth mają własne problemy - może stworzyć tyle nowych problemów, ile rozwiązuje, ale biorąc pod uwagę liczbę miejsc, w których rzeczy mogą - i robią - iść źle w obecnym systemie, warto rozbić jajka, aby zrobić nowy omlet.

Ostatecznie codzienni użytkownicy nie chcą zagłębiać się w klawisze poleceń, odbiorniki i to, która aplikacja ma teraz fokus audio. Chcemy, abyśmy koncentrowali się na samej muzyce i tam, gdzie nas to zaprowadzi. A jeśli nie uda mi się włączyć muzyki, która przy pierwszej próbie utrzymuje mnie przy zdrowych zmysłach w zatłoczonych miejscach, nie jestem szczęśliwą dziewczyną. I założę się, że nie jestem jedyny.

Możemy otrzymać prowizję za zakupy za pomocą naszych linków. Ucz się więcej.