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

    Здравствуй, Хабр! Хочу предложить вашему вниманию немного магии для часов на 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).
    Поддержать автора
    Поделиться публикацией

    Комментарии 12

      0
      Жаль, многие производители не поддерживают свои устройства. Множество часов так и осталось на старых версиях ОС — и для них этот метод не сработает.
      Зло смотрит на компанию ASUS
        0

        Не знаете ли, как с этим обстоят дела на часах Apple?

          0
          Для Apple есть приложения, требующие наличия «серверной» части, но поддержки Bluetooth HID Device API в них нет (да и HID Host они вряд ли поддерживают).
          0
          «This app is incompatible with all of your devices.»

          Можно ссылку на apk оставить или разобраться с настройками в маркете?
            0

            С настройками в маркете всё в порядке.

              0

              Кстати, какие у вас часы?

                0
                Galaxy Watch

                Как я понял, не совместимы? :(

                В часах часто меняются названия бренда, так что не отличаю уже их и не слежу
                  +1

                  Galaxy Watch – это часы на платформе Tizen, а не на Android. Так что, увы, не совместимы (как и Apple Watch, как и Huawei Watch GT).

              0
              Здравствуйте!
              Как подключить часы к компьютеру для работы этого приложения? К смартфону я их подключаю через приложение WearOS. А к компьютеру как?
                0

                Прежде всего вам нужен приёмник Bluetooth для компьютера: он может быть встроен в материнскую плату, или подключаться по USB.
                Далее можно просто выполнить сопряжение обычным образом, например вот инструкция для Windows.
                Когда приложение запущено (на экране виден список сопряжённых или доступных устройств), часы будут доступны для обнаружения, и их можно будет выбрать в списке доступных устройств на компьютере. Можно и наоборот: сделать комьпютер обнаруживаемым, и выбрать его в списке доступных устройств на часах.

                  0
                  Я думал, часы можно только с телефоном спрягать через специальное приложение. А можно и просто подключать к чему-то, как наушники, без потери спряжения с телефоном?
                    +1
                    Совершенно верно. Внутри часов — точно такой же Android, лишь с меньшим набором включенных Bluetooth-профилей. Как к телефону можно подключать множество устройств, так и к часам можно: например, часы можно спрягать с беспроводной гарнитурой, чтобы слушать музыку прямо с них — разумеется, без потери сопряжения с телефоном.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое