Kako prisiliti zaznavanje sprožilne besede »OK Google«, da deluje, ko je zaslon izklopljen v kateri koli napravi [Root]

To je vadnica o tem, kako prisiliti katero koli zakoreninjeno napravo, da omogoči zaznavanje sprožilne besede OK Google, tudi če njena strojna oprema ne podpira te funkcije!

Ko je bil Moto X (2013) prvič objavljen, je bila ena najbolj vznemirljivih funkcij (poleg Ambient Display) njegova zmožnost prebujanja z glasovnimi ukazi.

Zmožnost prepoznavanja vročih besed, ki je bila pozneje predstavljena v napravah Google Nexus in je zdaj na voljo v številnih vodilnih modelih, je precej izjemna funkcija, ko morate hitro iskati v Googlu, ne da bi brskali po napravi v svojem roke. To je lahko izjemno uporabno, ko ste telefon priključili v avto in morate začeti navigacijo do določenega cilja. Za zagon navigacije Google Maps je veliko varneje uporabiti svoj glas kot katera koli druga možnost.

Na žalost je za sprožitev ukazov »OK Google« v vaši napravi potreben poseben čip za prepoznavanje glasu z nizko porabo energije. Čeprav je ta strojna oprema prisotna v številnih napravah, ni prisotna v vseh. Tudi zmogljivi, dragi paradni konji, kot je Huawei Mate 9, ne ponujajo te ponudbe. Za naprave, kot je moja, Google ponuja možnost sprožitve glasovnih ukazov »OK Google«, ko je zaslon vklopljen ali ko je naprava priključena na polnilnik.

Pred nekaj leti je obstajala aplikacija z imenom Odprite Mic+ za Google Now ki je imel možnost omogočiti storitev v ozadju, da ves čas posluša glasovne ukaze. Na žalost je Google zahteval, da razvijalec preneha uporabljati storitev in razvijalec ni imel več časa za podporo te aplikacije, zato je padla na stran. Edina obstoječa možnost je uporaba AutoVoice, priljubljen vtičnik Tasker, vendar to zahteva, da imate dovolj znanja o Taskerju, da nastavite profile za odziv na določene ukaze.

Za tiste, ki bi se raje zanašali na Googlovo storitev prepoznavanja glasu, sem našel rešitev, omogoča zaznavanje sprožilne besede "OK Google" na kateri koli napravi z rootanjem, tudi če njena strojna oprema tega ne podpira. obstajajo dve opozorili na ta trik, o katerem bomo podrobneje razpravljali spodaj.


Zaznavanje sprožilne besede »OK Google« v kateri koli napravi

Vprašanje, ki sem si ga zastavil, ko sem razmišljal o rešitvi te težave, je bilo:

Kako lahko svojo napravo pretentam, da na moj ukaz omogoči storitev prepoznavanja vročih besed?

Ker moj trenutni telefon izvorno ne podpira zaznavanja sprožilne besede, ko je zaslon izklopljen, je edini pogoj, da to deluje, ko je zaslon mojega telefona vklopljen ali ko se polni. Seveda, ker je moj cilj omogočiti zaznavanje sprožilne besede ves čas (tudi ko je zaslon izklopljen), bi vklopljen zaslon premagal ta namen. Tudi to, da bi moral pustiti svojo napravo priključeno, bi bilo nesmiselno v mojem prizadevanju, a kaj ko bi lahko trik ali moja naprava izpolnjuje enega od teh dveh pogojev?

Na srečo je z malo korenske magije in pametno uporabo ukazov za odpravljanje napak to zelo mogoče! Z uporabo lupinskega ukaza za odpravljanje napak, ki je namenjen za namene testiranja, lahko mojo napravo pretentati, da misli, da se polni čeprav je izključen iz kakršnega koli vira napajanja. Ukaz, ki ga bomo uporabili za naše namene, je dumpsys battery, o katerih parametrih lahko preberete v ta objava v blogu avtorja Romana Mazurja.

Opomba: ta trik je popolnoma varen izvesti. Kot je navedeno, ta ukaz vašo napravo samo PREVERI, da misli, da se polni. Pravzaprav se NE polni, tudi če aplikacije za nadzor baterije trdijo drugače (to je zato, ker bodo te aplikacije prejele napačne informacije.)

Posebej velja omeniti dumpsys battery set ukaz, ki sprejema parametre za nastavitev, ali se naprava trenutno polni prek AC, USB ali brezžičnega polnjenja. Na primer, če odpremo korensko lupino v Androidu in vnesemo naslednji ukaz, bo naprava bo mislila, da se polni prek električnega omrežja.

su
dumpsys battery set ac 1

Z nastavitvijo tega ukaza (ali ukaza za USB/brezžično polnjenje) boste zdaj lahko sproži ukaze OK Google, ko je zaslon izklopljen. To je zato, ker se vaša naprava za vse namene "polni" - izpolnjuje zahteve za aktiviranje Googlove storitve za prepoznavanje sprožilnih besed.

Ker je to ukaz, namenjen odpravljanju napak (v glavnem namenjen razvijalcem za testiranje funkcionalnosti v različnih pogojih baterije), ima pri takšni uporabi nekaj pomanjkljivosti. Zlasti dve pomanjkljivosti, ki ju bomo obravnavali v nadaljevanju. Prvo pomanjkljivost je dokaj nepomembno rešiti, vendar tega ne moremo reči za drugo pomanjkljivost.

Pomanjkljivost št. 1 - Indikator zamrznjene baterije

Po vnosu katerega koli ukaza »dumpsys battery set« bo Androidova storitev BatteryManager takoj prenehajte z zbiranjem kakršne koli dodatne podatke o stanju baterije. To pomeni, da sistem Android ne bo več poročal o ravni baterije, temperaturi, toku, napetosti in zdravju. Namesto tega bodo "zamrznjeni" v času v trenutku, ko vnesete ukaz.

Vendar pa so ti podatki še vedno zbira sistem tudi če je dostopen s katero koli aplikacijo. Če želite prejeti posodobitev o trenutni ravni baterije, boste morali narediti nekaj zvijač. Na srečo je podatke precej enostavno pridobiti. Če imate Tasker ali drugo aplikacijo za avtomatizacijo, morate le ustvariti obvestilo, ki se ob dotiku posodobi s trenutnim besedilom, shranjenim v /sys/class/power_supply/battery/capacity.

Na zgornjem posnetku zaslona je moj indikator baterije (ki je viden, ko potegnem navzdol vrstico stanja) obtičal pri 70 %, toda kot lahko vidite v terminalu, je moja dejanska raven baterije 69 %. Bilo bi preprosto redno anketirati to datoteko, da bi v moji vrstici z obvestili objavil natančno raven baterije, vendar obstaja še lažji način, kako se izogniti tej težavi.

Ukvarjanje s to posebno pomanjkljivostjo je pravzaprav neverjetno trivialno. Če pomislite na to, se ta težava pojavi le, ko je ukaz omogočen in ko je zaslon vklopljen. Toda stvar je v tem, da vam tega ukaza ni treba omogočiti, ko je zaslon vklopljen, saj vam privzeta funkcionalnost omogoča dostop do ukazov »OK Google«, ko je zaslon vklopljen. Tako je vse, kar morate storiti, preprosto onemogočite ta ukaz, ko je zaslon vklopljen. Uporaba Taskerja ali druge aplikacije za avtomatizacijo bi bila verjetno najenostavnejši način. Preprosto zaženite ta ukaz, da onemogočite trik:

dumpsys battery reset

Spodaj boste našli opis dveh profilov Tasker, ki bi ju morali nastaviti, da bi zagnali ta ukaz, ko je zaslon izklopljen, in ga onemogočili, ko je zaslon vklopljen. V bistvu boste ustvarili dva konteksta »Dogodka«, od katerih je eden dogodek »Izklop zaslona«, drugi pa dogodek »Odklenjen zaslon«. Naloga za dogodek "Display Off" bo vsebovala eno samo dejanje, Koda-->Zaženi lupino z ukazom dumpsys battery set ac 1. Naloga za dogodek »Display Unlocked« bo vsebovala tudi eno dejanje, Koda-->Zaženi lupino z ukazom dumpsys battery reset. Tako bo Tasker zagnal ukaz, s katerim bo vašo napravo prevaral, da misli, da se polni, ko je zaslon izklopljen (profil: Omogoči Hotword Detection) in zaženite ukaz, da onemogočite ta trik, ko je telefon odklenjen (profil: Onemogoči Hotword Detection).

[tabs][tab title ="Omogoči zaznavanje sprožilne besede"]

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][naslov zavihka ="Onemogoči zaznavanje sprožilne besede"]

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]

Pomanjkljivost št. 2 - Povečana poraba baterije

Obstaja dober razlog, zakaj stalno zaznavanje sprožilnih besed zahteva soprocesor po meri, saj bi drugače povzročilo dodatno praznjenje baterije, ki bi morala CPE ostati buden. Ko svojo napravo zavedete, da misli, da se polni, to pomeni, da naprava ohranja delovanje procesorja in deluje več v ozadju storitve, ker se predpostavlja, da povečana poraba energije ne bo pomembna, ker ima naprava dostop do vira napajanja.

Vendar v tem primeru ni tako, zato bo omogočanje tega ukaza povzročilo povečano praznjenje baterije. Po mojih izkušnjah, ko sem pustil svojo napravo v tem stanju čez noč, se je moj Mate 9 izpraznil 12 % baterije v 8 urah.

Po mojem mnenju komajda prelomno, vendar bo to nekatere od vas morda odvrnilo. Na žalost ni enostavne rešitve za obravnavo te druge pomanjkljivosti. Onemogočanje ukaza, ko je zaslon vklopljen, kot je navedeno v zadnjem odstavku v zgornjem razdelku, bo nekoliko pomagalo ublažiti težavo, vendar je to skoraj vse, kar lahko storite.


Zaključek

Upam, da vam bo ta trik koristen. Vsekakor ni za vsakogar, a če ste kdaj želeli prisiliti zaznavanje sprožilne besede OK Google in vaša naprava nima potrebne strojne opreme, je ta rešitev za vas.

Opisal sem dve morebitni pomanjkljivosti tega trika, od katerih je prvo mogoče rešiti z uporabo aplikacije za avtomatizacijo, ki omogoči/onemogoči ukaz, ko je to smiselno. Slednja pomanjkljivost je na žalost posledica dejstva, da vaša strojna oprema ni zgrajena za vedno vklopljeno zaznavanje sprožilnih besed, vendar če to uporabljate le, ko jo res potrebujete, potem ne bi smelo biti preveč težava.

Preizkusite ta trik in nam v spodnjih komentarjih sporočite, ali vam ustreza!