Как да принудите разпознаването на гореща дума „OK Google“ да работи, когато екранът е изключен на всяко устройство [Root]

click fraud protection

Това е урок за това как да принудите всяко руутнато устройство да активира откриването на гореща дума OK Google, дори ако хардуерът му не поддържа функцията!

Когато Moto X (2013) беше обявен за първи път, една от най-вълнуващите функции (освен Ambient Display) беше способността му да се събужда с гласови команди.

Въведена по-късно в устройствата Google Nexus и вече налична в много флагмани, възможността за разпознаване на горещи думи е доста страхотна функция, когато трябва да направите бързо търсене в Google, без да бъркате в устройството във вашия ръце. Това може да бъде изключително полезно, когато сте поставили телефона си в колата и трябва да стартирате навигация до определена дестинация. Много по-безопасно е да използвате гласа си, за да стартирате навигацията на Google Maps, отколкото всяка друга алтернатива.

За съжаление, възможността да задействате команди „OK Google“ по всяко време изисква специален чип за гласово разпознаване с ниска мощност във вашето устройство. Въпреки че този хардуер присъства в много устройства, той не присъства във всички тях. Дори мощни, скъпи флагмани като Huawei Mate 9 не предлагат тази оферта. За устройства като моето Google предлага възможност за задействане на гласови команди „OK Google“, докато екранът е включен или когато устройството е включено към зарядно устройство.

Преди няколко години имаше приложение на име Отворете Mic+ за Google Now който имаше опцията да активира фонова услуга, която да слуша за гласови команди по всяко време. За съжаление, Google поиска от разработчика да спре да използва услугата и разработчикът вече нямаше време да поддържа това приложение, така че то отпадна. Единствената съществуваща опция е да се използва AutoVoice, популярен плъгин на Tasker, но това изисква да имате достатъчно познания за Tasker, за да настроите профили, които да отговарят на конкретни команди.

За тези от вас, които предпочитат да разчитат на услугата за гласово разпознаване на Google, намерих решение, което позволява откриване на гореща дума „OK Google“ на всяко руутнато устройство, дори ако хардуерът му не го поддържа. Има две предупреждения към този трик, който ще разгледаме подробно по-долу.


Откриване на гореща дума „OK Google“ на всяко устройство

Въпросът, който си зададох, когато мислех за решение на този проблем, беше:

Как мога да подмамя устройството си да активира услугата за разпознаване на горещи думи по моя команда?

Тъй като текущият ми телефон не поддържа първоначално откриване на горещи думи, докато екранът е изключен, единствените условия, за да може това да работи, ще бъдат когато екранът на телефона ми е включен или когато се зарежда. Естествено, тъй като моята цел е да активирам откриване на гореща дума по всяко време (дори когато екранът е изключен), включването на екрана би провалило тази цел. Да се ​​налага да оставя устройството си включено също би било безсмислено в моето начинание, но какво, ако можех трик моето устройство да отговаря на някое от тези две условия?

За щастие, с малко root магия и умно използване на команди за отстраняване на грешки, това е много възможно! Използвайки команда за отстраняване на грешки, предназначена за тестови цели, мога да го направя да подведе устройството ми да мисли, че се зарежда въпреки че е изключен от източник на захранване. Командата, която ще използваме за нашите цели, е dumpsys battery, за чиито параметри можете да прочетете в тази публикация в блог от Роман Мазур.

Забележка: този трик е напълно безопасно да изпълнявам. Както е посочено, тази команда само ПОДМАМА вашето устройство да мисли, че се зарежда. Всъщност НЕ се зарежда, дори ако приложенията за наблюдение на батерията казват друго (това е, защото тези приложения ще получат неправилна информация.)

Особено внимание заслужава dumpsys battery set команда, която приема параметри, за да зададете дали устройството в момента се зарежда чрез AC, USB или безжично зареждане. Например, ако отворим root shell в Android и въведем следната команда, the устройството ще мисли, че се зарежда чрез променливотоково захранване.

su
dumpsys battery set ac 1

Като зададете тази команда (или командата за USB/безжично зареждане), вече ще можете задействайте команди OK Google, докато екранът ви е изключен. Това е така, защото за всички намерения и цели вашето устройство се „зарежда“ – отговаряйки на изискванията за активиране на услугата за разпознаване на гореща дума на Google.

Тъй като това е команда, предназначена за отстраняване на грешки (основно предназначена за разработчици за тестване на функционалността при различни условия на батерия), тя има някои недостатъци, когато се използва по този начин. По-специално два недостатъка, които ще разгледаме по-нататък. Първият недостатък е доста тривиален за заобикаляне, но не може да се каже същото за втория недостатък.

Недостатък №1 - Индикатор за замръзнала батерия

След въвеждане на команда "dumpsys battery set", услугата BatteryManager на Android ще незабавно спрете да събирате всякакви допълнителни данни за състоянието на вашата батерия. Това означава, че вашето ниво на батерията, температура, ток, напрежение, здраве вече няма да се отчитат от системата Android. Вместо това те ще бъдат "замразени" във времето в момента, в който сте въвели командата.

Тези данни обаче са все още се събира от системата дори ако е достъпен от всяко приложение. Ако искате да получите актуализация за това какво е текущото ви ниво на батерията, ще трябва да направите някои трикове. За щастие, данните са доста лесни за извличане. Ако имате Tasker или друго приложение за автоматизация, всичко, което трябва да направите, е да създадете известие, което се актуализира при докосване с текущия текст, съхранен в /sys/class/power_supply/battery/capacity.

На екранната снимка по-горе индикаторът за батерията ми (който се вижда, когато дръпна надолу лентата на състоянието) е заседнал на 70%, но както можете да видите в терминала, действителното ми ниво на батерията е 69%. Би било лесно редовно да проверявам този файл, за да публикувам точно ниво на батерията в моята лента за известия, но има още по-лесен начин да се заобиколи този проблем.

Справянето с този конкретен недостатък е всъщност невероятно тривиално. Ако се замислите, този проблем се появява само когато командата е активирана и когато екранът е включен. Но работата е там, че не е необходимо тази команда да е активирана, когато екранът е включен, тъй като функционалността по подразбиране ви позволява достъп до командите „OK Google“, когато екранът е включен. Следователно всичко, което трябва да направите, е просто деактивирайте тази команда, когато екранът е включен. Използването на Tasker или друго приложение за автоматизация вероятно би било най-лесният начин. Просто изпълнете тази команда, за да деактивирате трика:

dumpsys battery reset

И по-долу ще намерите описанието на двата профила на Tasker, които трябва да настроите, за да изпълните тази команда, когато екранът е изключен, но да я деактивирате, когато екранът е включен. По същество вие ще създавате два контекста „Събитие“, единият от които е събитието „Изключен дисплей“, а другият е събитието „Отключен дисплей“. Задачата за събитието "Display Off" ще има едно действие в него, Code-->Run Shell с командата dumpsys battery set ac 1. Задачата за събитието „Дисплей е отключен“ също ще има едно действие в него, Code-->Run Shell с командата dumpsys battery reset. Така Tasker ще изпълни командата, за да подмами вашето устройство да мисли, че се зарежда, докато екранът е изключен (профил: Активиране Hotword Detection) и изпълнете командата, за да деактивирате този трик, когато телефонът е отключен (профил: Disable Hotword Detection).

[tabs][tab title ="Активиране на откриването на горещи думи"]

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][заглавие на раздела ="Деактивиране на откриването на горещи думи"]

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

[/раздел]

[/tabs]

Недостатък #2 - Повишено изтощаване на батерията

Има основателна причина, поради която откриването на гореща дума по всяко време изисква персонализиран копроцесор, защото в противен случай ще доведе до допълнително изтощаване на батерията от процесора, който трябва да остане буден. Когато подведете устройството си да мисли, че се зарежда, това означава, че устройството поддържа процесора работещ и работи повече във фонов режим услуги, тъй като се предполага, че увеличеното потребление на енергия няма да има значение, тъй като устройството има достъп до източник на захранване.

Но тук случаят не е такъв, така че активирането на тази команда ще доведе до увеличено изтощаване на батерията. Според моя опит, оставяйки устройството си в това състояние за една нощ, моят Mate 9 се изтощи 12% батерия за 8 часа.

Според мен едва ли нарушава сделката, но това може да възпре някои от вас там. За съжаление, няма лесно решение за справяне с този втори недостатък. Деактивирането на командата, докато екранът е включен, съгласно последния параграф, споменат в раздела по-горе, ще помогне за смекчаване на проблема, но това е почти всичко, което можете да направите.


Заключение

Надявам се да намерите този трик за полезен. Със сигурност не е за всеки, но ако някога сте искали да принудите откриването на горещи думи на OK Google да работи и вашето устройство няма необходимия хардуер, това решение е за вас.

Очертах двата потенциални недостатъка на този трик, първият от които може да бъде решен чрез използване на приложение за автоматизация, за да активирате/деактивирате командата, когато има смисъл да го направите. Последният недостатък за съжаление е резултат от факта, че вашият хардуер не е създаден за винаги включен откриване на горещи думи, но ако използвате това само когато наистина имате нужда от него, тогава не би трябвало да е твърде голямо проблем.

Опитайте този трик и ни уведомете в коментарите по-долу дали работи за вас!