Skip to content
xDarkOnePublic

About

Голос с кнопки микрофона на проекторах Hisense / Vidda: команды, поиск, русский интерфейс

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

VoiceKey

VoiceKey

Голос с кнопки микрофона на проекторе Hisense / Vidda.
Сказали — открылось. Без облака приложений и без Google TV.

VoiceKey — приложение для Android TV-прошивок Hisense (проверено на Vidda C2 Ultra, VIDAA на Android 11). Оно забирает кнопку микрофона на пульте и делает с ней то, чего не умеет штатный ассистент.

  • Голосовые команды. Нажали кнопку и сказали: «открой Лампу», «найди на ютубе трейлер Дюны», «найди в кинопоиске Интерстеллар» или просто название. Работает с TizenTube, Lampa, Кинопоиском, VK Видео, Rutube.
  • Поиск внутри открытого приложения. Удержание кнопки — поиск там, где вы сейчас.
  • Два распознавателя. Онлайн (Google) или офлайн (Vosk, русская модель ~46 МБ, скачивается один раз).
  • «Продолжить просмотр». Недосмотренные в TizenTube и Lampa видео попадают в ряд лаунчера.
  • Экранный переводчик. Китайские и английские надписи в системных настройках прошивки показываются по-русски поверх экрана (словари — в docs/translator.md).
  • Возвращается после сна. Прошивка при засыпании убивает почти все приложения вместе со службой доступности; VoiceKey сам включает её обратно.
  • Обновляется само. Раз в полдня проверяет новые версии на GitHub; когда выйдет новая, скажет надписью сверху, а установить — в настройках, «Обновление» (система спросит подтверждение).
  • Настройки на экране. Что делает нажатие и удержание, время удержания, движок распознавания, звуки, переводчик.

Настройки VoiceKey Обновление в настройках

Голосовая команда: плашка «Говорите команду» и результат

«Открой на ютубе трейлер Дюна 3 часть»: плашка «Ищу в YouTube»

Панель поиска Google: «фильм Дюна», доступно в Lampa

Русские надписи поверх системных настроек прошивки

Установка

  1. Скачайте VoiceKey.apk со страницы Releases (или соберите сами, см. ниже) и поставьте на проектор любым способом: с флешки через файловый менеджер, по сети, через adb install.

  2. Включите на проекторе в настройках разработчика «USB debugging» и «Wi-Fi debugging» (раздел «Отладка»). Если прошивка прячет настройки, откройте их через файловый менеджер: системное приложение Settings → «открыть в системе».

  3. Откройте VoiceKey из лаунчера. Вверху списка появятся шаги «Настройка: …» — они показываются, пока не сделаны, и пропадают сами. Нажмите OK на «Настройка: выдать права»: на экране появится запрос «Allow USB debugging?» — отметьте «Always allow» и нажмите Allow. VoiceKey сам выдаст себе микрофон, обновления, подписку на уведомления и WRITE_SECURE_SETTINGS, а потом включит свою службу. Компьютер не нужен. Отладку после этого можно выключить.

  4. Если так не вышло, одна команда с компьютера в той же сети закрывает то же самое:

    adb connect <адрес-проектора>:5555
    adb shell pm grant dev.xdark.voicekey android.permission.WRITE_SECURE_SETTINGS

    Откройте VoiceKey ещё раз — остальные шаги закроются.

  5. Для онлайн-распознавания нужен голосовой сервис org.vidda.googlevoicesearch (Vidda-Voice-Service, сборка xxivanoi с 4pda). Если его нет, вверху настроек появится шаг «Настройка: голосовой сервис Google»: OK скачает его из релиза voice-service (контрольная сумма проверяется), на экране системы нажмите «Установить», микрофон сервису VoiceKey выдаст сам. Без сервиса панель микрофона сама переходит на офлайн-модель (если скачана) или подсказывает, что делать, и не виснет на «Подключаюсь…»; можно и сразу выбрать офлайн-движок.

Что даёт каждое разрешение:

Шаг Зачем Без отладки
Микрофон распознавателю речи нужно разрешение вызывающего да, диалог
Обновления из приложения установка новой версии да, диалог прошивки
Служба кнопки микрофона перехват кнопки только если в прошивке есть экран специальных возможностей
Возврат после сна прошивка при засыпании убивает службу; по подписке система запускает VoiceKey снова только если есть экран доступа к уведомлениям
WRITE_SECURE_SETTINGS включает два предыдущих шага сам, в том числе после сна нет: через «Настройка: выдать права» или adb

Язык системы. В настройках VoiceKey есть строка «Язык системы»: она показывает текущий язык, а OK или стрелки переключают русский / English (меняется persist.sys.locale, нужна перезагрузка проектора). Значение читается обратно, и строка честно пишет, что получилось; если setprop не принялся, VoiceKey пробует второй способ — просит систему сменить язык так, как это делают приложения-переключатели языка. Если прошивка при загрузке возвращает свой язык, VoiceKey после включения проектора сам ставит выбранный заново. В самом низу настроек есть скрытый раздел «Отладка» (открывается по OK): состояние языка, две пробы и журнал — чтобы разобраться, что делает прошивка. Работает при включённой отладке, как и «Настройка: выдать права». Пригодится там, где в прошивке нет русского: приложения со своими русскими строками (например, Lumbina) заговорят по-русски.

Проверка: adb shell am start -n dev.xdark.voicekey/.TestPhrase --es phrase 'открой лампу' — выполнит фразу так, будто её сказали.

Обновление

Из приложения: настройки VoiceKey → «Обновление» → OK. Приложение скачает VoiceKey.apk из последнего релиза, сверит контрольную сумму и передаст установщику; на экране системы нужно нажать «Установить». Тихо обновиться Android 11 не даёт. Обновление принимается только если подписано тем же ключом, что и установленное приложение. Вручную: adb install -r VoiceKey.apk.

Как пользоваться

  • Нажатие на кнопку микрофона — сказать команду.
  • Удержание — голосовой поиск в приложении на экране (или панель Google, если приложение не умеет).
  • Что делает каждое из двух и сколько держать — в настройках VoiceKey (сам значок в лаунчере).
  • Приложения называйте как угодно: «ютуб», «лампа», «кинопоиск», «вк видео», «рутуб».

Если что-то не так

  • Журнал работы: adb shell dumpsys activity service dev.xdark.voicekey/.KeyService (и /.WakeListener, если служба не работает).
  • Служба не включилась после сна: запустите значок VoiceKey из лаунчера — он включит её вручную и скажет, как прошло.
  • Любое нажатие на пульте «прожимается» несколько раз после выхода из сна. Замечено на Vidda C2 Ultra вместе с лаунчером Lumbina 0.0.6: помогает выключить его «службу пульта» в специальных возможностях. К VoiceKey это не относится (проверено сырыми событиями getevent: аппаратно кнопка срабатывает один раз).

Сборка

Без Gradle: aapt2 → javac → d8 → zipalign → apksigner.

Нужны JDK 17+ (путь в JAVA_HOME, по умолчанию ~/.local/opt/jdk), Android SDK с build-tools 35.0.0 и platform android-30 (ANDROID_HOME, по умолчанию ~/.local/opt/android-sdk), curl, zip.

tools/fetch-libs.sh   # Vosk и JNA с Maven Central, с проверкой контрольных сумм
./build.sh            # получится VoiceKey.apk

Ключ подписи voicekey.keystore создаётся при первой сборке рядом с проектом. Храните его: обновления должны быть подписаны тем же ключом. Приложение собирается под arm64.

Устройство

Исходники в src/dev/xdark/voicekey, у каждого класса есть описание в начале файла. Ключевые: KeyService (перехват кнопки), RemoteMic (звук с микрофона пульта), Command (разбор фразы), VoiceActivity (распознавание), WakeListener/BootReceiver (возврат после сна), Translator (экранный переводчик), WatchNext (продолжить просмотр).

Лицензия

GPL-3.0-or-later. Сторонние компоненты — в NOTICE.md.

About

Голос с кнопки микрофона на проекторах Hisense / Vidda: команды, поиск, русский интерфейс

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages