Ako vynútiť fungovanie detekcie kľúčových slov „OK Google“, keď je obrazovka vypnutá na akomkoľvek zariadení [Root]

click fraud protection

Toto je návod, ako prinútiť akékoľvek zakorenené zariadenie, aby povolilo rozpoznávanie kľúčových slov Google, aj keď jeho hardvér túto funkciu nepodporuje!

Keď bol Moto X (2013) prvýkrát predstavený, jednou z najzaujímavejších funkcií (okrem Ambient Display) bola jeho schopnosť prebudiť sa na hlasové príkazy.

Schopnosť rozpoznávania kľúčových slov, ktorá bola neskôr predstavená v zariadeniach Google Nexus a teraz je dostupná v mnohých vlajkových lodiach, je a celkom úžasná funkcia, keď potrebujete rýchlo vyhľadať Google bez toho, aby ste sa museli trápiť so zariadením vo svojom zariadení ruky. To môže byť mimoriadne užitočné, keď vložíte telefón do auta a potrebujete spustiť navigáciu do určitého cieľa. Na spustenie navigácie v Mapách Google je oveľa bezpečnejšie použiť svoj hlas ako akúkoľvek inú alternatívu.

Nanešťastie, schopnosť kedykoľvek spustiť príkazy „OK Google“ vyžaduje špeciálny čip na rozpoznávanie hlasu s nízkou spotrebou vo vašom zariadení. Aj keď je tento hardvér prítomný v mnohých zariadeniach, nie je prítomný vo všetkých. Túto ponuku neponúkajú ani výkonné, drahé vlajkové lode ako Huawei Mate 9. Pre zariadenia, ako je to moje, Google ponúka možnosť spúšťať hlasové príkazy „OK Google“, keď je obrazovka zapnutá alebo keď je zariadenie pripojené k nabíjačke.

Pred niekoľkými rokmi existovala aplikácia s názvom Otvorte Mic+ pre Asistenta Google ktorý mal možnosť povoliť službe na pozadí neustále počúvať hlasové príkazy. Nanešťastie spoločnosť Google požiadala vývojára, aby prestal používať službu a vývojár už nemal čas na podporu tejto aplikácie, takže sa dostala na vedľajšiu koľaj. Jedinou existujúcou možnosťou je použiť AutoVoice, populárny doplnok Tasker, ale to si vyžaduje, aby ste mali dostatočné znalosti Tasker na nastavenie profilov, ktoré budú reagovať na konkrétne príkazy.

Pre tých z vás, ktorí by sa radšej spoliehali na službu rozpoznávania hlasu Google, som našiel riešenie umožňuje detekciu kľúčového slova „OK Google“ na akomkoľvek zakorenenom zariadení, aj keď to jeho hardvér nepodporuje. Existujú dve upozornenia na tento trik, ktorý si podrobne rozoberieme nižšie.


Detekcia kľúčových slov „OK Google“ na akomkoľvek zariadení

Otázka, ktorú som si položil, keď som premýšľal o riešení tohto problému, bola:

Ako môžem oklamať svoje zariadenie, aby na môj príkaz povolilo službu rozpoznávania kľúčových slov?

Keďže môj súčasný telefón natívne nepodporuje detekciu kľúčových slov, keď je obrazovka vypnutá, jedinou podmienkou, aby to fungovalo, by bolo, keď je obrazovka môjho telefónu zapnutá alebo keď sa nabíja. Prirodzene, keďže mojím cieľom je vždy umožniť detekciu kľúčových slov (aj keď je obrazovka vypnutá), zapnutá obrazovka by tento účel zmarila. To, že by som musel nechať svoje zariadenie pripojené, by bolo v mojom úsilí tiež zbytočné, ale čo keby som mohol trik aby moje zariadenie splnilo niektorú z týchto dvoch podmienok?

Našťastie, s trochou koreňovej mágie a šikovným používaním príkazov na ladenie je to veľmi možné! Pomocou príkazu ladiaceho prostredia určeného na testovacie účely som to schopný oklamať moje zariadenie, aby si myslelo, že sa nabíja aj keď je odpojený od akéhokoľvek zdroja napájania. Príkaz, ktorý budeme využívať na naše účely, je dumpsys battery, o ktorých parametroch si môžete prečítať v tento blogový príspevok od Romana Mazura.

Poznámka: Tento trik je úplne bezpečné vystupovať. Ako je uvedené, tento príkaz iba NAKLÁMA vaše zariadenie, aby si myslelo, že sa nabíja. V skutočnosti sa NENAbíja, aj keď aplikácie na monitorovanie batérie hovoria inak (je to preto, že tieto aplikácie budú dostávať nesprávne informácie.)

Za osobitnú zmienku stojí dumpsys battery set príkaz, ktorý akceptuje parametre na nastavenie, či sa zariadenie práve nabíja cez AC, USB alebo bezdrôtové nabíjanie. Ak napríklad otvoríme koreňový shell v systéme Android a zadáme nasledujúci príkaz, zariadenie si bude myslieť, že sa nabíja striedavým prúdom.

su
dumpsys battery set ac 1

Nastavením tohto príkazu (alebo príkazu pre USB/bezdrôtové nabíjanie) teraz budete môcť spustiť OK príkazy Google, keď je obrazovka vypnutá. Je to preto, že zo všetkých dôvodov sa vaše zariadenie „nabíja“ – spĺňa požiadavky na aktiváciu služby rozpoznávania kľúčových slov Google.

Keďže ide o príkaz určený na ladenie (určený hlavne pre vývojárov na testovanie funkčnosti pri rôznych podmienkach batérie), má pri tomto spôsobe určité nevýhody. Najmä dve nevýhody, ktorým sa budeme venovať ďalej. Prvá nevýhoda je dosť triviálna na obídenie, ale to isté sa nedá povedať o druhej nevýhode.

Nevýhoda č. 1 - Indikátor zamrznutej batérie

Po zadaní akéhokoľvek príkazu „dumpsys battery set“ služba BatteryManager pre Android okamžite prestaňte zbierať akékoľvek ďalšie údaje o stave batérie. To znamená, že systém Android už nebude hlásiť vašu úroveň batérie, teplotu, prúd, napätie a zdravie. Namiesto toho budú "zmrazené" v čase v okamihu, keď ste zadali príkaz.

Tento údaj však áno systém stále zbiera aj keď je prístupný z akejkoľvek aplikácie. Ak chcete získať aktuálne informácie o aktuálnej úrovni batérie, budete musieť urobiť nejaký trik. Dáta sa našťastie ťahajú celkom jednoducho. Ak máte Tasker alebo inú automatizačnú aplikáciu, všetko, čo musíte urobiť, je vytvoriť upozornenie, ktoré sa aktualizuje po klepnutí s aktuálnym textom uloženým v /sys/class/power_supply/battery/capacity.

Na obrázku vyššie je môj indikátor batérie (ktorý je viditeľný, keď stiahnem stavový riadok) zaseknutý na 70 %, ale ako môžete vidieť na termináli, moja skutočná úroveň batérie je 69 %. Bolo by ľahké pravidelne anketovať tento súbor, aby som zverejnil presnú úroveň nabitia batérie v mojom oznamovacom paneli, ale existuje ešte jednoduchší spôsob, ako tento neúspech obísť.

Riešenie tejto konkrétnej nevýhody je vlastne neuveriteľne triviálne. Ak o tom premýšľate, tento problém sa vyskytuje iba vtedy, keď je príkaz povolený a keď je obrazovka zapnutá. Ide však o to, že tento príkaz nemusíte mať povolený, keď je obrazovka zapnutá, pretože predvolená funkcia vám umožňuje prístup k príkazom „OK Google“, keď je obrazovka zapnutá. Takže všetko, čo musíte urobiť, je jednoducho deaktivujte tento príkaz, keď je obrazovka zapnutá. Použitie Taskeru alebo inej automatizačnej aplikácie by bolo pravdepodobne najjednoduchším spôsobom. Ak chcete trik vypnúť, jednoducho spustite tento príkaz:

dumpsys battery reset

A nižšie nájdete popis dvoch profilov Tasker, ktoré by ste museli nastaviť, aby ste spustili tento príkaz, keď je obrazovka vypnutá, ale deaktivovali ho, keď je obrazovka zapnutá. V podstate vytvoríte dva kontexty „Udalosti“, z ktorých jeden je Udalosť „Vypnuté zobrazenie“, zatiaľ čo druhý je Udalosť „Odomknutý displej“. Úloha pre udalosť „Vypnúť zobrazenie“ bude mať v sebe jedinú akciu, Kód --> Spustiť shell príkazom dumpsys battery set ac 1. Úloha pre udalosť „Display Unlocked“ bude mať tiež jedinú akciu, Code-->Run Shell s príkazom dumpsys battery reset. Tasker teda spustí príkaz, aby oklamal vaše zariadenie, aby si myslelo, že sa nabíja, keď je obrazovka vypnutá (profil: Povoliť Detekcia kľúčových slov) a spustite príkaz na deaktiváciu tohto triku, keď je telefón odomknutý (profil: Zakázať detekciu kľúčových slov).

[tabs][tab title ="Povoliť zisťovanie kľúčových slov"]

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 ="Zakázať zisťovanie kľúčových slov"]

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]

Nevýhoda č. 2 - zvýšená spotreba batérie

Existuje dobrý dôvod, prečo detekcia kľúčových slov vždy vyžaduje vlastný koprocesor, pretože inak by to viedlo k ďalšiemu vybíjaniu batérie z procesora, ktoré by muselo zostať hore. Keď oklamete svoje zariadenie, aby si myslelo, že sa nabíja, znamená to, že zariadenie ponecháva procesor v chode a beží na pozadí služby, pretože sa predpokladá, že zvýšený odber energie nebude dôležitý, pretože zariadenie má prístup k zdroju energie.

To však nie je tento prípad, takže povolenie tohto príkazu bude mať za následok zvýšené vybitie batérie. Podľa mojich skúseností, keď som nechal svoje zariadenie v tomto stave cez noc, môj Mate 9 sa vybil 12 % batérie v priebehu 8 hodín.

Podľa mňa to nie je nič proti dohodám, ale niektorých z vás to môže odradiť. Žiaľ, neexistuje jednoduché riešenie, ako sa vysporiadať s touto druhou nevýhodou. Zakázanie príkazu, keď je obrazovka zapnutá, podľa posledného odseku uvedeného v časti vyššie, pomôže zmierniť problém, ale to je asi tak všetko, čo môžete urobiť.


Záver

Dúfam, že vám bude tento trik užitočný. Určite to nie je pre každého, ale ak ste niekedy chceli vynútiť fungovanie rozpoznávania kľúčových slov Google OK a vaše zariadenie nemá potrebný hardvér, toto riešenie je pre vás.

Načrtol som dve potenciálne nevýhody tohto triku, z ktorých prvú možno vyriešiť použitím automatizačnej aplikácie na povolenie/zakázanie príkazu, keď to má zmysel. Posledná nevýhoda je, žiaľ, výsledkom skutočnosti, že váš hardvér nie je stavaný na nepretržitú prevádzku detekciu kľúčových slov, ale ak to používate iba vtedy, keď to skutočne potrebujete, nemalo by to byť príliš veľa problém.

Vyskúšajte tento trik a dajte nám vedieť v komentároch nižšie, či to funguje pre vás!