Jak vynutit, aby detekce klíčových slov „OK Google“ fungovala, když je obrazovka na jakémkoli zařízení vypnutá [kořen]

click fraud protection

Toto je návod, jak donutit jakékoli zakořeněné zařízení, aby povolilo detekci klíčových slov OK Google, i když jeho hardware tuto funkci nepodporuje!

Když byl Moto X (2013) poprvé oznámen, jednou z nejzajímavějších funkcí (kromě Ambient Display) byla jeho schopnost probouzet se hlasovými příkazy.

Později představená v zařízeních Google Nexus a nyní dostupná v mnoha vlajkových lodích, schopnost rozpoznávání klíčových slov je a docela úžasná funkce, když potřebujete rychle vyhledat Google, aniž byste se museli potýkat se zařízením ve svém ruce. To může být výjimečně užitečné, když máte telefon v doku v autě a potřebujete spustit navigaci k určitému cíli. Spuštění navigace v Mapách Google je mnohem bezpečnější než jakákoli jiná alternativa.

Možnost spouštět příkazy „OK Google“ za všech okolností bohužel vyžaduje speciální čip pro rozpoznávání hlasu s nízkou spotřebou ve vašem zařízení. I když je tento hardware přítomen v mnoha zařízeních, není přítomen ve všech. Tuto nabídku nenabízejí ani výkonné, drahé vlajkové lodě jako Huawei Mate 9. U zařízení, jako je ten můj, Google nabízí možnost spouštět hlasové příkazy „OK Google“, když je obrazovka zapnutá nebo když je zařízení připojeno k nabíječce.

Před několika lety existovala aplikace jménem Otevřete Mic+ pro Chytré karty Google která měla možnost povolit službě na pozadí, aby neustále naslouchala hlasovým příkazům. Google bohužel požádal, aby vývojář přestal službu používat, a vývojář již neměl čas tuto aplikaci podporovat, takže padla stranou. Jedinou existující možností je použít AutoVoice, oblíbený Tasker plugin, ale to vyžaduje, abyste měli dostatečné znalosti Taskeru, abyste mohli nastavit profily, které budou reagovat na konkrétní příkazy.

Pro ty z vás, kteří by se raději spoléhali na službu rozpoznávání hlasu Google, jsem našel řešení umožňuje detekci klíčových slov „OK Google“ na jakémkoli rootovaném zařízení, i když to jeho hardware nepodporuje. Existují dvě upozornění na tento trik, který si podrobně probereme níže.


Detekce klíčových slov „OK Google“ na jakémkoli zařízení

Otázka, kterou jsem si položil, když jsem přemýšlel o řešení tohoto problému, byla:

Jak mohu oklamat své zařízení, aby na můj příkaz povolilo službu rozpoznávání klíčových slov?

Vzhledem k tomu, že můj současný telefon nativně nepodporuje detekci klíčových slov, když je obrazovka vypnutá, jedinou podmínkou, aby to fungovalo, by bylo, když je obrazovka mého telefonu zapnutá nebo když se nabíjí. Přirozeně, protože mým cílem je umožnit detekci klíčových slov za všech okolností (i když je obrazovka vypnutá), zapnutí obrazovky by tento účel zmařilo. Nutnost nechávat své zařízení připojené k síti by v mém snažení bylo také zbytečné, ale co kdybych mohl trik splní mé zařízení některou z těchto dvou podmínek?

Naštěstí s trochou magie root a chytrým používáním příkazů pro ladění je to velmi možné! Pomocí příkazu ladění shellu určeného pro testovací účely jsem schopen přimět mé zařízení, aby si myslelo, že se nabíjí i když je odpojen od jakéhokoli zdroje napájení. Příkaz, který budeme využívat pro naše účely, je dumpsys battery, o jejichž parametrech si můžete přečíst v tento blogový příspěvek od Romana Mazura.

Poznámka: Tento trik je zcela bezpečné vystupovat. Jak je uvedeno, tento příkaz pouze NAKLÁDÍ vaše zařízení, aby si myslelo, že se nabíjí. Ve skutečnosti se NENABÍJÍ, i když aplikace pro sledování baterie říkají něco jiného (je to proto, že tyto aplikace budou dostávat nesprávné informace.)

Za zvláštní zmínku stojí dumpsys battery set příkaz, který přijímá parametry pro nastavení, zda se zařízení aktuálně nabíjí přes AC, USB nebo bezdrátové nabíjení. Pokud například otevřeme root shell v Androidu a zadáme následující příkaz, the zařízení si bude myslet, že se nabíjí ze sítě.

su
dumpsys battery set ac 1

Nastavením tohoto příkazu (nebo příkazu pro USB/bezdrátové nabíjení) nyní budete moci spusťte OK příkazy Google, když je obrazovka vypnutá. Je to proto, že se vaše zařízení ve všech směrech „nabíjí“ – splňuje požadavky na aktivaci služby rozpoznávání klíčových slov Google.

Protože se jedná o příkaz určený k ladění (především určený vývojářům k testování funkčnosti za různých podmínek baterie), má při použití tímto způsobem určité nevýhody. Zejména dvě nevýhody, kterým se budeme věnovat dále. První nevýhodu je docela triviální obejít, ale totéž nelze říci o druhé nevýhodě.

Nevýhoda #1 - Indikátor zamrzlé baterie

Po zadání jakéhokoli příkazu „dumpsys battery set“ služba BatteryManager systému Android provede okamžitě přestat sbírat jakékoli další údaje o stavu baterie. To znamená, že systém Android již nebude hlásit stav baterie, teplotu, proud, napětí a zdraví. Místo toho budou „zmrazeny“ v čase v okamžiku, kdy jste zadali příkaz.

Tyto údaje však jsou systém stále shromažďuje i když je přístupný z jakékoli aplikace. Pokud chcete získat aktuální informace o aktuální úrovni baterie, budete muset udělat nějaký trik. Naštěstí se data vytahují celkem snadno. Pokud máte Tasker nebo jinou automatizační aplikaci, vše, co musíte udělat, je vytvořit oznámení, které se po klepnutí aktualizuje aktuálním textem uloženým v /sys/class/power_supply/battery/capacity.

Na výše uvedeném snímku obrazovky je můj indikátor baterie (který je vidět, když stáhnu dolů stavový řádek) zaseknutý na 70 %, ale jak můžete vidět na terminálu, moje skutečná úroveň baterie je 69 %. Bylo by snadné pravidelně dotazovat tento soubor a zveřejňovat přesnou úroveň nabití baterie v oznamovací liště, ale existuje ještě jednodušší způsob, jak tento neúspěch obejít.

Vypořádat se s touto konkrétní nevýhodou je vlastně neuvěřitelně triviální. Pokud o tom přemýšlíte, tento problém se objeví pouze tehdy, když je příkaz povolen a když je obrazovka zapnutá. Jde ale o to, že tento příkaz nemusíte mít povolený, když je obrazovka zapnutá, protože výchozí funkce umožňuje přístup k příkazům „OK Google“, když je obrazovka zapnutá. Takže vše, co musíte udělat, je jednoduše deaktivujte tento příkaz, když je obrazovka zapnutá. Použití Taskeru nebo jiné automatizační aplikace by bylo pravděpodobně nejjednodušší. Jednoduše spusťte tento příkaz a deaktivujte trik:

dumpsys battery reset

A níže najdete popis dvou profilů Tasker, které byste museli nastavit, abyste mohli tento příkaz spustit, když je obrazovka vypnutá, ale deaktivovat, když je obrazovka zapnutá. V podstatě vytvoříte dva kontexty „Událost“, z nichž jeden je Událost „Vypnutí displeje“, zatímco druhý je Událost „Zobrazení odemčeno“. Úloha pro událost "Vypnout zobrazení" bude mít jedinou akci, Code-->Spustit Shell s příkazem dumpsys battery set ac 1. Úloha pro událost „Display Unlocked“ bude mít také jedinou akci, Code-->Run Shell s příkazem dumpsys battery reset. Tasker tedy spustí příkaz, aby přiměl vaše zařízení, aby si myslelo, že se nabíjí, když je obrazovka vypnutá (profil: Povolit Detekce klíčových slov) a spusťte příkaz pro deaktivaci tohoto triku, když je telefon odemčený (profil: Zakázat detekci klíčových slov).

[tabs][tab title ="Povolit detekci klíč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ázat detekci klíč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á spotřeba baterie

Existuje dobrý důvod, proč detekce klíčových slov za všech okolností vyžaduje vlastní koprocesor, protože jinak by to vedlo k dalšímu vybíjení baterie z CPU, které by muselo zůstat vzhůru. Když oklamete své zařízení, aby si myslelo, že se nabíjí, znamená to, že zařízení udržuje procesor v chodu a běží více na pozadí služby, protože se předpokládá, že na zvýšeném odběru energie nebude záležet, protože zařízení má přístup ke zdroji energie.

To však není tento případ, takže povolení tohoto příkazu povede ke zvýšenému vybíjení baterie. Podle mých zkušeností, kdy jsem nechal své zařízení v tomto stavu přes noc, se můj Mate 9 vybil 12% baterie během 8 hodin.

Podle mého názoru to není řešení, ale některé z vás to může odradit. Bohužel neexistuje žádné snadné řešení, jak se s touto druhou nevýhodou vypořádat. Zakázání příkazu, když je obrazovka zapnutá, jak je uvedeno v posledním odstavci uvedeném v části výše, pomůže zmírnit problém, ale to je asi vše, co můžete udělat.


Závěr

Doufám, že vám tento trik bude užitečný. Určitě to není pro každého, ale pokud jste někdy chtěli vynutit fungování detekce klíčových slov Google OK a vaše zařízení nemá potřebný hardware, toto řešení je pro vás.

Nastínil jsem dvě potenciální nevýhody tohoto triku, z nichž první lze vyřešit použitím automatizační aplikace k povolení/zakázaní příkazu, když to má smysl. Poslední nevýhoda je bohužel důsledkem skutečnosti, že váš hardware není stavěný na neustálý provoz detekce klíčových slov, ale pokud to používáte, jen když to opravdu potřebujete, pak by to nemělo být příliš mnoho problém.

Vyzkoušejte tento trik a dejte nám vědět v komentářích níže, zda to funguje pro vás!