Как стать автором
Обновить

WearMouse, аэромышь для часов Wear OS

Время на прочтение 4 мин
Количество просмотров 7.3K
Здравствуй, Хабр! Хочу предложить вашему вниманию немного магии для часов на Wear OS.

Некоторое время назад, незадолго до выпуска Android 9.0, был представлен новый публичный API, позволяющий использовать устройства на Android в качестве Bluetooth-устройств ввода (мышь, клавиатура, геймпад, и т.д.), и вот я создал простое приложение, которое демонстрирует один из способов использования этого API. (Спойлер: это работает не только на девятом андроиде.)

Вы уже могли догадаться из названия, что делает это приложение: по сути, это обыкновенная аэромышь, совместимая с любыми устройствами на Windows, OSX, Linux (включая Raspbian), Chrome OS, Android (включая Android TV), при условии наличия приёмника Bluetooth; не требуются ни root-права, ни «серверное» приложение.

Достаточно запустить приложение, провести спаривание по Bluetooth, и можно будет:

  • Использовать часы как интуитивный указатель для презентаций (а также переключать слайды курсорными клавишами);
  • Играть во Fruit Ninja, размахивая руками (например, установив игру на Android TV с флешки, или на Chromebook из Play Store), см. демонстрацию ниже;
  • Управлять HTPC, лёжа на диване;
  • Использовать часы в качестве VR-контроллера в некоторых играх для Cardboard (впрочем, не для Daydream: там есть свой пульт);
  • Хвастаться перед друзьями своими телекинетическими способностями; :)
  • Управлять телефоном, подключенным через Samsung Dex;

Примерно представить себе, как это выглядит, можно по этому видео (демонстрация раннего прототипа конца 2015 года):



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


В приложении есть четыре режима: аэромышь, тачпад, курсорные клавиши и ввод текста.

Режим аэромыши достаточно самоочевиден. В нём есть две наэкранных кнопки для левого и правого клика, шторка сверху для переключения режима отслеживания движения в зависимости от того, на какую руку надеты часы (также есть режим, в котором часы можно держать в руке, как лазерную указку), и шторка снизу для дополнительных функций: клик с удержанием (также известный как «режим Fruit Ninja») и клик средней кнопкой. Если у ваших часов есть крутящаяся «корона», её можно использовать для прокрутки. Стрелка курсора мыши должна быть направлена в сторону экрана, которым вы управляете.

Режим тачпада поддерживает все привычные жесты: перемещение указателя, клик, двойной клик, тап с удержканием, тап двумя пальцами для правого клика, прокрутка двумя пальцами. Для выхода из этого режима можно накрыть экран ладонью, либо нажать дополнительную кнопку на часах (если у часов больше одной кнопки).

Режим курсорных клавиш довольно прост: тап по краям экрана вызывает нажатие соответствующих клавиш, двойной тап по центру вызывает нажатие Enter, длинное нажатие в центре используется для выхода, плюс есть свайпы из центра для клавиш Escape, Backspace, пробел и Tab.

Наконец, в режиме ввода текста можно использовать либо экранную клавиатуру, либо голосовой ввод. Надо отметить, что вводимый на подключенном устройстве текст зависит от раскладки клавиатруры. К сожалению, пока поддерживается только английская раскладка (можно было бы добавить больше, но это потребовало бы ручного переключения её как в приложении, так и на подключенном устройстве).

Если у ваших часов больше одной кнопки, то вторую можно использовать для быстрого переключения между режимами ввода, а третью — для быстрого вызова режима ввода текста.

Также имеются некоторые настройки. Можно стабилизировать перемещения курсора (это сгладит мелкие движения вроде тряски рук), включить диагональные направления для курсорных клавиш (это полезно в тех самых играх для Cardboard), или снизить частоту передачи данных (что может помочь при использовании приложения с некоторыми старыми приставками Android TV на седьмом андроиде, когда мышиный курсор не успевает за движениями рук).

Немного о совместимости


Как я упомянул выше, API стал публичным в Android 9.0, однако приложение также будет работать на любых часах с Android 8.0. То есть, если при перезагрузке часов, после скачущих цветных точек, появляется большая цветная «W» и надпись «Wear OS by Google» вместо «Android Wear», то всё должно работать. Сам API появился в Android Oreo, и немного отличался (а также был скрыт), но до Android Pie он был включен только на часах. К слову, существует способ включить его на телефонах с восьмёркой, но для этого нужны root-права (на девятке всё и так будет работать).

Возможные проблемы и их решения


Если при подключении курсор мыши двигается дёрганно, примерно раз в секунду, попробуйте влючить и выключить режим самолёта, после чего снова подключиться. Похоже, в стеке Bluetooth есть плавающая ошибка с управлением энергопотреблением…

Для регулировки чувствительности следует зайти в настройки подключенного устройства, а не приложения.

При использовании приложения с устройством, подключенным к телевизору, стоит переключить телевизор в «игровой» режим. Это должно отключить пост-процессинг, вызывающий очень большие задержки на современных телевизорах.

Также имеет смысл выключить управление жестами в настройках часов при использовании режима аэромыши, иначе высока вероятность случайно выполнить жест «назад» или «домой».

Ссылки на скачивание


Play Store (не пытайтесь открыть эту ссылку с телефона, получите сообщение «устройство не совместимо»; либо откройте ссылку на компьютере, либо найдите приложение в Play Store на самих часах).

Исходный код (почти весь, кроме поддержки Oreo).
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+16
Комментарии 12
Комментарии Комментарии 12

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн