
Bonjour, Habr! Je veux porter à votre attention un peu de magie pour les montres sur Wear OS.
Il y a quelque temps,
peu avant la sortie d'Android 9.0, une nouvelle
API publique a été introduite qui vous permet d'utiliser des appareils Android comme périphériques d'entrée Bluetooth (souris, clavier, manette de jeu, etc.), et maintenant j'ai créé une application simple qui montre Une façon d'utiliser cette API. (Spoiler: cela ne fonctionne pas seulement sur le neuvième androïde.)
Vous pouvez déjà deviner à partir du nom de cette application: en fait, il s'agit d'une souris à air ordinaire compatible avec tous les appareils sous Windows, OSX, Linux (y compris Raspbian), Chrome OS, Android (y compris Android TV), à condition qu'il y ait un récepteur Bluetooth; Ni les privilèges root ni une application «serveur» ne sont requis.
Il suffit de lancer l'application, l'appairage via Bluetooth, et vous pouvez:
- Utilisez l'horloge comme pointeur intuitif pour les présentations (ainsi que pour basculer les diapositives avec les touches de curseur);
- Jouez à Fruit Ninja en agitant les bras (par exemple, en installant le jeu sur Android TV à partir d'une clé USB ou sur un Chromebook du Play Store), voir la démo ci-dessous;
- Gérer HTPC en étant allongé sur le canapé;
- Utilisez l'horloge comme contrôleur VR dans certains jeux pour Cardboard (mais pas pour Daydream: il a sa propre télécommande);
- Montrez vos capacités télékinésiques à vos amis; :)
- Gérez un téléphone connecté via Samsung Dex;
Vous pouvez à peu près imaginer à quoi cela ressemble dans cette vidéo (démonstration d'un premier prototype de fin 2015):
Comment l'utiliser
L'application dispose de quatre modes: souris aérienne, pavé tactile, touches fléchées et saisie de texte.
Le mode Air Mouse est assez évident. Il dispose de deux boutons à l'écran pour un clic gauche et droit, un obturateur en haut pour changer le mode de suivi des mouvements en fonction de la main sur laquelle la montre est allumée (il existe également un mode dans lequel vous pouvez tenir la montre dans votre main comme un pointeur laser), et un obturateur en bas pour des fonctions supplémentaires: maintenez le clic (également appelé «mode Fruit Ninja») et le clic du milieu. Si votre montre a une couronne en rotation, vous pouvez l'utiliser pour faire défiler. Le curseur de la souris doit pointer vers l'écran que vous contrôlez.
Le mode pavé tactile prend en charge tous les gestes habituels: déplacez le pointeur, cliquez, double-cliquez, appuyez avec maintenez, appuyez avec deux doigts pour un clic droit, faites défiler avec deux doigts. Pour quitter ce mode, vous pouvez couvrir l'écran avec votre paume ou appuyer sur un bouton supplémentaire de la montre (si la montre a plus d'un bouton).
Le mode des touches de curseur est assez simple: appuyez sur les bords de l'écran pour appuyer sur les touches correspondantes, appuyez deux fois sur le centre pour appuyer sur Entrée, un appui long sur le centre permet de sortir, et il y a des balayages du centre pour Échap, Retour arrière, Espace et Tab.

Enfin, en
mode de saisie de texte, vous pouvez utiliser le clavier à l'écran ou la saisie vocale. Il convient de noter que le texte saisi sur l'appareil connecté dépend de la disposition du clavier. Malheureusement, jusqu'à présent, seule la disposition en anglais est prise en charge (on pourrait en ajouter plus, mais cela nécessiterait de la basculer manuellement à la fois dans l'application et sur l'appareil connecté).
Si votre montre comporte plusieurs boutons, le second peut être utilisé pour basculer rapidement entre les modes de saisie et le troisième peut être utilisé pour appeler rapidement le mode de saisie de texte.
Il existe également certains paramètres. Vous pouvez stabiliser les mouvements du curseur (cela atténuera les petits mouvements comme la poignée de main), activer les directions diagonales pour les touches du curseur (cela est utile dans ces mêmes jeux pour Cardboard), ou réduire la fréquence de transfert de données (ce qui peut aider lors de l'utilisation de l'application avec certaines anciennes consoles Android TV sur septième androïde lorsque le curseur de la souris ne suit pas les mouvements de la main).
Un peu de compatibilité
Comme je l'ai mentionné ci-dessus, l'API est devenue publique dans Android 9.0, mais l'application fonctionnera également sur n'importe quelle montre avec Android 8.0. Autrement dit, si, au redémarrage de la montre, après avoir sauté des points colorés, un grand "W" coloré apparaît et "Wear OS by Google" apparaît à la place de "Android Wear", alors tout devrait fonctionner. L'API elle-même est apparue dans Android Oreo et était légèrement différente (et également masquée), mais avant Android Pie, elle n'était activée que sur la montre. Soit dit en passant, il existe un moyen de l'activer sur les téléphones avec huit, mais cela nécessite des droits root (sur les neuf, tout fonctionnera de cette façon).
Problèmes et solutions possibles
Si, une fois connecté, le curseur de la souris se déplace de façon saccadée, environ une fois par seconde, essayez d'activer et de désactiver le mode avion, puis de vous reconnecter. Il semble qu'il y ait une erreur de gestion de l'alimentation flottante dans la pile Bluetooth ...
Pour régler la sensibilité, accédez aux paramètres de l'appareil connecté, pas à l'application.
Lorsque vous utilisez l'application avec un appareil connecté au téléviseur, il vaut la peine de basculer le téléviseur en mode «jeu». Cela devrait désactiver le post-traitement, ce qui entraîne
des retards
très importants sur les téléviseurs modernes.
Il est également judicieux de désactiver le contrôle gestuel dans les paramètres de l'horloge lorsque vous utilisez le mode souris aérienne, sinon il est très probable qu'il exécute accidentellement un geste «retour» ou «accueil».
Liens de téléchargement
Play Store (n'essayez pas d'ouvrir ce lien depuis votre téléphone, obtenez le message «l'appareil n'est pas compatible»; ouvrez le lien sur l'ordinateur ou recherchez l'application dans le Play Store sur la montre elle-même).
Code source (presque tous, sauf pour le support Oreo).