Cum să forțați detectarea cuvintelor calde „OK Google” să funcționeze când ecranul este oprit pe orice dispozitiv [Root]

Acesta este un tutorial despre cum să forțați orice dispozitiv înrădăcinat să activeze detectarea cuvintelor calde OK Google, chiar dacă hardware-ul său nu acceptă funcția!

Când Moto X (2013) a fost anunțat pentru prima dată, una dintre cele mai interesante caracteristici (pe lângă Ambient Display) a fost capacitatea sa de a se trezi la comenzile vocale.

Introdusă mai târziu în dispozitivele Google Nexus și acum disponibilă în multe produse emblematice, capacitatea de recunoaștere a cuvintelor calde este un caracteristică destul de grozavă pentru atunci când trebuie să faceți o căutare rapidă pe Google, fără a căuta dispozitivul din dvs mâinile. Acest lucru poate fi extrem de util atunci când v-ați andocat telefonul în mașină și trebuie să începeți navigarea către o anumită destinație. Este de departe mai sigur să vă folosiți vocea pentru a porni navigarea pe Hărți Google decât orice altă alternativă.

Din păcate, posibilitatea de a declanșa comenzile „OK Google” în orice moment necesită un cip special de recunoaștere a vocii cu putere redusă în dispozitivul dvs. Deși acest hardware este prezent în multe dispozitive, nu este prezent în toate. Nici măcar flagship-uri puternice și scumpe, cum ar fi Huawei Mate 9, nu oferă această ofertă. Pentru dispozitive precum al meu, Google oferă posibilitatea de a declanșa comenzi vocale „OK Google” în timp ce ecranul este pornit sau când dispozitivul este conectat la un încărcător.

În urmă cu câțiva ani, a existat o aplicație cu numele de Deschideți Mic+ pentru Google Now care avea opțiunea de a activa un serviciu de fundal pentru a asculta comenzile vocale în orice moment. Din păcate, Google i-a cerut dezvoltatorului să nu mai folosească serviciul, iar dezvoltatorul nu a mai avut timp să accepte acea aplicație, așa că a rămas pe margine. Singura opțiune existentă este utilizarea AutoVoice, un plugin popular Tasker, dar acest lucru necesită să aveți suficiente cunoștințe Tasker pentru a configura profiluri care să răspundă la anumite comenzi.

Pentru aceia dintre voi care preferă să se bazeze pe serviciul de recunoaștere a vocii de la Google, am găsit o soluție care permite detectarea cuvintelor calde „OK Google” pe orice dispozitiv înrădăcinat, chiar dacă hardware-ul său nu îl acceptă. Sunt două avertismente la acest truc, pe care îl vom discuta în detaliu mai jos.


Detectarea cuvintelor calde „OK Google” pe orice dispozitiv

Întrebarea pe care mi-am pus-o când mă gândeam la o soluție pentru această problemă a fost:

Cum îmi pot păcăli dispozitivul să activeze serviciul de recunoaștere a cuvintelor calde la comanda mea?

Deoarece telefonul meu actual nu acceptă în mod nativ detectarea cuvintelor calde în timp ce ecranul este oprit, singurele condiții pentru a face acest lucru ar fi atunci când ecranul telefonului meu este pornit sau când se încarcă. Desigur, din moment ce scopul meu este să permit detectarea cuvintelor calde în orice moment (chiar și atunci când ecranul este oprit), dacă ecranul este pornit ar învinge acest scop. A trebui să-mi las dispozitivul conectat ar fi, de asemenea, inutil în demersul meu, dar dacă aș putea truc dispozitivul meu să îndeplinească oricare dintre aceste două condiții?

Din fericire, cu un pic de magie rădăcină și o utilizare inteligentă a comenzilor de depanare, acest lucru este foarte posibil! Folosind o comandă shell de depanare destinată testării, pot păcălește-mi dispozitivul să creadă că se încarcă chiar dacă este deconectat de la orice sursă de alimentare. Comanda pe care o vom exploata în scopurile noastre este dumpsys battery, ai căror parametri puteți citi în această postare pe blog de Roman Mazur.

Notă: acest truc este complet sigur a efectua. După cum s-a menționat, această comandă Îți PUCELĂ dispozitivul să creadă că se încarcă. De fapt, NU se încarcă, chiar dacă aplicațiile de monitorizare a bateriei spun contrariul (acest lucru se datorează faptului că aceste aplicații vor primi informații incorecte.)

De remarcat în mod deosebit este dumpsys battery set comanda, care acceptă parametrii pentru a seta dacă dispozitivul este sau nu încărcat în prezent prin AC, USB sau încărcare fără fir. De exemplu, dacă deschidem un shell rădăcină în Android și introducem următoarea comandă, the dispozitivul va crede că se încarcă prin alimentare CA.

su
dumpsys battery set ac 1

Setând această comandă (sau comanda pentru încărcare USB/wireless), acum vei putea declanșați comenzile OK Google când ecranul este oprit. Acest lucru se datorează faptului că, în toate scopurile, dispozitivul dvs. se „încarcă” - îndeplinind cerințele pentru activarea serviciului de recunoaștere a cuvintelor calde de la Google.

Deoarece aceasta este o comandă destinată depanării (destinată în principal dezvoltatorilor să testeze funcționalitatea în diferite condiții de baterie), are unele dezavantaje atunci când este utilizată în acest mod. Două dezavantaje, în special, pe care le vom aborda în continuare. Primul dezavantaj este destul de banal de rezolvat, dar nu același lucru se poate spune despre al doilea dezavantaj.

Dezavantajul #1 - Indicatorul bateriei înghețate

După ce ați introdus orice comandă „dumpsys battery set”, serviciul BatteryManager de la Android va face acest lucru încetează imediat colectarea orice alte date despre starea bateriei dvs. Aceasta înseamnă că nivelul bateriei, temperatura, curentul, tensiunea, starea de sănătate nu vor mai fi raportate de sistemul Android. În schimb, acestea vor fi „înghețate” în timp în momentul în care ați introdus comanda.

Cu toate acestea, aceste date sunt încă colectate de sistem chiar dacă este accesibil prin orice aplicație. Dacă doriți să obțineți o actualizare cu privire la nivelul actual al bateriei, va trebui să faceți niște trucuri. Din fericire, datele sunt destul de ușor de extras. Dacă aveți Tasker sau altă aplicație de automatizare, tot ce trebuie să faceți este să creați o notificare care se actualizează la o atingere cu textul curent stocat în /sys/class/power_supply/battery/capacity.

În captura de ecran de mai sus, indicatorul bateriei (care este vizibil când trag în jos bara de stare) este blocat la 70%, dar după cum puteți vedea în terminal, nivelul meu real de baterie este de 69%. Ar fi ușor să interoghez în mod regulat acest fișier pentru a posta un nivel precis al bateriei în bara mea de notificări, dar există o modalitate și mai ușoară de a rezolva acest dezavantaj.

Confruntarea cu acest dezavantaj special este de fapt incredibil de banal. Dacă vă gândiți la asta, această problemă apare numai atunci când comanda este activată și când ecranul este pornit. Dar lucrul este că nu trebuie să aveți această comandă activată când ecranul este pornit, deoarece funcționalitatea implicită vă permite să accesați comenzile „OK Google” când ecranul este pornit. Astfel, tot ce trebuie să faci este simplu dezactivați această comandă când ecranul este pornit. Utilizarea Tasker sau o altă aplicație de automatizare ar fi probabil cea mai simplă modalitate. Pur și simplu rulați această comandă pentru a dezactiva trucul:

dumpsys battery reset

Și mai jos veți găsi descrierea celor două profiluri Tasker pe care ar trebui să le configurați pentru a rula această comandă când ecranul este oprit, dar dezactivați-o când ecranul este pornit. În esență, veți crea două contexte „Eveniment”, dintre care unul este evenimentul „Afișare oprită”, în timp ce celălalt este evenimentul „Afișare deblocată”. Sarcina pentru evenimentul „Display Off” va avea o singură acțiune în ea, Cod-->Run Shell cu comanda dumpsys battery set ac 1. Sarcina pentru evenimentul „Display Unlocked” va avea, de asemenea, o singură acțiune în ea, Cod-->Run Shell cu comanda dumpsys battery reset. Astfel, Tasker va rula comanda pentru a-ți păcăli dispozitivul să creadă că se încarcă în timp ce ecranul este oprit (profil: Activare Hotword Detection) și rulați comanda pentru a dezactiva acest truc când telefonul este deblocat (profil: Dezactivați Hotword Detection).

[file][tab title ="Activați detectarea cuvintelor calde"]

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 ="Dezactivați detectarea cuvintelor calde"]

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

[/fila]

[/tabs]

Dezavantajul #2 - Scăderea bateriei

Există un motiv întemeiat pentru care detectarea cuvintelor calde necesită în orice moment un co-procesor personalizat, deoarece, altfel, ar duce la consumarea suplimentară a bateriei de la CPU, care trebuie să rămână treaz. Când vă păcăliți dispozitivul să creadă că se încarcă, aceasta înseamnă că dispozitivul menține procesorul în funcțiune și rulează mai mult fundal servicii, deoarece se presupune că consumul de putere crescut nu va conta, deoarece dispozitivul are acces la o sursă de alimentare.

Dar nu este cazul aici, așa că activarea acestei comenzi va duce la o consumare crescută a bateriei. Din experiența mea când am lăsat dispozitivul în această stare peste noapte, Mate 9 s-a epuizat 12% baterie pe parcursul a 8 ore.

Din punctul meu de vedere, nu este un deal-breaker, dar acest lucru i-ar putea descuraja pe unii dintre voi. Din păcate, nu există o soluție ușoară pentru a face față acestui al doilea dezavantaj. Dezactivarea comenzii în timp ce ecranul este pornit, conform ultimului paragraf menționat în secțiunea de mai sus, va ajuta la atenuarea anumitor probleme, dar cam asta este tot ce puteți face.


Concluzie

Sper că veți găsi acest truc util. Cu siguranță nu este pentru toată lumea, dar dacă ați dorit vreodată să forțați detectarea cuvintelor calde OK Google să funcționeze și dispozitivul dvs. nu are hardware-ul necesar, această soluție este pentru dvs.

Am subliniat cele două dezavantaje potențiale ale acestui truc, primul dintre care poate fi rezolvat prin utilizarea unei aplicații de automatizare pentru a activa/dezactiva comanda atunci când are sens să faceți acest lucru. Ultimul dezavantaj este, din păcate, rezultatul faptului că hardware-ul dvs. nu este construit pentru a fi mereu pornit detectarea cuvintelor calde, dar dacă îl utilizați numai atunci când aveți nevoie de el, atunci nu ar trebui să fie prea mult emisiune.

Dă o șansă acestui truc și spune-ne în comentariile de mai jos dacă funcționează pentru tine!