Hoe u 'OK Google' Hotword-detectie kunt forceren om te werken wanneer het scherm is uitgeschakeld op elk apparaat [Root]

click fraud protection

Dit is een tutorial over hoe je elk geroot apparaat kunt dwingen om OK Google hotword-detectie in te schakelen, zelfs als de hardware deze functie niet ondersteunt!

Toen de Moto X (2013) voor het eerst werd aangekondigd, was een van de meest opwindende functies (naast Ambient Display) de mogelijkheid om wakker te worden met spraakopdrachten.

Hotword-herkenningsfunctie is later geïntroduceerd in Google Nexus-apparaten en nu beschikbaar in veel vlaggenschepen behoorlijk geweldige functie voor als je snel op Google moet zoeken zonder te rommelen met het apparaat in je apparaat handen. Dit kan bijzonder handig zijn als u uw telefoon in de auto hebt geplaatst en de navigatie naar een bepaalde bestemming moet starten. Het is veel veiliger om uw stem te gebruiken om Google Maps-navigatie te starten dan welk ander alternatief dan ook.

Helaas vereist het te allen tijde kunnen activeren van "OK Google"-opdrachten een speciale, energiezuinige spraakherkenningschip in uw apparaat. Hoewel deze hardware op veel apparaten aanwezig is, is deze niet op alle apparaten aanwezig. Zelfs krachtige, dure vlaggenschepen zoals de Huawei Mate 9 bieden dit aanbod niet. Voor apparaten zoals de mijne biedt Google de mogelijkheid om 'OK Google'-spraakopdrachten te activeren terwijl het scherm is ingeschakeld of wanneer het apparaat is aangesloten op een oplader.

Een paar jaar geleden was er een aanvraag met de naam Open Mic+ voor Google Now die de mogelijkheid had om een ​​achtergrondservice te allen tijde te laten luisteren naar spraakopdrachten. Helaas heeft Google de ontwikkelaar verzocht de dienst niet meer te gebruiken en had de ontwikkelaar geen tijd meer om die app te ondersteunen, waardoor deze buiten de boot viel. De enige bestaande optie is om te gebruiken AutoVoice, een populaire Tasker-plug-in, maar hiervoor moet je voldoende Tasker-kennis hebben om profielen in te stellen die op specifieke opdrachten reageren.

Voor degenen onder u die liever vertrouwen op de spraakherkenningsservice van Google: ik heb daar een oplossing voor gevonden maakt "OK Google" hotword-detectie mogelijk op elk geroot apparaat, zelfs als de hardware dit niet ondersteunt. Er zijn twee kanttekeningen aan deze truc, die we hieronder in detail zullen bespreken.


"OK Google" Hotword-detectie op elk apparaat

De vraag die ik mezelf stelde toen ik een oplossing voor dit probleem bedacht, was:

Hoe kan ik mijn apparaat ertoe verleiden de hotword-herkenningsservice op mijn bevel in te schakelen?

Omdat mijn huidige telefoon hotword-detectie niet standaard ondersteunt terwijl het scherm is uitgeschakeld, zijn de enige voorwaarden om dit te laten werken wanneer het scherm van mijn telefoon is ingeschakeld of wanneer deze wordt opgeladen. Aangezien het mijn doel is om te allen tijde hotword-detectie mogelijk te maken (zelfs als het scherm is uitgeschakeld), zou het inschakelen van het scherm dit doel uiteraard tenietdoen. Mijn apparaat aangesloten laten zou ook zinloos zijn in mijn streven, maar wat als ik dat zou kunnen truc mijn apparaat om aan een van deze twee voorwaarden te voldoen?

Gelukkig is dit, met een beetje rootmagie en een slim gebruik van debug-commando's, heel goed mogelijk! Met behulp van een debug shell-commando bedoeld voor testdoeleinden kan ik dit doen laat mijn apparaat denken dat het aan het opladen is ook al is de stekker uit het stopcontact gehaald. Het commando dat we voor onze doeleinden zullen gebruiken is dumpsys battery, waarover u meer kunt lezen in deze blogpost van Roman Mazur.

Let op: deze truc is volkomen veilig presteren. Zoals gezegd zorgt dit commando er alleen maar voor dat uw apparaat denkt dat het wordt opgeladen. Het laadt NIET daadwerkelijk op, zelfs als toepassingen voor batterijmonitoring anders zeggen (dit komt omdat deze apps onjuiste informatie krijgen).

Van bijzonder belang is de dumpsys battery set commando, dat parameters accepteert om in te stellen of het apparaat momenteel wel of niet wordt opgeladen via AC, USB of draadloos opladen. Als we bijvoorbeeld een rootshell in Android openen en de volgende opdracht invoeren, wordt de apparaat zal denken dat het wordt opgeladen via wisselstroom.

su
dumpsys battery set ac 1

Door dit commando (of het commando voor USB/draadloos opladen) in te stellen, kunt u dit nu doen activeer OK Google-opdrachten terwijl uw scherm is uitgeschakeld. Dit komt omdat uw apparaat in alle opzichten wordt "opgeladen" en voldoet aan de vereisten voor activering van de hotword-herkenningsservice van Google.

Omdat dit een opdracht is die bedoeld is voor foutopsporing (voornamelijk bedoeld voor ontwikkelaars om de functionaliteit onder verschillende batterijomstandigheden te testen), heeft het enkele nadelen als het op deze manier wordt gebruikt. Twee nadelen in het bijzonder, die we hierna zullen bespreken. Het eerste nadeel is nogal triviaal om te omzeilen, maar hetzelfde kan niet gezegd worden voor het tweede nadeel.

Nadeel #1 - Indicator voor bevroren batterij

Na het invoeren van een "dumpsys battery set"-opdracht, zal de BatteryManager-service van Android dit doen stop onmiddellijk met verzamelen eventuele verdere gegevens over uw batterijstatus. Dit betekent dat uw batterijniveau, temperatuur, stroom, spanning en gezondheid niet langer door het Android-systeem worden gerapporteerd. In plaats daarvan worden ze in de tijd "bevroren" op het moment dat u de opdracht invoerde.

Deze gegevens zijn dat echter wel worden nog steeds door het systeem verzameld zelfs als het toegankelijk is voor elke applicatie. Als je een update wilt krijgen over het huidige batterijniveau, zul je wat trucjes moeten doen. Gelukkig zijn de gegevens vrij eenvoudig te achterhalen. Als u Tasker of een andere automatiseringstoepassing heeft, hoeft u alleen maar een melding te maken die met één tik wordt bijgewerkt met de huidige tekst die is opgeslagen in /sys/class/power_supply/battery/capacity.

In de bovenstaande schermafbeelding blijft mijn batterij-indicator (die zichtbaar is als ik de statusbalk naar beneden trek) vast op 70%, maar zoals je in de terminal kunt zien, is mijn werkelijke batterijniveau 69%. Het zou gemakkelijk zijn om dit bestand regelmatig te raadplegen om een ​​nauwkeurig batterijniveau in mijn berichtenbalk te plaatsen, maar er is een nog eenvoudiger manier om deze tegenslag te omzeilen.

Omgaan met dit specifieke nadeel is eigenlijk ongelooflijk triviaal. Als je erover nadenkt, doet dit probleem zich alleen voor als de opdracht is ingeschakeld en als het scherm is ingeschakeld. Maar het punt is dat je deze opdracht niet ingeschakeld hoeft te hebben als het scherm is ingeschakeld, omdat je met de standaardfunctionaliteit toegang hebt tot de "OK Google"-opdrachten als het scherm is ingeschakeld. Het enige dat u hoeft te doen, is dus eenvoudig schakel deze opdracht uit als het scherm is ingeschakeld. Het gebruik van Tasker of een andere automatiseringsapp zou waarschijnlijk de eenvoudigste manier zijn. Voer eenvoudigweg deze opdracht uit om de truc uit te schakelen:

dumpsys battery reset

En hieronder vindt u de beschrijving van de twee Tasker-profielen die u zou moeten instellen om deze opdracht uit te voeren wanneer het scherm is uitgeschakeld, maar deze uit te schakelen wanneer het scherm is ingeschakeld. In essentie ga je twee "Gebeurtenis"-contexten creëren, waarvan er één de "Display Off"-gebeurtenis is, terwijl de andere de "Display Ontgrendeld"-gebeurtenis is. De taak voor de gebeurtenis "Display Off" zal één enkele actie bevatten, Code-->Shell uitvoeren met de opdracht dumpsys battery set ac 1. De taak voor de gebeurtenis "Display Ontgrendeld" zal ook een enkele actie bevatten, Code-->Run Shell met de opdracht dumpsys battery reset. Tasker zal dus de opdracht uitvoeren om uw apparaat te laten denken dat het wordt opgeladen terwijl het scherm is uitgeschakeld (profiel: Enable Hotword-detectie) en voer de opdracht uit om deze truc uit te schakelen wanneer de telefoon is ontgrendeld (profiel: Hotword-detectie uitschakelen).

[tabs][tab title="Hotword-detectie inschakelen"]

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-detectie uitschakelen"]

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

[/tabblad]

[/tabbladen]

Nadeel #2 - Verhoogd batterijverbruik

Er is een goede reden waarom hotword-detectie te allen tijde een aangepaste co-processor vereist, omdat dit anders zou resulteren in extra batterijverbruik doordat de CPU wakker moet blijven. Wanneer u uw apparaat laat denken dat het aan het opladen is, betekent dit dat het apparaat de processor draaiende houdt en meer op de achtergrond draait diensten omdat wordt aangenomen dat het toegenomen stroomverbruik er niet toe doet omdat het apparaat toegang heeft tot een stroombron.

Maar dat is hier niet het geval, dus het inschakelen van deze opdracht zal resulteren in een groter batterijverbruik. In mijn ervaring als ik mijn apparaat 's nachts in deze staat liet staan, liep mijn Mate 9 leeg 12% batterijvermogen in de loop van 8 uur.

Naar mijn mening is dit nauwelijks een dealbreaker, maar dit kan sommigen van jullie afschrikken. Helaas is er geen gemakkelijke oplossing om met dit tweede nadeel om te gaan. Als u de opdracht uitschakelt terwijl het scherm is ingeschakeld, zoals aangegeven in de laatste paragraaf die in het gedeelte hierboven wordt genoemd, kunt u het probleem enigszins verzachten, maar dat is ongeveer alles wat u kunt doen.


Conclusie

Ik hoop dat je deze truc nuttig vindt. Het is zeker niet voor iedereen geschikt, maar als je ooit de OK Google-hotword-detectie wilt laten werken en je apparaat niet over de vereiste hardware beschikt, dan is deze oplossing iets voor jou.

Ik heb de twee mogelijke nadelen van deze truc geschetst, waarvan de eerste kan worden opgelost door een automatiseringstoepassing te gebruiken om de opdracht in of uit te schakelen wanneer dit zinvol is. Dit laatste nadeel is helaas een gevolg van het feit dat je hardware niet gebouwd is om altijd aan te staan hotword-detectie, maar als je dit alleen gebruikt als je het echt nodig hebt, dan zou het niet al te veel moeten zijn probleem.

Probeer deze truc eens en laat ons in de reacties hieronder weten of het voor jou werkt!