Hvordan tvinge «OK Google» kommandoorddeteksjon til å fungere når skjermen er av på en hvilken som helst enhet [Root]

Dette er en veiledning om hvordan du tvinger en hvilken som helst rotet enhet til å aktivere OK Google kommandoord-deteksjon, selv om maskinvaren ikke støtter funksjonen!

Da Moto X (2013) først ble annonsert, var en av de mest spennende funksjonene (foruten Ambient Display) evnen til å våkne opp til talekommandoer.

Senere introdusert i Google Nexus-enheter og nå tilgjengelig i mange flaggskip, er kommandoordgjenkjenning en ganske fantastisk funksjon for når du trenger å foreta et raskt Google-søk uten å tukle med enheten i din hender. Dette kan være svært nyttig når du har dokket telefonen i bilen og du må starte navigasjonen til en bestemt destinasjon. Det er langt tryggere å bruke stemmen til å starte Google Maps-navigasjon enn noe annet alternativ.

Dessverre krever det å kunne utløse «OK Google»-kommandoer til enhver tid en spesiell, laveffekts stemmegjenkjenningsbrikke i enheten din. Selv om denne maskinvaren er til stede i mange enheter, er den ikke til stede i dem alle. Selv kraftige, dyre flaggskip som Huawei Mate 9 tilbyr ikke dette tilbudet. For enheter som min tilbyr Google muligheten til å utløse «OK Google»-talekommandoer mens skjermen er på eller når enheten er koblet til en lader.

For noen år tilbake var det en søknad ved navn Åpne Mic+ for Google Nå som hadde muligheten til å aktivere en bakgrunnstjeneste for å lytte etter talekommandoer til enhver tid. Dessverre ba Google om at utvikleren sluttet å bruke tjenesten, og utvikleren hadde ikke lenger tid til å støtte den appen, så den falt i veien. Det eneste eksisterende alternativet er å bruke AutoVoice, en populær Tasker-plugin, men dette krever at du har nok Tasker-kunnskap til å sette opp profiler for å svare på spesifikke kommandoer.

For de av dere som foretrekker å stole på Googles talegjenkjenningstjeneste, har jeg funnet en løsning som aktiverer "OK ​​Google" kommandoorddeteksjon på alle rotfestede enheter, selv om maskinvaren ikke støtter det. Det er to forbehold til dette trikset, som vi vil diskutere i detalj nedenfor.


"OK Google" Hotword-deteksjon på en hvilken som helst enhet

Spørsmålet jeg stilte meg selv da jeg tenkte på en løsning på dette problemet var:

Hvordan kan jeg lure enheten min til å aktivere kommandoordgjenkjenningstjenesten på min kommando?

Siden min nåværende telefon ikke støtter oppdaging av kommandoord mens skjermen er av, er de eneste betingelsene for å få dette til å fungere når telefonens skjerm er på eller når den lader. Naturligvis, siden målet mitt er å aktivere kommandoorddeteksjon til enhver tid (selv mens skjermen er av), vil det å ha skjermen på være beseiret dette formålet. Å måtte la enheten min være koblet til ville også være meningsløst i min bestrebelse, men hva om jeg kunne triks enheten min til å oppfylle en av disse to betingelsene?

Heldigvis, med litt rotmagi og smart bruk av feilsøkingskommandoer, er dette veldig mulig! Ved å bruke en debug shell-kommando ment for testformål, kan jeg det lure enheten min til å tro at den lader selv om den er koblet fra en hvilken som helst strømkilde. Kommandoen vi vil utnytte til våre formål er dumpsys battery, parametrene du kan lese om i dette blogginnlegget av Roman Mazur.

Merk: dette trikset er helt trygt å fremføre. Som det er sagt, lurer denne kommandoen bare enheten din til å tro at den lader. Den lader faktisk IKKE, selv om batteriovervåkingsapplikasjoner sier noe annet (dette er fordi disse appene vil bli matet med feil informasjon.)

Spesielt å merke seg er dumpsys battery set kommando, som godtar parametere for å angi hvorvidt enheten lades via AC, USB eller trådløs lading eller ikke. For eksempel, hvis vi åpner et rotskall i Android og skriver inn følgende kommando, den enheten vil tro at den lades via vekselstrøm.

su
dumpsys battery set ac 1

Ved å stille inn denne kommandoen (eller kommandoen for USB/trådløs lading), vil du nå kunne utløs OK Google-kommandoer mens skjermen er av. Dette er fordi enheten din for alt i verden «lader» – oppfyller kravene for å aktivere Googles kommandoordgjenkjenningstjeneste.

Siden dette er en kommando beregnet for feilsøking (hovedsakelig ment for utviklere å teste funksjonalitet under forskjellige batteriforhold), har den noen ulemper når den brukes på denne måten. Spesielt to ulemper, som vi vil ta opp neste gang. Den første ulempen er ganske triviell å omgå, men det samme kan ikke sies om den andre ulempen.

Ulempe #1 - Frossen batteriindikator

Etter å ha angitt en "dumpsys battery set"-kommando, vil Androids BatteryManager-tjeneste umiddelbart slutte å samle ytterligere data om batteritilstanden. Dette betyr at batterinivå, temperatur, strøm, spenning, helse ikke lenger vil bli rapportert av Android-systemet. De vil i stedet "fryses" i tid i det øyeblikket du skrev inn kommandoen.

Imidlertid er disse dataene fortsatt samles inn av systemet selv om den er tilgjengelig for alle programmer. Hvis du ønsker å få en oppdatering om hva ditt nåværende batterinivå er på, må du trikse. Heldigvis er dataene ganske enkle å hente. Hvis du har Tasker eller en annen automatiseringsapplikasjon, er alt du trenger å gjøre å lage et varsel som oppdateres ved et trykk med gjeldende tekst lagret i /sys/class/power_supply/battery/capacity.

I skjermbildet ovenfor sitter batteriindikatoren min (som er synlig når jeg trekker ned statuslinjen) fast på 70 %, men som du kan se i terminalen, er mitt faktiske batterinivå 69 %. Det ville være enkelt å regelmessig polle denne filen for å legge ut et nøyaktig batterinivå i varslingslinjen, men det er en enda enklere måte å omgå dette tilbakeslaget.

Å håndtere denne spesielle ulempen er faktisk utrolig trivielt. Hvis du tenker på det, oppstår dette problemet bare når kommandoen er aktivert og når skjermen er på. Men saken er at du ikke trenger å ha denne kommandoen aktivert når skjermen er på, fordi standardfunksjonaliteten lar deg få tilgang til "OK Google"-kommandoer når skjermen er på. Dermed er alt du trenger å gjøre ganske enkelt deaktiver denne kommandoen når skjermen er på. Å bruke Tasker eller en annen automatiseringsapp vil sannsynligvis være den enkleste måten. Bare kjør denne kommandoen for å deaktivere trikset:

dumpsys battery reset

Og nedenfor finner du beskrivelsen av de to Tasker-profilene du må konfigurere for å kjøre denne kommandoen når skjermen er av, men deaktiver den når skjermen er på. I hovedsak vil du lage to «Event»-kontekster, hvorav den ene er «Display Off»-hendelsen, mens den andre er «Display Unlocked»-hendelsen. Oppgaven for "Vis av"-hendelsen vil ha en enkelt handling i seg, kode--> Kjør Shell med kommandoen dumpsys battery set ac 1. Oppgaven for "Vis ulåst"-hendelsen vil også ha en enkelt handling i seg, Kode--> Kjør Shell med kommandoen dumpsys battery reset. Dermed vil Tasker kjøre kommandoen for å lure enheten din til å tro at den lader mens skjermen er av (profil: Aktiver Hotword Detection) og kjør kommandoen for å deaktivere dette trikset når telefonen er ulåst (profil: Deaktiver Hotword Detection).

[tabs][tab title ="Aktiver kommandoordgjenkjenning"]

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 ="Deaktiver registrering av kommandoord"]

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]

Ulempe #2 - Økt batteritømming

Det er en god grunn til at hotword-deteksjon til enhver tid krever en tilpasset co-prosessor, det er fordi ellers ville det føre til at ekstra batteriforbruk fra CPU-en måtte holde seg våken. Når du lurer enheten til å tro at den lader, betyr dette at enheten holder prosessoren i gang og kjører mer bakgrunn tjenester fordi det er under forutsetningen at det økte strømforbruket ikke spiller noen rolle fordi enheten har tilgang til en strømkilde.

Men det er ikke tilfelle her, så å aktivere denne kommandoen vil resultere i økt batteriforbruk. Min erfaring er at jeg la enheten min i denne tilstanden over natten, og Mate 9 ble tømt 12 % batteri i løpet av 8 timer.

Knapt en deal-breaker etter min mening, men dette kan avskrekke noen av dere der ute. Dessverre er det ingen enkel løsning for å håndtere denne andre ulempen. Deaktivering av kommandoen mens skjermen er på, som i det siste avsnittet nevnt i avsnittet ovenfor, vil bidra til å redusere problemet, men det er omtrent alt du kan gjøre.


Konklusjon

Jeg håper du finner dette trikset nyttig. Det er absolutt ikke for alle, men hvis du noen gang har ønsket å tvinge OK Google kommandoorddeteksjon til å fungere og enheten din ikke har den nødvendige maskinvaren, er denne løsningen for deg.

Jeg har skissert de to potensielle ulempene med dette trikset, hvorav den første kan løses ved å bruke en automatiseringsapplikasjon for å aktivere/deaktivere kommandoen når det er fornuftig å gjøre det. Sistnevnte ulempe er dessverre et resultat av at maskinvaren din ikke er bygd for alltid-på kommandoorddeteksjon, men hvis du bruker dette bare når du virkelig trenger det, bør det ikke være for mye utgave.

Gi dette trikset en sjanse og gi oss beskjed i kommentarene nedenfor om det fungerer for deg!