Xamarin et Android Wear

Partie 1 : Bases indispensables pour bien démarrer

David Poulin

J'ai eu récemment l'occasion de créer une application Android Wear pour un client avec Xamarin. Ce projet, bien qu'intéressant, ne s'est pas fait sans peine : Android Wear reste aujourd'hui encore en preview et l'est davantage avec Xamarin. Je vous propose de revenir ensemble sur ce long parcours tout en redéfinissant l'environnement de développement pour ceux à qui il ne serait pas familier.

Vous pouvez commenter cet article sur le forum : Commentez ♪

- Titre : Xamarin et Android Wear

- Auteur : David Poulin

- Parution : 16 décembre 2014

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2015 David Poulin. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Le contexte applicatif

- II-A. Les wearables

- II-B. La domotique

- II-C. Xamarin

- II-D. Android Wear

- III. Mise en place de l'environnement de développement technique

- III-A. Installation et configuration de Xamarin

- III-B. Installation de Android Studio

- III-C. Les émulateurs

- IV. Le débogage

- IV-A. Configuration des appareils

- IV-B. Débogage avec des appareils

- V. Conclusion

- VI. Remerciements

I - Introduction

Cet article bien que s'adressant à tout type de développeurs implique un « minimum » de connaissances sur Xamarin et sur Android, aussi petites soient-elles. Par ailleurs, pour assurer un maximum de lisibilité, ce dossier a été écrit en trois parties que nous rappellerons toujours en introduction. S'il s'agit d'un retour d'expérience, c'est aussi un petit guide pour vous aider à bien démarrer sur Android Wear avec Xamarin.

- Xamarin et Android Wear - Partie 1 : Les bases indispensables pour bien démarrer

- Xamarin et Android Wear - Partie 2 : L'apparence visuelle en détail

- Xamarin et Android Wear - Partie 3 : Poser les briques d'une application évoluée Début de mon article…

II - Le contexte applicatif

Dans le cadre du salon European Utility Week (EUW 2014 à Amsterdam), évènement dédié à la domotique et aux usages d'ambiances intelligentes, le client IJenko (dont j'ai déjà pu parler il y a quelque temps dans un article et encore prochainement dans un autre) voulait démontrer que leur solution domotique peut être très accessible et utilisable avec des objets électroniques connectés très récents. Bien plus que cela, leur souhait était de pouvoir interpeller sur l'intégration de ces objets avec la maison connectée. Sur la longue liste de ces objets, c'est sur la Kinect v2 et la montre Android Wear LG G Watch que leurs choix s'étaient portés.
Parler de ces deux appareils serait totalement fascinant, dans cet article, nous n'évoquerons que la partie concernant la montre. Afin d'être mieux préparés au sujet, nous allons revoir les termes essentiels à sa bonne compréhension, à savoir, les wearables, la domotique, Xamarin, la domotique et Android Wear.

II-A - Les wearables

Lorsque sont évoqués les objets connectés, beaucoup pensent aux wearables. Ce mot, presque sans équivalence en français (ou en plus de mots), est petit à petit entré dans les tendances. Mais qu'est-ce qu'un wearable ? Tout d'abord, le terme « wearable » vient souvent de l'abréviation de l'expression « wearable device » ou « wearable technology ». La traduction la plus adaptée serait « smart object », soit un appareil intelligent, quel qu'il soit, équipé de capteurs ou pas, mais ayant surtout la faculté d'être porté sur soi (plus ou moins facilement…) et avec une certaine intelligence qu'elle soit indépendante ou déportée, ou les deux. On parle ici de smartwatches (montres intelligentes), smartglasses (lunettes intelligentes), smartband (bracelet intelligent), smartshirt (t-shirt intelligent), etc. L'intérêt de ces objets intelligents est de permettre à celui qui les porte d'accéder à des informations « temps réel », ou des données traquées quant à son comportement, ses habitudes et faire en sorte que n'importe quel usage habituel devienne plus pratique.
Un exemple concret est de pouvoir contrôler (ou être au courant) des choses depuis sa montre au lieu du téléphone. La LG Watch cadre parfaitement avec ce cas, nous en parlerons un peu plus tard.

II-B - La domotique

Faut-il vraiment encore la définir ? Mais pour ceux qui ne sauraient pas ce dont il s'agit, c'est un ensemble de techniques qui permet de dématérialiser la gestion des systèmes électroniques de la maison (ou visant à transformer ce qui ne l'est pas vers de l'électronique). Encore plus simple, c'est tout ce qui permettra à votre maison d'être une smarthouse (maison connectée :-)). Mon prochain article après ce dossier y sera entièrement dédié et nous reviendrons plus en détail sur ces systèmes.

II-C - Xamarin

Est-il là encore nécessaire de présenter Xamarin ? Cyril a déjà eu l'occasion de bloguer un sur le sujet et même d'assurer des formations. Par ailleurs, nombre de meetups ont déjà eu lieu sur cette technologie. Toutefois, s'il fallait résumer en très peu de mots : Xamarin est un environnement/plate-forme de développement qui permet de réutiliser ses compétences de développeur C# pour créer des applications natives à destination de une ou plusieurs plates-formes (iOS, Android, Windows Phone, etc.). Si nos compétences C# seront réutilisées à un peu plus de 60/70 %, une petite partie du développement nécessite un minimum de connaissances de la plate-forme cible (le plus souvent pour l'interface utilisateur, le cycle de vie de l'application, etc.). Même si aujourd'hui des techniques permettent de partager une bonne partie de l'UI (Xamarin Forms), certaines limitations imposent de conserver le développement de l'UI avec le langage de la plate-forme cible. Vous souhaitez en savoir plus ou être formé ? Rendez-vous sur notre site et retrouvez l'ensemble de nos formations Xamarin.

II-D - Android Wear

Android Wear est le système dont est équipée la montre LG G Watch. Android Wear est une version d'Android spécifique (version 4.4 W) pour les appareils portables à (très) faible puissance (comme c'est le cas des smartwatches). Si le cœur de cette version reste similaire aux autres versions d'Android, elle embarque toutefois des contrôles/API spécifiques dédiés à ces appareils à faible puissance, et ce pour plusieurs raisons : très petit écran, écran carré ou rond, gestuelles différentes, etc. Android Wear ne se contente pas d'être un simple miroir de l'OS quant aux notifications des applications, mais bien plus encore. C'est un système capable de lancer des applications Android autonomes et de communiquer avec le téléphone. La montre que j'ai choisie était la LG G Watch (la seule disponible au moment où j'ai pu travailler sur le projet et la plus ouverte pour pouvoir travailler sans restriction). Quelques points importants sont à noter :

- pour installer une application sur un appareil portable Android Wear, il faudra passer absolument par un appareil (tablette ou téléphone) sous Android 4.3 au minimum (API 18) ;

- il n'est pas possible d'exécuter des requêtes http directement depuis la smartwatch, un pont sera absolument indispensable (une application Android sur un appareil tablette ou téléphone). La communication se fera par des API de communication dont nous parlerons plus tard.

Voilà notre contexte défini, nous sommes prêts à parler de l'environnement technique.

III - Mise en place de l'environnement de développement technique

Si vous êtes habitué à n'utiliser qu'un environnement de développement différent de Xamarin (ou même aucun environnement de développement), vous allez probablement trouver les étapes à venir fastidieuses. Mais elles sont indispensables pour pouvoir réaliser notre projet.

III-A - Installation et configuration de Xamarin

L'installation de Xamarin ne présente pas de difficulté particulière. D'une part, l'équipe de Xamarin a mis en place des tutoriels pour vous accompagner pendant ces étapes, d'autre part, l'installeur Xamarin installe automatiquement l'ensemble des composants dont on a besoin.
Important ! Par défaut, j'avais remarqué sur d'autres machines de travail que Xamarin installait le SDK Android dans des chemins liés au profil utilisateur. J'avais donc pris ce « problème » à l'envers, j'ai d'abord installé le SDK Android sur la partition que je souhaitais, puis j'ai installé Xamarin qui a automatiquement trouvé mon répertoire d'installation. Je vous recommande de procéder ainsi sauf si l'emplacement du répertoire d'installation du SDK Android vous importe peu. Quand tout est installé, il faut s'assurer que l'ensemble des éléments nécessaires à la création des applications Android Wear est installé. Pour cela, il faut ouvrir Xamarin puis Android SDK Manager et installer la version 4.4W.X d'Android disponible (API 20).

Il vous faudra également installer les extras ci-dessous ainsi que les outils Android spécifiques à cette version (au moins Android Support Repository, Android Support Library, Google Play Services, Google Repository et Google USB Driver).

Veillez aussi à ce que les versions des outils du SDK soient à jour pour les plates-formes que vous utilisez.

Et voilà, notre environnement est prêt ! Malgré cela, tous les éléments ne sont pas encore vraiment en place pour créer nos applications de façon optimale. D'autres outils sont nécessaires.

III-B - Installation de Android Studio

Je sais, si vous êtes développeur .NET, vous aurez certainement un blocage et vous demanderez pourquoi installer cet outil qui permet de ne construire que des applications natives en Java ? J'ai une réponse très simple.
Xamarin n'est pas encore au point pour le design d'interface des applications Android Wear et il est possible de rencontrer quelques bogues avec le design. Si vous êtes comme moi et que vous souhaitez avoir un visuel de votre application dans le designer (afin d'éviter le déploiement systématique de votre application pour vérifier son design), c'est un outil indispensable, léger et assez intuitif. Le guide d'installation est lui aussi clair. Il faudra s'assurer bien entendu que le chemin du SDK utilisé par Android Studio est le même que celui qu'utilise Xamarin (sinon, vous téléchargerez plusieurs fois le SDK Android et diminuerez ainsi l'espace disponible sur votre machine). Quand Android Studio est installé, il est possible de vérifier le chemin du SDK dans File > Project Structure.

III-C - Les émulateurs

Si vous utilisez Xamarin, vous pouvez installer Xamarin Android Player, mais vous ne pourrez pas l'utiliser pour déboguer votre application Android Wear. En effet, il n'y a que deux appareils disponibles pour des versions d'Android qui ne supportent pas le système Android Wear.

Fort heureusement, il est tout à fait possible de créer des émulateurs Android depuis Xamarin via le menu Tools (Outils) puis Open Google Emulator Manager (Ouvrir le gestionnaire d'émulateurs de Google). Donc, vous aurez au moins une image à créer, 1-une image d'un appareil sous Android Wear. J'avoue ne pas du tout avoir utilisé l'émulateur Android (que ce soit celui de Xamarin ou celui de Google) pour émuler un appareil Android 4.3 ou 4.4, car je disposais d'appareils physiques. J'avoue d'ailleurs que je préfère déployer sur des appareils réels pour plus de simplicité (et rapidité). Pour créer une image, c'est très simple. Une fois que le Google Emulator Manager est ouvert, il faut se rendre dans la liste de définitions des appareils, puis choisir la version de l'appareil que vous souhaitez pour créer votre A(ndroid) V(irtual) D(evices).

Dans mon cas, j'ai choisi de créer un appareil virtuel pour ma montre LG G Watch même si je dispose de la montre : cela peut s'avérer pratique lorsque votre ultra portable dispose de peu de ports USB.

Notez que lors de la création de l'appareil, il faut veiller à vérifier que la bonne cible de l'OS est sélectionnée, mais surtout que le CPU est Android Wear ARM. (Cela ne fonctionne pas avec les versions de CPU Intel.) Une fois que vous avez créé votre appareil virtuel, vous recevez un message qui vous confirme que c'est bon.

D'accord, on ne voit pas de « success », mais je vous l'assure, c'est quand même bon :-). Et en validant sur OK, vous pouvez vérifier que l'appareil virtuel existe dans la liste de vos appareils virtuels Android.

Vous pouvez aussi utiliser Genymotion pour émuler Android. Il apporte certes un peu moins d'austérité à ce que propose par défaut Google, peut être utilisé avec Xamarin ou encore Android Studio (via des plugins). Toutefois, Genymotion ne propose pas encore de créer une machine virtuelle pour Android Wear au moment où j'écris ces lignes.

IV - Le débogage

IV-A - Configuration des appareils

Il faudra veiller à installer l'application Android Wear sur votre téléphone ou votre tablette. Elle vous permettra de communiquer (bien plus que le simple débogage) avec votre smartwatch, mais également de la mettre à jour. De nombreuses mises à jour peuvent vous être proposées sur votre montre. Si vous n'en avez pas fait, soyez donc patient.

IV-B - Débogage avec des appareils

Si vous disposez de vrais appareils comme j'ai pu en avoir pour ce projet, c'est vraiment l'idéal. Il s'agissait d'un Samsung Galaxy S4 et d'une montre LG G Watch. Si Samsung met à disposition des drivers pour ses téléphones, LG n'en propose pas. Et si vos appareils ne sont pas reconnus par le système, il sera impossible de déployer vos applications dessus. La procédure la plus courante si vos appareils ne sont donc pas reconnus est la suivante :

- ouvrez le gestionnaire de périphériques, puis cliquez sur votre appareil non reconnu (en vous assurant que c'est le téléphone ou la montre) puis sélectionnez l'option permettant de mettre à jour les drivers ;

- sélectionnez l'option pour rechercher les drivers sur l'ordinateur, puis choisissez le driver parmi la liste de drivers présents sur l'ordinateur ;

- choisissez Appareil Android (Android Device) ; puis cliquez sur Suivant ;

- dans la liste des fabricants, il faut choisir Google puis « Android ADB Interface Version x.x.x.x » (en tout cas la plus récente) puis valider le choix.

Et Windows devrait installer automatiquement le driver (dans le cadre d'une installation sous Windows). Dans mon cas, cette manipulation a été requise uniquement pour la montre. Pour info, la liste de ces drivers existe grâce à l'option qui avait été sélectionnée lors de l'installation du SDK Android Wear (Google USB Drivers). Une fois cette étape réalisée, il faudra penser à activer le mode Développer sur chaque appareil (le téléphone et la montre). Sur chacun d'entre eux, la manipulation a été similaire : j'ai dû me rendre dans les paramètres de l'appareil, puis, taper sept fois sur le numéro de Build (et l'option apparaît ainsi dans les paramètres).

V - Conclusion

Voilà, nous sommes arrivés à la fin de cette première partie. Après avoir survolé le contexte applicatif, et mis en place notre environnement de développement, nous allons pouvoir entrer dans le vif du sujet pour pouvoir concevoir notre application Android Wear. Une fois n'est pas coutume, c'est par la partie visuelle que nous commencerons.

VI - Remerciements

Cet article a été publié avec l'aimable autorisation de SOAT, société d'expertise et de conseil en informatique.

Nous tenons à remercier Claude LELOUP pour la relecture orthographique et Marie-Hélène Delacroix pour la mise au gabarit.