Jak wymusić działanie funkcji wykrywania słów kluczowych „OK Google”, gdy ekran na dowolnym urządzeniu jest wyłączony [Root]

To jest poradnik, jak zmusić dowolne zrootowane urządzenie do włączenia wykrywania słów-kluczy OK Google, nawet jeśli jego sprzęt nie obsługuje tej funkcji!

Kiedy po raz pierwszy zaprezentowano Moto X (2013), jedną z najbardziej ekscytujących funkcji (oprócz Ambient Display) była możliwość budzenia się za pomocą poleceń głosowych.

Wprowadzona później w urządzeniach Google Nexus i obecnie dostępna w wielu flagowcach, funkcja rozpoznawania słów kluczowych to: całkiem niezła funkcja, gdy chcesz szybko wyszukać w Google bez konieczności grzebania w urządzeniu ręce. Może to być wyjątkowo przydatne, gdy zadokujesz telefon w samochodzie i chcesz rozpocząć nawigację do określonego celu. Zdecydowanie bezpieczniejsze jest uruchamianie nawigacji w Mapach Google za pomocą głosu niż jakakolwiek inna alternatywa.

Niestety, aby móc w każdej chwili wywołać polecenie „OK Google”, wymagany jest w urządzeniu specjalny układ rozpoznawania głosu o małej mocy. Chociaż ten sprzęt jest obecny w wielu urządzeniach, nie jest obecny w nich wszystkich. Nawet potężne, drogie flagowce jak Huawei Mate 9 nie oferują tej oferty. W przypadku urządzeń takich jak moje Google oferuje możliwość uruchamiania poleceń głosowych „OK Google”, gdy ekran jest włączony lub gdy urządzenie jest podłączone do ładowarki.

Kilka lat temu istniała aplikacja o nazwie Otwórz Mic+ dla Google Now który miał opcję włączenia usługi działającej w tle, aby przez cały czas nasłuchiwała poleceń głosowych. Niestety Google zażądał od programisty zaprzestania korzystania z usługi, a programista nie miał już czasu na wspieranie tej aplikacji, więc została ona odrzucona. Jedyną istniejącą opcją jest użycie Autogłos, popularna wtyczka Tasker, ale wymaga to wystarczającej wiedzy o Taskerze, aby skonfigurować profile tak, aby reagowały na określone polecenia.

Dla tych z Was, którzy wolą polegać na usłudze rozpoznawania głosu Google, znalazłem rozwiązanie tego problemu umożliwia wykrywanie słów kluczowych „OK Google” na dowolnym zrootowanym urządzeniu, nawet jeśli jego sprzęt go nie obsługuje. Tam są dwa zastrzeżenia na tę sztuczkę, którą szczegółowo omówimy poniżej.


Wykrywanie słów kluczowych „OK Google” na dowolnym urządzeniu

Pytanie, które sobie zadałem, zastanawiając się nad obejściem tego problemu, brzmiało:

Jak oszukać urządzenie, aby na moje polecenie włączyło usługę rozpoznawania słów kluczowych?

Ponieważ mój obecny telefon nie obsługuje natywnie wykrywania słów-kluczy, gdy ekran jest wyłączony, jedynymi warunkami, aby to zadziałało, jest włączenie ekranu mojego telefonu lub ładowanie. Naturalnie, ponieważ moim celem jest umożliwienie wykrywania słów kluczowych przez cały czas (nawet gdy ekran jest wyłączony), włączenie ekranu byłoby sprzeczne z tym celem. Konieczność pozostawienia urządzenia podłączonego do prądu również nie miałaby sensu, ale co, gdybym mogła sztuczka moje urządzenie spełnia którykolwiek z tych dwóch warunków?

Na szczęście przy odrobinie magii rootowania i sprytnym użyciu poleceń debugowania jest to bardzo możliwe! Używając polecenia powłoki debugowania przeznaczonego do celów testowych, jestem w stanie oszukać moje urządzenie, aby myślało, że się ładuje nawet jeśli jest odłączony od jakiegokolwiek źródła zasilania. Polecenie, które będziemy wykorzystywać do naszych celów, to dumpsys battery, o których parametrach można przeczytać w ten wpis na blogu Romana Mazura.

Uwaga: ta sztuczka jest całkowicie bezpieczny występować. Jak już wspomniano, to polecenie tylko OSZUSTWA Twoje urządzenie, myśląc, że się ładuje. W rzeczywistości NIE ładuje się, nawet jeśli aplikacje monitorujące baterię mówią inaczej (dzieje się tak, ponieważ aplikacje te będą otrzymywać nieprawidłowe informacje).

Na szczególną uwagę zasługuje dumpsys battery set polecenie, które akceptuje parametry określające, czy urządzenie jest aktualnie ładowane za pośrednictwem prądu przemiennego, USB lub ładowania bezprzewodowego. Na przykład, jeśli otworzymy powłokę root w systemie Android i wprowadzimy następujące polecenie, plik urządzenie będzie myślało, że jest ładowane za pomocą zasilacza sieciowego.

su
dumpsys battery set ac 1

Ustawiając to polecenie (lub polecenie ładowania USB/bezprzewodowego), będziesz teraz mógł to zrobić uruchamiaj polecenia OK Google, gdy ekran jest wyłączony. Dzieje się tak dlatego, że ogólnie rzecz biorąc, Twoje urządzenie „ładuje się” – spełniając wymagania aktywacji usługi Google do rozpoznawania słów kluczowych.

Ponieważ jest to polecenie przeznaczone do debugowania (przeznaczone głównie dla programistów w celu testowania funkcjonalności przy różnych stanach baterii), użycie go w ten sposób ma pewne wady. W szczególności dwie wady, którymi zajmiemy się dalej. Pierwszą wadę można łatwo obejść, ale nie można tego samego powiedzieć o drugiej.

Wada nr 1 – Wskaźnik zamarzniętej baterii

Po wprowadzeniu dowolnego polecenia „dumpsys Battery Set” usługa BatteryManager systemu Android to zrobi natychmiast przestań zbierać dalsze dane na temat stanu baterii. Oznacza to, że poziom naładowania baterii, temperatura, prąd, napięcie i stan baterii nie będą już raportowane przez system Android. Zamiast tego zostaną „zamrożone” w czasie w momencie wprowadzenia polecenia.

Jednak te dane są nadal zbierane przez system nawet jeśli jest dostępny w dowolnej aplikacji. Jeśli chcesz uzyskać aktualizację aktualnego poziomu naładowania baterii, będziesz musiał wykonać pewien trik. Na szczęście dane można dość łatwo pobrać. Jeśli masz Taskera lub inną aplikację do automatyzacji, wystarczy utworzyć powiadomienie, które po dotknięciu będzie aktualizowane bieżącym tekstem przechowywanym w /sys/class/power_supply/battery/capacity.

Na powyższym zrzucie ekranu mój wskaźnik baterii (widoczny, gdy opuszczam pasek stanu) utknął na poziomie 70%, ale jak widać na terminalu, mój rzeczywisty poziom baterii wynosi 69%. Regularne sprawdzanie tego pliku w celu wyświetlenia dokładnego poziomu naładowania baterii na pasku powiadomień byłoby łatwe, ale istnieje jeszcze łatwiejszy sposób obejścia tego problemu.

Radzenie sobie z tą szczególną wadą jest właściwie niesamowicie banalne. Jeśli się nad tym zastanowić, problem ten pojawia się tylko wtedy, gdy polecenie jest włączone i gdy ekran jest włączony. Rzecz w tym, że nie trzeba włączać tego polecenia, gdy ekran jest włączony, ponieważ domyślna funkcjonalność umożliwia dostęp do poleceń „OK Google”, gdy ekran jest włączony. Zatem wszystko, co musisz zrobić, to po prostu wyłącz to polecenie, gdy ekran jest włączony. Korzystanie z Taskera lub innej aplikacji do automatyzacji byłoby prawdopodobnie najprostszym sposobem. Po prostu uruchom to polecenie, aby wyłączyć tę sztuczkę:

dumpsys battery reset

Poniżej znajdziesz opis dwóch profili Taskera, które musisz skonfigurować, aby uruchomić to polecenie, gdy ekran jest wyłączony, ale wyłączyć je, gdy ekran jest włączony. Zasadniczo będziesz tworzyć dwa konteksty „Zdarzenia”, z których jeden to zdarzenie „Wyświetlanie wyłączone”, a drugi to zdarzenie „Wyświetlanie odblokowane”. Zadanie dla zdarzenia „Display Off” będzie zawierało jedną akcję: Kod -> Uruchom powłokę za pomocą polecenia dumpsys battery set ac 1. Zadanie dla zdarzenia „Wyświetl odblokowany” będzie również zawierać jedną akcję: Kod -> Uruchom powłokę za pomocą polecenia dumpsys battery reset. W ten sposób Tasker uruchomi polecenie, aby oszukać urządzenie, aby pomyślało, że ładuje się, gdy ekran jest wyłączony (profil: Enable Hotword Detection) i uruchom komendę wyłączającą tę sztuczkę przy odblokowanym telefonie (profil: Disable Hotword Detection).

[tabs][tab title ="Włącz wykrywanie słów-kluczy"]

Profile: Enable Hotword Detection (180)
Event: Display Off
Enter: Anon (182)
A1: Run Shell [ Command: dumpsys battery set ac 1Timeout (Seconds):0Use Root:OnStoreOutputIn: StoreErrorsIn: StoreResultIn: ]

[/tab][tab title ="Wyłącz wykrywanie słów-kluczy"]

Profile: Disable Hotword Detection (191)
Event: Display Unlocked
Enter: Anon (192)
A1: Run Shell [ Command: dumpsys battery resetTimeout (Seconds):0Use Root:OnStoreOutputIn: StoreErrorsIn: StoreResultIn: ]

[/patka]

[/karty]

Wada nr 2 – Zwiększone zużycie baterii

Istnieje dobry powód, dla którego wykrywanie słów-kluczy zawsze wymaga niestandardowego koprocesora, ponieważ w przeciwnym razie spowodowałoby to dodatkowe zużycie baterii przez procesor, który musiałby nie spać. Jeśli oszukasz urządzenie, myśląc, że się ładuje, oznacza to, że urządzenie podtrzymuje pracę procesora i działa częściej w tle usług, ponieważ zakłada się, że zwiększony pobór mocy nie będzie miał znaczenia, ponieważ urządzenie będzie miało dostęp do źródła zasilania.

Jednak w tym przypadku tak nie jest, więc włączenie tego polecenia spowoduje zwiększone zużycie baterii. Z mojego doświadczenia wynika, że ​​zostawiając urządzenie w tym stanie na noc, mój Mate 9 się rozładował 12% baterii w ciągu 8 godzin.

Moim zdaniem nie oznacza to zerwania umowy, ale może to zniechęcić niektórych z Was. Niestety, nie ma łatwego sposobu na poradzenie sobie z tą drugą wadą. Wyłączenie polecenia, gdy ekran jest włączony, zgodnie z ostatnim akapitem wspomnianym w powyższej sekcji, pomoże w pewnym stopniu złagodzić problem, ale to wszystko, co możesz zrobić.


Wniosek

Mam nadzieję, że ta sztuczka okaże się przydatna. Z pewnością nie jest to rozwiązanie dla każdego, ale jeśli kiedykolwiek chciałeś wymusić działanie funkcji wykrywania słów kluczowych Google, a Twoje urządzenie nie było wyposażone w wymagany sprzęt, to rozwiązanie jest dla Ciebie.

Opisałem dwie potencjalne wady tej sztuczki. Pierwszą z nich można rozwiązać, używając aplikacji do automatyzacji, która włączy/wyłączy polecenie, gdy ma to sens. Ta ostatnia wada wynika niestety z faktu, że Twój sprzęt nie jest przystosowany do pracy ciągłej wykrywanie słów-kluczy, ale jeśli używasz tego tylko wtedy, gdy naprawdę tego potrzebujesz, nie powinno to być zbyt duże wydanie.

Wypróbuj tę sztuczkę i daj nam znać w komentarzach poniżej, czy działa dla Ciebie!