Les terminaux Android
Les terminaux Android seront essentiellement des téléphones mobiles, bien qu’il soit question d’utiliser cette technologie sur d’autres plates-formes (comme les tablettes PC). Pour les développeurs, ceci a des avantages et des inconvénients. Du côté des avantages, les téléphones Android qui arrivent sur le marché sont assez jolis. Si l’offre de services Internet pour les mobiles remonte au milieu des années 1990, avec HDML (Handheld Device Markup Language), ce n’est que depuis ces dernières années que l’on dispose de téléphones capables d’exploiter pleinement l’accès à Internet. Grâce aux SMS et à des produits comme l’iPhone d’Apple, les téléphones qui peuvent servir de terminaux Internet deviennent de plus en plus courants. Travailler sur des applications Android permet donc d’acquérir une expérience non négligeable dans une technologie moderne (Android) et dans un segment de marché qui croît rapidement (celui des terminaux mobiles pour Internet). Le problème intervient lorsqu’il s’agit de programmer. Quiconque a déjà écrit des programmes pour des PDA (Personal Digital Assistant) ou des téléphones portables s’est heurté aux inconvénients de leur miniaturisation : ● Les écrans sont sous-dimensionnés. ● Les claviers, quand ils existent, sont minuscules. ● Les dispositifs de pointage, quand il y en a, sont peu pratiques (qui n’a pas déjà perdu son stylet ?) ou imprécis (les gros doigts se marient mal avec les écrans tactiles). ● La vitesse du processeur et la taille de la mémoire sont ridicules par rapport à celles des machines de bureau et des serveurs auxquels nous sommes habitués. ● On peut utiliser le langage de programmation et le framework de développement que l’on souhaite, à condition que ce soit celui qu’a choisi le constructeur du terminal. ● Etc. En outre, les applications qui s’exécutent sur un téléphone portable doivent gérer le fait qu’il s’agit justement d’un téléphone. Les utilisateurs sont généralement assez irrités lorsque leur mobile ne fonctionne pas, et c’est la raison pour laquelle la campagne publicitaire « Can you hear me now? » de Verizon a si bien fonctionné ces dernières années. De même, ces mêmes personnes seront très mécontentes si votre programme perturbe leur téléphone, pour les raisons suivantes : ● Il occupe tellement le processeur qu’elles ne peuvent plus recevoir d’appels. ● Il ne s’intègre pas correctement au système d’exploitation de leur mobile, de sorte que l’application ne passe pas en arrière-plan lorsqu’elles reçoivent ou doivent effectuer un appel. ● Il provoque un plantage de leur téléphone à cause d’une fuite de mémoire. Le développement de programmes pour un téléphone portable est donc différent de l’écriture d’applications pour des machines de bureau, du développement de sites web ou de la création de programmes serveurs. Vous finirez par utiliser des outils et des frameworks différents et vos programmes auront des limites auxquelles vous n’êtes pas habitué. Android essaie de vous faciliter les choses : ● Il fournit un langage de programmation connu (Java), avec des bibliothèques relativement classiques (certaines API d’Apache, par exemple), ainsi qu’un support pour les outils auxquels vous êtes peut-être habitué (Eclipse, notamment). ● Il vous offre un framework suffisamment rigide et étanche pour que vos programmes s’exécutent « correctement » sur le téléphone, sans interférer avec les autres applications ou le système d’exploitation lui-même. Comme vous vous en doutez sûrement, l’essentiel de ce livre s’intéresse à ce framework et à la façon d’écrire des programmes qui fonctionnent dans son cadre et tirent parti de ses possibilités.
Contenu d’un programme Android
Le développeur d’une application classique est « le seul maître à bord ». Il peut ouvrir la fenêtre principale de son programme, ses fenêtres filles – les boîtes de dialogue, par exemple – comme il le souhaite. De son point de vue, il est seul au monde ; il tire parti des fonctionnalités du système d’exploitation mais ne s’occupe pas des autres programmes susceptibles de s’exécuter en même temps que son programme. S’il doit interagir avec d’autres applications, il passe généralement par une API, comme JDBC (ou les frameworks qui reposent sur lui) pour communiquer avec MySQL ou un autre SGBDR. Android utilise les mêmes concepts, mais proposés de façon différente, avec une structure permettant de mieux protéger le fonctionnement des téléphones. Activity (Activité) La brique de base de l’interface utilisateur s’appelle activity (activité). Vous pouvez la considérer comme l’équivalent Android de la fenêtre ou de la boîte de dialogue d’une application classique. Bien que des activités puissent ne pas avoir d’interface utilisateur, un code « invisible » sera délivré le plus souvent sous la forme de fournisseurs de contenus (content provider) ou de services. Content providers (fournisseurs de contenus) Les fournisseurs de contenus offrent un niveau d’abstraction pour toutes les données stockées sur le terminal et accessibles aux différentes applications. Le modèle de développement Android encourage la mise à disposition de ses propres données aux autres programmes – construire un content provider permet d’obtenir ce résultat tout en gardant un contrôle total sur la façon dont on accédera aux données. Intents (intentions) Les intentions sont des messages système. Elles sont émises par le terminal pour prévenir les applications de la survenue de différents événements, que ce soit une modification matérielle (comme l’insertion d’une carte SD) ou l’arrivée de données (telle la réception d’un SMS), en passant par les événements des applications elles-mêmes (votre activité a été lancée à partir du menu principal du terminal, par exemple). Vous pouvez non seulement répondre aux intentions, mais également créer les vôtres afin de lancer d’autres activités ou pour vous prévenir qu’une situation particulière a lieu (vous pouvez, par exemple, émettre l’intention X lorsque l’utilisateur est à moins de 100 mètres d’un emplacement Y). Services Les activités, les fournisseurs de contenus et les récepteurs d’intentions ont une durée de vie limitée et peuvent être éteints à tout moment. Les services sont en revanche conçus pour durer et, si nécessaire, indépendamment de toute activité. Vous pouvez, par exemple, utiliser un service pour vérifier les mises à jour d’un flux RSS ou pour jouer de la musique, même si l’activité de contrôle n’est plus en cours d’exécution.
Fonctionnalités à votre disposition
Android fournit un certain nombre de fonctionnalités pour vous aider à développer des applications. Stockage Vous pouvez empaqueter (packager) des fichiers de données dans une application, pour y stocker ce qui ne changera jamais – les icônes ou les fichiers d’aide, par exemple. Vous pouvez également réserver un petit emplacement sur le terminal lui-même, pour y stocker une base de données ou des fichiers contenant des informations nécessaires à votre application et saisies par l’utilisateur ou récupérées à partir d’une autre source. Si l’utilisateur fournit un espace de stockage comme une carte SD, celui-ci peut également être lu et écrit en fonction des besoins. Réseau Les terminaux Android sont généralement conçus pour être utilisés avec Internet, via un support de communication quelconque. Vous pouvez tirer parti de cet accès à Internet à n’importe quel niveau, des sockets brutes de Java à un widget de navigateur web intégré que vous pouvez intégrer dans votre application. Multimédia Les terminaux Android permettent d’enregistrer et de jouer de la musique et de la vidéo. Bien que les caractéristiques spécifiques varient en fonction des modèles, vous pouvez connaître celles qui sont disponibles et tirer parti des fonctionnalités multimédias offertes, que ce soit pour écouter de la musique, prendre des photos ou enregistrer des mémos vocaux. GPS Les fournisseurs de positionnement, comme GPS, permettent d’indiquer aux applications où se trouve le terminal. Il vous est alors possible d’afficher des cartes ou d’utiliser ces données géographiques pour retrouver la trace du terminal s’il a été volé, par exemple. Services téléphoniques Évidemment, les terminaux Android sont généralement des téléphones, ce qui permet à vos programmes de passer des appels, d’envoyer et de recevoir des SMS et de réaliser tout ce que vous êtes en droit d’attendre d’une technologie téléphonique moderne.