Android Makers – Business Technology

05Nous y étions !

Cette année se tenait la première édition de Android Makers, la conférence remplaçant la célèbre Droidcon paris. Organisée par la même formidable équipe, nous nous devions de sponsoriser l’événement !

Durant deux jours, iD.apps était présent, aussi bien dans l’espace sponsors que dans les conférences. Nos développeurs ont pu assister à de nombreuses sessions, toutes plus intéressantes les unes que les autres.

C’était également l’occasion d’échanger avec d’autres équipes, voir d’autres manières d’envisager nos développements, et faire le plein d’idées et de nouvelles technologies pour l’année à venir. Le tout alimenté par Google qui fournissait même le nougat !

Nous organisions également un jeu concours pour faire gagner deux Nvidia Shield ! De nombreux candidats assoiffés de devices Android sont venus tenter leur chance, mais il ne pouvait y avoir que deux vainqueurs ! Chet Haase de Google (est-il encore besoin de le présenter ?) à même participé au second tirage au sort à la fin de la conférence.

Nos top picks

Un certain nombre de conférences nous a particulièrement plu, et nous avons donc demandé à chacun de nos développeurs présents de choisir sa session préférée et nous en parler !

 

The ART of organizing resources

 

On accorde souvent beaucoup d’importance à l’architecture d’un projet et à son organisation. Malheureusement il n’est pas rare de voir des projets où la partie Java est bien organisée et les ressources un vaste chaos. Jeroen Mols (Android developer pour Phillips Hue) nous a proposé une bonne manière d’organiser les ressources. Ce fut intéressant de voir que certaines pratiques que l’on utilise chez iD.apps étaient reprises dans sa présentation. Il a terminé sa conférence avec une cheat sheet que je partage avec vous :

 

Jérémy

Launch Screens: From a Tap to Your App

Cette session mettait en avant les différentes cinématiques de lancement d’une application Android. Elle était proposée par Cyril Mottier, qu’on ne présente plus dans la droidsphère française.

On y découvre la comparaison de deux philosophies de lancement d’applications Android : l’écran de démarrage – splash screen ou branded launch – et l’écran de substitution – ou placeholder screen. Nous y avons découvert les différents critères, liés à l’expérience utilisateur ou au marketing, qui peuvent amener à choisir l’un ou l’autre.

Si vous souhaitez vous-même vous pencher sur la question, Cyril Mottier entre également en détails dans la chronologie du lancement d’une application. Il y indique la marche à suivre pour mesurer le résultat en terme d’expérience utilisateur d’un lancement rapide du squelette de votre application.

Enfin, vous y trouverez une façon de réaliser votre propre placeholder UI, et ainsi donner l’impression à vos utilisateurs que votre application se lance en quelques centaines de millisecondes.

 

Pierre

The Fabulous Journey to Material Design Award

La première journée se terminait en apothéose avec une conférence du célèbre Taylor Ling (qui a même eu l’amabilité de dessiner les t-shirts de la conférence, nous sommes tous fans chez iD.apps !). Il présentait l’application Fabulous qui a reçu un Material Design Award l’an dernier, et les principes utilisés lors de la conception.

J’ai trouvé son approche très intéressante et positive, et honnêtement, l’application Fabulous est vraiment magnifique, ce qui en fait une source d’inspiration sans limite ! Si vous vous intéressez au design de manière générale, regardez la vidéo !

Quentin

Android Things for IoT

Android Things (ou Android pour les objets connectés) est un composant peu connu de la plateforme, mais pas le moins intéressant ! Cette conférence, présentée par le Googler Wayne Piekarski, présentait toutes les bases nécessaires au développement d’un objet connecté sous Android, aussi bien au niveau du hardware que du software. On n’a qu’une seule envie en sortant de là : acheter un Raspberry Pi 3 et équiper son frigo avec un thermomètre connecté !

Quentin

How to reactively load and cache data without even trying

La conférence de Mike Nakhimovich, du New York Times avait pour sujet “How to reactively load and cache data without even trying”. Elle présentait la librairie open source “Store” (https://github.com/NYTimes/Store), développée en interne pour répondre aux problématiques de chargement et persistance des données dans leur application Android.

En plus d’être un orateur clair et sympathique, Mike offre à la communauté des développeurs Android un socle générique pour standardiser le workflow d’acquisition et persistance des données.

La librairie, développée sur une base de RxJava, est un framework visionnaire et très prometteur… Celui-ci offre de nombreuses possibilités de personnalisation (du requêtage, parsing et caching), et des middlewares sont déjà disponibles pour l’intégration avec des librairies tierces bien connues telles que Gson, Moshi, Guava Cache, ou encore Okio.

Aujourd’hui, on ne se passerait plus de Glide ou Picasso qui ont fait la même chose pour le chargement d’images. Il y a fort à parier que ce sera le cas demain pour la gestion de nos données avec Store.

Thank you, Mike!

Christophe

Toothpick: a fresh approach to Dependency Injection on Android

Il y a quelques années, j’ai eu l’occasion d’utiliser RoboGuice. Il était facile à utiliser mais, malheureusement, relativement peu performant. Et puis, dans le cadre d’un autre projet, j’ai voulu utiliser Dagger. Et là… La performance était au rendez-vous, à tout le moins du point de vue de l’exécution ! Côté développeur, la performance a été revue à la baisse 🙂

C’est donc en espérant retrouver cette simplicité dans la syntaxe tout en gardant des performances correctes que je suis allé voir la conférence sur Toothpick. Et j’ai été conquis : un framework d’injection de dépendances simple et performant ! Avec en prime de nouveaux scopes pour des cas particuliers pas si rares que ça dans nos développements (tunnels de paiement, rotation d’écran).

Il va maintenant falloir tester cela sur de nouveaux projets, et voir si les promesses de l'(excellent) orateur sont tenues avant d’inclure Toothpick dans notre trousse à outils.

Retrouvez tous les slides de la conférence ici :

David

L’évolution des notifications – Tips & tricks

Notification : artefact d’interface facilitant les interactions et les feedbacks d’une application avec son utilisateur via le système.

Dans cette présentation, Jeremie Martinez, Trainline (Captain Train), nous a présenté l’évolution des notifications depuis les origines d’Android jusqu’à Marshmallow avec une pointe de visibilité sur Nougat.

Celles-ci sont devenues au fur et à mesure du temps de plus en plus complètes tout en gardant leur simplicité graphique. Mais faut-il encore ne pas en abuser pour ne pas spammer les utilisateurs et les noyer d’informations inutiles !

“Même #Batman peut être spammé de notifications pour sauver #Gotham

Ce simple graphique permet de positionner votre application et de définir si celle-ci a réellement besoin de notifier l’utilisateur pour lui apporter des informations utiles.

Dans le cas présenté, Trainline, l’application informe l’utilisateur à tous les moments cruciaux de son voyage :

  • Quelques heures avant
  • Lorsque le train ne va pas tarder
  • A l’arrivée du train sur le quai
  • Au changement d’horaire possible (avec une mise en couleur du titre et des actions pour se différencier des autres informations moins sensibles)
  • A l’arrivée du train à sa destination finale
  • Et même quelques minutes après l’arrivée pour souhaiter une bonne journée au voyageur ! (notification qui s’auto efface au bout de 15 minutes d’affichage sans action de l’utilisateur)

Toutes ces notifications sont informatives mais permettent une certaine sérénité pour le voyageur. Pour ma part la dernière notification est à considérer comme du spam, pour Trainline c’était juste pour le fun.

Pour conclure il faut peu de notifications pour avoir un utilisateur heureux.

Vous pouvez retrouver tous les slides de la conférence ici :

Melaine

 

Ivre, il commercialisa des apps Android tout seul

Développer ou faire développer son application pour devenir riche voire très riche : utopie ou réalité ? Tel est le sujet abordé par Pierre Benayoun dans sa conférence.

Une présentation pleine de gifs !

A travers son expérience, Pierre Benayoun, nous a montré quels étaient les points clés pour la réalisation et la commercialisation d’une application :

  • Qu’est ce qu’une bonne appli ?
  • Comment l’application trouve-t-elle son public ?
  • Comment gagne t’on de l’argent ?

Plusieurs paramètres non négligeables entrent en ligne de compte pour répondre à ces 3 questions

mais surtout ne pas hésiter à faire, refaire et re-refaire tout en analysant et en apprenant de ses succès comme de ses erreurs.

Tout en gardant à l’esprit que …

L’instant hype de la présentation : la notation rôti avec les mains :

  • 5 doigts OK j’ai tout compris et la présentation était parfaite
  • 0 doigt, poing fermé (petit rôti) : présentation suicidaire, j’aurais mieux fait de rester au lit 😉

Vous pouvez retrouver tous les slides de la conférence ici :

https://docs.google.com/presentation/d/1afPtkSb_BUtD6t61wV2eaVLVzbnYQ9D6quaFCG9D4LI

Melaine

 

Le design mobile c’est pas facile

Nous étions présents dans l’espace sponsors, nous étions dans les rangées de spectateurs avides de connaissances, mais nous étions aussi là-bas, dans la lumière, sur l’estrade tant convoitée des speakers d’Android Makers.

Quentin, un de nos experts Android, passionné de design (et de séries), nous a présenté les difficultés que nous pouvons (et que vous pouvez) rencontrer face à un client ou quelqu’un qui n’est pas du métier.

A travers différentes saynètes, il nous a présenté les solutions qui peuvent être envisagées, afin que tout le monde y trouve son compte : le client, le développeur, le designer, mais surtout, l’utilisateur final.

Vous pouvez retrouver tous les slides de la conférence ici :

David

Show must go on

Pour terminer la conférence, nous avons assisté à un véritable spectacle de la part de Chet, nous laissant ravis de ces deux jours et le sourire aux lèvres, la tête remplie de nouvelles idées à essayer sur nos prochaines applications. Nous vous laissons avec la vidéo si vous souhaitez comprendre un peu mieux le titre de cet article, ou juste rire un moment.

 

Merci à iD.apps pour l’expérience, et à l’an prochain !

Introduction à Android TV

Les applications TV sont aujourd’hui présentes pour mettre en avant du contenu en accès rapide et avec très peu de contraintes. Afin de conserver la meilleure expérience possible il est nécessaire de respecter certains aspects.

Au début, le développement d’une application TV est assez proche du développement d’une application smartphone et tablette. Cependant la documentation pour ce type d’appareil est très pauvre.

Pour aider les développeurs, Google recommande de respecter une certaine ergonomie, expliquée dans une documentation de base (https://www.google.com/design/spec-tv/android-tv/introduction.html). Ce qui change globalement c’est la navigation. En effet, sur TV, la navigation dans l’application se fait par l’intermédiaire de la télécommande, sans contact tactile avec l’écran. C’est pourquoi l’ergonomie des applications TV ressemble finalement assez peu à ce dont on a l’habitude et possède ses propres codes, gestes.

La librairie Leanback, mise à disposition par Google, propose plusieurs composants et différents types de fragments. Certains de ces composants sont présentés dans la documentation précédemment évoquée. Malheureusement celle-ci ne propose pas d’exemple de code. Pour vraiment pouvoir vous lancer dans la création de votre première application TV, il faut se référer au tutoriel officiel suivant : https://codelabs.developers.google.com/codelabs/androidtv-adding-leanback/index.html?index=..%2F..%2Findex#0

Ce tutoriel présente les composants et fragments de base via des exemples de code bien expliqués, bien utile pour se familiariser rapidement avec les applications TV.

Pour aller plus loin, le DIY est de mise. En effet, le développement d’applications TV n’étant pas encore très répandu il faut chercher ce que l’on souhaite faire dans des exemples d’applications proposés par Google. Les deux meilleurs samples de code disponibles et mis à jour régulièrement sur GitHub sont :

atv-leanback-all

Fragments et vues abordés dans l’exemple Github androidtv-Leanback

Figure 2 : Fragments et vues abordés dans l'exemple Github leanback-showcase

Fragments et vues abordés dans l’exemple Github leanback-showcase

Ces deux projets se complètent bien même si le deuxième présente plus de diversité.

 

Ça donne quoi en vrai ?

Dans notre cas, nous avons développé une application présentant différents quiz regroupés par thèmes.

Cette application nous a servi d’expérience pour tester certaines fonctionnalités d’Android TV.

Nous avons commencé par implémenter un BrowseFragment (https://developer.android.com/reference/android/support/v17/leanback/app/BrowseFragment.html) pour l’affichage des quiz de chaque thème. L’ajout de listes de quiz se fait via un ArrayObjectAdapter utilisant un ListRowPresenter (adapter permettant d’ajouter plusieurs élements de type ListRow contenant un header et une liste de card).

Ensuite pour chaque élément de la liste il est possible d’utiliser des CardViews prédéfinis ou des CardViews custom selon le besoin. Le BrowseFragment est au début aisé à prendre en main de part les exemples cités précédemment. En effet, l’adapter permettant d’ajouter des lignes de Cards dans le fragment est plutôt intuitif. En revanche lorsque l’on essaie de customiser les vues la complexité s’accroit car il faut se débrouiller par soi-même pour arriver au but que l’on s’est donné. Il y a en effet très peu d’informations sur les vues personnalisées dans les tutoriels.

Figure 3 : BrowseFragment présentant la liste des thèmes et les quiz correspondant

Le BrowseFragment présente la liste des thèmes et les quiz correspondants

Nous avons également utilisé le DetailFragment afin d’afficher le détail d’un quiz. Par défaut la description et l’image adoptent des layouts prédéfinis, mais il est bien entendu possible d’utiliser les nôtres. Dans ce fragment il est possible d’ajouter des listes de suggestions d’éléments. Dans notre cas, nous avons suggéré les quiz du même thème. Le DetailFragment est le plus difficile à mettre en place car aucun exemple n’explique concrètement comment mettre en place l’adapter afin de réaliser une apparence personnalisée. Notre conseil pour réussir une page sympa est d’utiliser un ArrayObjectAdapter avec en paramètre un ClassPresenterSelector (cela permet d’ajouter et d’ordonner plusieurs adapter différents afin, par exemple, de pouvoir proposer des suggestions sous la description de l’élément courant).

Figure 4 : En tête du DetailFragment d’un quiz

Entête du DetailFragment d’un quiz

Figure 5 : Bas de page du DetailFragment d’un quiz, liste de suggestion

Bas de page du DetailFragment d’un quiz avec une liste de suggestions

Pour la recherche d’un quiz nous avons exploité le SearchFragment qui lui est facile à prendre en main. Le fragment de base suffit, il faut simplement spécifier les différents adapter à utiliser pour l’affichage des résultats.

Figure 6 : SearchFragment après la recherche “sport”

SearchFragment après la recherche “sport”

Le GuidedStepFragment est quant à lui très pratique et facile d’utilisation pour de la configuration. En revanche, dans notre cas, nous l’avons utilisé pour la connexion via email et mot de passe, et cela a posé quelques complications lors de l’ajout des champs de saisie de texte. En effet, ce fragment est principalement élaboré pour contenir des boutons classiques et/ou radios.

Figure 7 : GuidedStepFragment proposant le choix du type de connexion

GuidedStepFragment qui propose le choix du type de connexion

Pour notre application nous avons également implémenté une page de paramètres via le SettingsFragment. Cette page se présente comme un Drawer sur la partie droite de l’écran. Le fichier XML de settings est identique à celui que l’on peut trouver sur les smartphones/tablettes.

Figure 8 : SettingsFragment donnant le choix d’activation de certaines fonctionnalités

SettingsFragment qui donne le choix d’activation de certaines fonctionnalités

 

Le mot de la fin

Comme vous avez pu le constater, la réalisation de cette application nous a permis de passer en revue de nombreux composants Android TV fournis par Google.

La programmation d’applications pour Android TV est très intéressante car elle permet une approche différente des applications utilisées sur nos smartphones/tablettes même si une bonne dose de DIY est nécessaire !

Crosswalk : la WebView du futur !

Comme tous les ans avant la Google I/O, il y a la soirée Day 0 Intel Party. Le nombre de participants à l’I/O ayant augmenté cette année, ce fut encore plus difficile d’y entrer. Mais armés de notre patience, nous avons tout de même réussi ce challenge.

Nous sommes donc entrés dans un lieu insolite, à mi-chemin entre le bar et la place à Food Trucks, le tout accompagné de stands sur divers projets Intel liés au mobile. Le sujet de cet article est l’un de ces projets qui pourra répondre à un besoin que nous avons fréquemment : la WebView.

Aujourd’hui, pour intégrer une WebView dans notre application, nous avons, au choix, les Chrome Custom Tabs, ou une WebView classique.

Intégrer une WebView directement dans l’application n’est pas forcément compliqué, mais amène deux soucis majeurs : les performances et les comportements anormaux qui diffèrent par rapport au browser natif (ou pas à jour).

Intel a pensé à nous et a sorti une librairie qui répond à ces problèmes : Crosswalk (https://crosswalk-project.org/). Celle-ci est disponible sur Android, iOS, WP et Cordova.

Elle intègre une WebView performante qui a toujours le même comportement suivant les versions d’Android. Il s’agit ni plus ni moins que d’une réimplementation de Chromium et son moteur Blink, sous forme de librairie.

Elle a aussi l’avantage d’intégrer des APIs non disponibles dans la WebView standard, comme :

  • WebRTC
  • WebGL
  • Vibration API
  • Presentation API
  • Predictable layout
  • CSS feature queries

Sur le papier, le projet vend du rêve mais il faut tout de même noter un point négatif : le poids de la librairie (19 Mo).

Si cet inconvénient n’est pas un problème pour votre projet, je vous invite fortement à tester cette librairie qui pourra vous éviter pas mal de galères. La migration est très simple car la WebView de Crosswalk a la même interface que la Webview standard, il faudra juste modifier les imports et le nom de la classe.

Pour en savoir plus, voici une vidéo de présentation faite par Intel sur le sujet.

iD.apps sponsor de la Droidcon Paris 2014 les 22 & 23 septembre prochains

Cette année encore, iD.apps sponsorise la Droidcon Paris : l’événement dédié au développement Android.

iD.apps tiendra un stand afin de vous accueillir et vous présenter son activité. Un concours surprise vous y sera proposé vous permettant de gagner une SmartWatch Motorola 360. Enfin 2 experts Android d’iD.apps, Quentin et Guilhem animeront une conférence chacun.

Quentin Sallat

Quentin, expert Android chez iD.apps, vous proposera une conférence d’1 heure sur le passage d’Holo à Material Design.

Avec l’arrivée d’Android L, Google a décidé d’apporter à son OS mobile un nouvel ensemble de règles visuelles nommé Material Design. Mais il n’est pour autant pas nécessaire de changer intégralement le design de son application pour respecter ces nouvelles guidelines. 
Cette conférence vous montrera en direct comment passer de Holo à Material au travers d’une application. Du floating button aux cartes à la Google Now, en passant par les nouvelles APIs d’animation, vous saurez tout ce qui est nécessaire pour effectuer une transition en douceur.

A vos agendas : conférence mardi 23 septembre à 15h55

Guilhem Duché

Guilhem, responsable innovation et expert Android animera un Barcamp sur l’utilisation d’un microserveur http dans une application Android.

Certaines applications bien connues comme Airdroid proposent aux utilisateurs d’interagir avec leur application mobile depuis le navigateur de leur ordinateur de bureau. Ce Barcamp vous présentera comment utiliser ce type de fonctionnalité. Il évoquera les cas d’usage qui peuvent en découler et vous montrera en détail des cas d’implémentation concrets avec une application de partage et une application ChromeCast orientée données.

A vos agendas : Barcamp lundi 22 septembre à 14h20

Nous espérons vous voir nombreux à ces présentations et échanger plus longuement autour de nos experts Android sur le stand d’iD.apps.

A très bientôt!