Az „OK Google” hotword-észlelés működésre kényszerítése, ha a képernyő ki van kapcsolva bármely eszközön [Root]

click fraud protection

Ez egy oktatóanyag arról, hogyan kényszeríthet minden rootolt eszközt az OK Google hotword-észlelés engedélyezésére, még akkor is, ha a hardvere nem támogatja a funkciót!

A Moto X (2013) első bejelentésekor az egyik legizgalmasabb funkció (az Ambient Display mellett) az volt, hogy hangutasításokra ébred.

A később a Google Nexus eszközökön bevezetett, és mára számos zászlóshajóban elérhető hotword-felismerő képesség a elég fantasztikus funkció, ha gyors keresést kell végeznie a Google-on anélkül, hogy a benne lévő eszközzel bajlódna kezek. Ez különösen akkor lehet hasznos, ha telefonját az autóban dokkolta, és el kell indítania a navigációt egy bizonyos cél felé. Sokkal biztonságosabb, ha hangjával indítja el a Google Térkép navigációját, mint bármely más alternatíva.

Sajnos ahhoz, hogy az „OK Google” parancsokat mindig ki tudja váltani, speciális, alacsony fogyasztású hangfelismerő chipre van szükség az eszközben. Bár ez a hardver sok eszközben megtalálható, nem mindegyikben. Még az olyan erős, drága zászlóshajók sem kínálják ezt az ajánlatot, mint a Huawei Mate 9. Az olyan eszközök esetében, mint az enyém, a Google lehetőséget kínál az „OK Google” hangparancsok indítására, miközben a képernyő be van kapcsolva, vagy amikor az eszköz töltőre van csatlakoztatva.

Néhány évvel ezelőtt volt egy alkalmazás a néven Nyissa meg a Mic+-t a Google Asszisztenshez amely lehetővé tette egy háttérszolgáltatás számára, hogy folyamatosan figyelje a hangutasításokat. Sajnos a Google azt kérte a fejlesztőtől, hogy hagyja abba a szolgáltatás használatát, és a fejlesztőnek már nem volt ideje támogatni az alkalmazást, így az út mellőzésére került. Az egyetlen létező lehetőség a használat AutoVoice, egy népszerű Tasker beépülő modul, de ehhez elegendő Tasker-ismerettel kell rendelkeznie ahhoz, hogy profilokat állítson be az adott parancsokra való reagáláshoz.

Azok számára, akik szívesebben támaszkodnának a Google hangfelismerő szolgáltatására, találtam egy megoldást erre lehetővé teszi az "OK Google" hotword-észlelést bármely rootolt eszközön, még akkor is, ha a hardver nem támogatja azt. Vannak két figyelmeztetés ehhez a trükkhöz, amelyet az alábbiakban részletesen tárgyalunk.


"OK Google" Hotword Detection bármely eszközön

A kérdés, amit feltettem magamnak, amikor a probléma megoldásán gondolkodtam:

Hogyan csalhatom meg a készülékemet, hogy a parancsomra engedélyezze a hotword-felismerő szolgáltatást?

Mivel a jelenlegi telefonom natívan nem támogatja a hotword-észlelést, amikor a képernyő ki van kapcsolva, ennek működéséhez csak az lenne a feltétel, hogy a telefonom képernyője be legyen kapcsolva, vagy amikor töltődik. Természetesen, mivel az a célom, hogy mindig engedélyezzem a hotword-felismerést (akkor is, ha a képernyő ki van kapcsolva), a képernyő bekapcsolása meghiúsítaná ezt a célt. Az is értelmetlen lenne a próbálkozásomban, ha a készülékemet csatlakoztatva kellene hagynom, de mi van, ha megtehetném trükk hogy a készülék megfeleljen e két feltétel valamelyikének?

Szerencsére egy kis root varázslattal és a debug parancsok okos használatával ez nagyon is lehetséges! Egy tesztelési célú debug shell parancsot használva képes vagyok rá ráveszem a készülékemet, hogy azt higgye, hogy tölt még akkor is, ha minden áramforrásról le van húzva. A parancs, amelyet céljaink érdekében ki fogunk használni dumpsys battery, melynek paramétereiről olvashatsz a ezt a blogbejegyzést írta Roman Mazur.

Megjegyzés: ez a trükk teljesen biztonságos előadni. Amint már említettük, ez a parancs csak arra trükközi a készüléket, hogy azt gondolja, hogy tölt. Valójában NEM töltődik, még akkor sem, ha az akkumulátorfigyelő alkalmazások mást mondanak (ez azért van, mert ezek az alkalmazások helytelen információkat kapnak.)

Külön kiemelendő a dumpsys battery set parancs, amely paramétereket fogad el annak beállításához, hogy az eszköz jelenleg AC, USB vagy vezeték nélküli töltésen keresztül töltődik-e vagy sem. Például, ha megnyitunk egy gyökérhéjat az Androidban, és beírjuk a következő parancsot, a a készülék azt hiszi, hogy váltóáramról tölti.

su
dumpsys battery set ac 1

Ha beállítja ezt a parancsot (vagy az USB/vezeték nélküli töltés parancsát), most már képes lesz rá indítsa el az OK Google parancsokat, amikor a képernyő ki van kapcsolva. Ennek az az oka, hogy eszköze minden célból „töltődik” – megfelel a Google hotword-felismerő szolgáltatásának aktiválásához szükséges követelményeknek.

Mivel ez egy hibakeresésre szánt parancs (főleg a fejlesztők számára, hogy teszteljék a funkcionalitást különböző akkumulátor-körülmények között), van néhány hátránya, ha ilyen módon használják. Különösen két hátránya van, amelyekkel a továbbiakban foglalkozunk. Az első hátrányt meglehetősen triviális megkerülni, de ugyanez nem mondható el a második hátrányról.

Hátrány #1 - Lefagyott akkumulátor jelző

A „dumpsys akkumulátorkészlet” parancs beírása után az Android BatteryManager szolgáltatása ezt megteszi azonnal hagyja abba a gyűjtést bármilyen további adatot az akkumulátor állapotáról. Ez azt jelenti, hogy az akkumulátor töltöttségi szintjét, hőmérsékletét, áramerősségét, feszültségét és állapotát többé nem fogja jelenteni az Android rendszer. Ehelyett a parancs beírásának pillanatában "lefagynak" az időben.

Ez az adat azonban még mindig gyűjti a rendszer még akkor is, ha bármely alkalmazás elérhető. Ha frissítést szeretne kapni az akkumulátor jelenlegi töltöttségi szintjéről, trükköznie kell. Szerencsére az adatok könnyen lekérhetők. Ha rendelkezik Taskerrel vagy más automatizálási alkalmazással, mindössze annyit kell tennie, hogy létrehoz egy értesítést, amely egy érintéssel frissül a /sys/class/power_supply/battery/capacity mappában tárolt aktuális szöveggel.

A fenti képernyőképen az akkumulátorjelzőm (ami akkor látható, amikor lehúzom az állapotsort) 70%-on ragadt, de ahogy a terminálon is látható, a tényleges akkumulátor töltöttségi szint 69%. Könnyű lenne rendszeresen lekérdezni ezt a fájlt, hogy az értesítési sávon pontos akkumulátor töltöttségi szintet jelenítsen meg, de van egy még egyszerűbb módja ennek a kudarcnak a megkerülésére.

Ennek a sajátos hátránynak a kezelése az valójában hihetetlenül triviális. Ha belegondol, ez a probléma csak akkor jelentkezik, ha a parancs engedélyezve van és a képernyő be van kapcsolva. De a helyzet az, hogy nem szükséges engedélyezni ezt a parancsot, amikor a képernyő be van kapcsolva, mert az alapértelmezett funkció lehetővé teszi az „OK Google” parancsok elérését, amikor a képernyő be van kapcsolva. Így mindössze annyit kell tennie, hogy egyszerűen tiltsa le ezt a parancsot, ha a képernyő be van kapcsolva. A Tasker vagy más automatizálási alkalmazás használata valószínűleg a legegyszerűbb módja. Egyszerűen futtassa ezt a parancsot a trükk letiltásához:

dumpsys battery reset

Az alábbiakban megtalálja annak a két Tasker-profilnak a leírását, amelyet be kell állítania ahhoz, hogy ezt a parancsot lefuttassa, amikor a képernyő ki van kapcsolva, de letilthatja, ha a képernyő be van kapcsolva. Lényegében két „Esemény” kontextust fog létrehozni, amelyek közül az egyik a „Kijelző megjelenítése” esemény, míg a másik a „Megjelenítés feloldva” esemény. A "Display Off" esemény feladatának egyetlen művelete lesz, Code--> Run Shell a paranccsal dumpsys battery set ac 1. A „Megjelenítés feloldva” eseményhez tartozó feladatnak is egyetlen művelete lesz: Code--> Run Shell a paranccsal dumpsys battery reset. Így a Tasker lefuttatja a parancsot, hogy elhitesse az eszközzel, hogy tölt, miközben a képernyő ki van kapcsolva (profil: Engedélyezés Hotword Detection), és futtassa a parancsot a trükk letiltásához, amikor a telefon fel van oldva (profil: Hotword Detection letiltása).

[tabs][tab title ="Hotword Detection engedélyezése"]

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 ="Hotword Detection letiltása"]

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

[/tab]

[/tabs]

2. hátrány - Megnövekedett akkumulátorlemerülés

Jó oka van annak, hogy a hotword-felismeréshez mindenkor egyéni társprocesszorra van szükség, mert különben további akkumulátorlemerülést okozna a CPU-nak, amelynek ébren kell maradnia. Ha becsapja a készüléket, és azt hiszi, hogy tölt, ez azt jelenti, hogy az eszköz folyamatosan fut a processzoron, és több háttérben fut. szolgáltatásokat, mert feltételezzük, hogy a megnövekedett fogyasztás nem számít, mivel az eszköz hozzáfér az áramforráshoz.

De itt nem ez a helyzet, ezért a parancs engedélyezése az akkumulátor fokozott lemerülését eredményezi. Tapasztalataim szerint egyik napról a másikra ebben az állapotban hagytam a készülékemet, és a Mate 9 lemerült 12% akkumulátor 8 óra alatt.

Véleményem szerint aligha bontja meg az alkut, de ez néhányat elriaszthat. Sajnos nincs egyszerű megoldás a második hátrány kezelésére. A parancs letiltása, miközben a képernyő be van kapcsolva, a fenti szakaszban említett utolsó bekezdés szerint, némileg enyhíti a problémát, de nagyjából ennyit tehet.


Következtetés

Remélem hasznosnak találod ezt a trükköt. Természetesen nem mindenkinek, de ha valaha is rá akarta kényszeríteni az OK Google hotword-észlelést, és az eszköze nem rendelkezik a szükséges hardverrel, akkor ez a megoldás az Ön számára készült.

Felvázoltam ennek a trükknek a két lehetséges hátrányát, amelyek közül az első megoldható úgy, hogy egy automatizálási alkalmazás segítségével engedélyezzük/letiltjuk a parancsot, amikor ésszerű megtenni. Ez utóbbi hátrány sajnos abból adódik, hogy a hardver nem mindig bekapcsolt állapotra készült hotword észlelés, de ha ezt csak akkor használja, ha valóban szüksége van rá, akkor nem lehet túl sok probléma.

Próbálja ki ezt a trükköt, és tudassa velünk az alábbi megjegyzésekben, hogy működik-e az Ön számára!