Это руководство о том, как заставить любое рутованное устройство включить обнаружение горячих слов «ОК Google», даже если его оборудование не поддерживает эту функцию!
Когда Moto X (2013) был впервые анонсирован, одной из самых интересных функций (помимо Ambient Display) была его способность просыпаться по голосовым командам.
Позднее представленная на устройствах Google Nexus, а теперь доступная во многих флагманах, функция распознавания горячих слов представляет собой довольно замечательная функция, когда вам нужно выполнить быстрый поиск в Google, не возясь с устройством в вашем Руки. Это может быть исключительно полезно, если вы подключили телефон к машине и вам нужно начать навигацию к определенному пункту назначения. Гораздо безопаснее использовать голос для запуска навигации по Картам Google, чем любую другую альтернативу.
К сожалению, чтобы постоянно запускать команды «ОК, Google», на вашем устройстве должен быть установлен специальный маломощный чип распознавания голоса. Хотя это оборудование присутствует во многих устройствах, оно присутствует не во всех. Даже мощные и дорогие флагманы, такие как Huawei Mate 9, не предлагают такого предложения. Для таких устройств, как мое, Google предлагает возможность запускать голосовые команды «ОК, Google», когда экран включен или когда устройство подключено к зарядному устройству.
Несколько лет назад появилось приложение под названием Открыть микрофон+ для Google Now у которого была возможность включить фоновую службу для постоянного прослушивания голосовых команд. К сожалению, Google потребовал, чтобы разработчик прекратил использовать этот сервис, и у разработчика больше не было времени поддерживать это приложение, поэтому оно отошло на второй план. Единственный существующий вариант — использовать Автоголос, популярный плагин Tasker, но для этого вам необходимо обладать достаточными знаниями Tasker для настройки профилей для ответа на определенные команды.
Для тех из вас, кто предпочитает полагаться на службу распознавания голоса Google, я нашел обходной путь, который включает обнаружение горячих слов «ОК Google» на любом корневом устройстве, даже если его оборудование не поддерживает это. Есть два предостережения к этому трюку, о котором мы подробно поговорим ниже.
Обнаружение горячих слов «ОК Google» на любом устройстве
Когда я думал об обходном пути решения этой проблемы, я задал себе следующий вопрос:
Как я могу обманом заставить свое устройство включить службу распознавания горячих слов по моей команде?
Поскольку мой нынешний телефон изначально не поддерживает обнаружение горячих слов при выключенном экране, единственные условия, при которых эта функция работает, — это когда экран моего телефона включен или когда он заряжается. Естественно, поскольку моя цель — всегда включать обнаружение горячих слов (даже когда экран выключен), включение экрана противоречит этой цели. Оставлять устройство подключенным к сети также было бы бессмысленно, но что, если бы я мог обманывать мое устройство соответствует любому из этих двух условий?
К счастью, при наличии небольшого количества корневой магии и умелого использования команд отладки это вполне возможно! Используя команду оболочки отладки, предназначенную для целей тестирования, я могу заставить мое устройство думать, что оно заряжается даже если он отключен от любого источника питания. Команда, которую мы будем использовать для наших целей: dumpsys battery
, о параметрах которого вы можете прочитать в это сообщение в блоге Романа Мазура.
Примечание: этот трюк абсолютно безопасно выступать. Как уже говорилось, эта команда только ОБМАНЫВАЕТ ваше устройство, заставляя его думать, что оно заряжается. На самом деле он НЕ заряжается, даже если приложения для мониторинга заряда батареи говорят об обратном (это потому, что этим приложениям будет предоставлена неверная информация).
Особо следует отметить dumpsys battery set
Команда, которая принимает параметры, определяющие, заряжается ли устройство в данный момент через переменный ток, USB или беспроводную зарядку. Например, если мы откроем корневую оболочку в Android и введем следующую команду, устройство будет думать, что оно заряжается от сети переменного тока.
su
dumpsys battery set ac 1
Установив эту команду (или команду USB/беспроводной зарядки), вы теперь сможете запускать команды ОК Google, когда экран выключен. Это связано с тем, что по сути ваше устройство «заряжается» — соответствует требованиям для активации службы распознавания горячих слов Google.
Поскольку это команда, предназначенная для отладки (в основном предназначенная для разработчиков для проверки функциональности при различных условиях работы от батареи), ее использование таким образом имеет некоторые недостатки. В частности, два недостатка, о которых мы поговорим далее. Первый недостаток довольно легко обойти, чего нельзя сказать о втором недостатке.
Недостаток №1 — Индикатор замерзшей батареи
После ввода любой команды «Dumpsys Battery Set» служба Android BatteryManager будет немедленно прекратите собирать любые дополнительные данные о состоянии вашей батареи. Это означает, что система Android больше не будет сообщать об уровне заряда батареи, температуре, силе тока, напряжении и состоянии здоровья. Вместо этого они будут «заморожены» во времени в момент ввода команды.
Однако эти данные все еще собирается системой даже если он доступен любому приложению. Если вы хотите получить обновленную информацию о текущем уровне заряда батареи, вам придется проделать некоторую хитрость. К счастью, данные довольно легко получить. Если у вас есть Tasker или другое приложение для автоматизации, все, что вам нужно сделать, это создать уведомление, которое обновляется при нажатии на текущий текст, хранящийся в /sys/class/power_supply/battery/capacity.
На скриншоте выше мой индикатор заряда батареи (который виден, когда я опускаю строку состояния) застрял на уровне 70%, но, как вы можете видеть в терминале, мой фактический уровень заряда батареи составляет 69%. Было бы легко регулярно опрашивать этот файл, чтобы публиковать точный уровень заряда батареи в панели уведомлений, но есть еще более простой способ обойти эту проблему.
Борьба с этим конкретным недостатком на самом деле невероятно тривиально. Если задуматься, эта проблема возникает только тогда, когда команда включена и когда экран включен. Но дело в том, что вам не нужно включать эту команду, когда экран включен, поскольку функциональность по умолчанию позволяет вам получать доступ к командам «ОК, Google», когда экран включен. Таким образом, все, что вам нужно сделать, это просто отключите эту команду, когда экран включен. Использование Tasker или другого приложения для автоматизации, вероятно, будет самым простым способом. Просто запустите эту команду, чтобы отключить трюк:
dumpsys battery reset
Ниже вы найдете описание двух профилей Tasker, которые вам необходимо настроить, чтобы запускать эту команду при выключенном экране и отключать ее, когда экран включен. По сути, вы создадите два контекста «Событие», один из которых — событие «Отображение выключено», а другой — событие «Дисплей разблокирован». Задача для события «Отображение выключено» будет содержать одно действие: «Код» -> «Запустить оболочку» с помощью команды. dumpsys battery set ac 1
. Задача для события «Отображение разблокировки» также будет содержать одно действие: «Код» -> «Запустить оболочку» с помощью команды. dumpsys battery reset
. Таким образом, Tasker запустит команду, чтобы заставить ваше устройство думать, что оно заряжается, когда экран выключен (профиль: Enable Обнаружение горячих слов) и запустите команду, чтобы отключить этот трюк, когда телефон разблокирован (профиль: Отключить обнаружение горячих слов).
[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][tab title ="Отключить обнаружение горячих слов"]
Profile: Disable Hotword Detection (191)
Event: Display Unlocked
Enter: Anon (192)
A1: Run Shell [ Command: dumpsys battery resetTimeout (Seconds):0Use Root:OnStoreOutputIn: StoreErrorsIn: StoreResultIn: ]
[/таб]
[/табс]
Недостаток №2 — повышенный расход заряда батареи
Есть веская причина, по которой для обнаружения горячих слов всегда требуется специальный сопроцессор: в противном случае это приведет к дополнительному разряду батареи из-за необходимости бодрствования ЦП. Когда вы обманываете свое устройство, заставляя его думать, что оно заряжается, это означает, что устройство поддерживает работу процессора и работает в фоновом режиме. служб, поскольку предполагается, что повышенное энергопотребление не будет иметь значения, поскольку устройство имеет доступ к источнику питания.
Но в данном случае это не тот случай, поэтому включение этой команды приведет к увеличению разряда батареи. По моему опыту, оставив свое устройство в таком состоянии на ночь, мой Mate 9 разрядился. 12% заряда батареи в течение 8 часов.
На мой взгляд, это вряд ли станет препятствием для сделки, но это может отпугнуть некоторых из вас. К сожалению, не существует простого решения, позволяющего справиться со вторым недостатком. Отключение команды при включенном экране, как указано в последнем абзаце, упомянутом в разделе выше, поможет частично смягчить проблему, но это все, что вы можете сделать.
Заключение
Надеюсь, вы найдете этот трюк полезным. Это, конечно, не для всех, но если вы когда-нибудь хотели заставить работать обнаружение горячих слов ОК Google, а на вашем устройстве нет необходимого оборудования, этот обходной путь для вас.
Я обрисовал два потенциальных недостатка этого трюка, первый из которых можно устранить, используя приложение автоматизации для включения/выключения команды, когда это имеет смысл. Последний недостаток, к сожалению, является результатом того, что ваше оборудование не предназначено для постоянного включения. обнаружение горячих слов, но если вы используете это только тогда, когда вам это действительно нужно, то это не должно быть слишком большой проблемой. проблема.
Попробуйте этот трюк и дайте нам знать в комментариях ниже, сработает ли он у вас!