Nous commençons aujourd’hui une série de l’été qui consacrée à un sujet technologique particulier. Cette année, ce sera Android, le système d’exploitation pour équipements mobiles.
Retrouvez cette série par épisode tout au long de l’été.
Android, Qu’est ce que c’est?
La prochaine génération de systèmes d’exploitations libres ne sera pas sur pc ou sur mainframe mais bien sur les équipements mobiles que nous promenons tous les jours. Développée par le consortium Open Handset Alliance (OHA), Android est une plateforme qui inclut un système d’exploitation, un middleware et quelques applications clés. La motivation du consortium OHA à l’origine d’Android est d’accélérer l’innovation dans la technologie mobile et d’offrir à ses utilisateurs une expérience riche et peu onéreuse.
Le SDK d’Android fournit les outils et les APIs nécessaires au développement d’applications en java. A noter qu’un NDK permet également depuis quelques semaines d’envisager le dévelloppement de composants en code natif.
Dans ce tutoriel, vous allez apprendre comment développer une application d’entreprise simple avec le SDK d’Android. Vous ferez tourner cette application à l’aide de l’émulateur d’Android ou sur votre téléphone Android. Notre prototype consistera à consulter depuis son téléphone, la liste des filières de formations inter-entreprises disponibles chez Oxiane, d’obtenir à partir d’une filière sélectionnée la liste des cours dispensés et finalement le détail (durée, objectifs, public, pré requis, tarif, et calendrier) d’un cours donné. L’utilisateur pourra aussi s’inscrire à un cours à partir de son téléphone. Pour ce faire, Oxiane met à disposition des Web services REST-style (XML-RPC) qui retournent au format XML respectivement le catalogue de formation (liste des filières), la liste des cours d’une filière sélectionnée, et le détail d’un cours. Ces services seront appelés à partir de l’application Android.
Vous conclurez après ce tutoriel que le développement d’application Android est assez simple. C’est encore plus simple si vous utilisez Eclipse comme environnement de développement. Google fournit un plugin qui prend en charge la création et la gestion de votre projet afin d’accélérer votre cycle de développement. Nous allons donc au cours de ce tutoriel supposer que vous travaillez sous Eclipse. Si vous utilisez un autre IDE, adaptez nos instructions à votre environnement.
Avant de commencer le tutoriel proprement dit, nous allons d’abord procéder à une présentation des fondamentaux d’Android, nécessaires pour comprendre la suite.
Android : les fondamentaux
Les applications Android sont développées en java. Le code compilé, ainsi que les données et autres fichiers ressources requis par l’application sont packagés par l’outil AAPT(Android Asset Packaging Tool) dans un fichier archive qui porte l’extension .apk. Le code dans un fichier .apk est alors considéré comme une application.
li.pupuce {
background : transparent url(http://www.www.oxiane.com/ressources/images/subcontent_li_bg.png) no-repeat scroll 10px 0;
padding:0 0 0 35px;
margin:5px 0;
}
Les composants
Une application Android est constituée de composants. Les principaux composants sont les suivants :
- Les activités (Activities). Une activité présente une interface visuelle à l’utilisateur. Par exemple, une activité pourrait présenter une liste d’items de menu. Une application de messagerie pourrait avoir une activité qui montre une liste de contacts, une seconde activité qui permet d’écrire au contact sélectionné et d’autres activités pour consulter les anciens messages. Bien qu’elles forment ensemble une interface utilisateur cohésive, chaque activité est indépendante des autres.
- Les services. Un service n’a pas d’interface visuelle, mais tourne en arrière plan dans un intervalle de temps indéfini, en fait jusqu’à ce qu’il soit arrêté ou qu’il ait fini sa tâche. Par exemple un service peut jouer de la musique, pendant que l’utilisateur saisit son message.
- Les broadcast receivers. Un broadcast receiver est un composant qui ne fait rien d’autre que recevoir et réagir aux messages. Il est très utile pour démarrer les autres composants, notamment les services. Un broadcast receiver peut être mis en place par exemple pour lancer un service particulier au démarrage de l’équipement (message « équipement démarré »).
- Les content providers. Un content provider rend un ensemble spécifique des données de l’application disponible aux autres applications. Par défaut pour une application Android, les données ne sont pas accessibles hors de son contexte. Pour que les autres applications puissent y accéder il faut mettre en place un content provider.
Communiquer entre composants : l’intent
Les content providers sont activés lorsqu’ils sont adressés par une requête depuis le content resolver (composant auxiliaire qui permet d’accéder aux méthodes de tous les content provider).Ils ont pour charge de fournir un accès aux données. En cela, ils se doivent d’être des composants synchrones.
Mais en dehors des content providers, la communication entre composants se fait avec un couplage lâche (loosely coupled).
Les activités, services, broadcast receivers – sont activés par des messages asynchrones appelés intents. Un Intent est un objet qui transporte le contenu du message et qui contient aussi un série de données pour assurer le routage du message. Des filtres (intent-filter) sont posés au niveau des composants pour savoir s’ils sont le composant cible pour le message envoyé.
Arrêter les composants
Un content provider est actif seulement lorsqu’il répond à une requête du content resolver. Un broadcast receiver est actif seulement lorsqu’il répond à un message de broadcast. Ainsi, ces composants n’ont pas besoin d’être explicitement arrêtés par le développeur.
Les activités par contre fournissent une interface à l’utilisateur et peuvent rester longtemps actives. De façon similaire, les services peuvent tourner sur une longue période. Android a des méthodes pour arrêter les activités et les services de façon ordonnée. Une activité peut arrêter une autre (qu’elle a démarré) en appelant sa méthode finishActivity(). Un service est arrêté à l’aide de la méthode stopService(). Mais un service comme une activité peuvent aussi arrêter aussi d’eux-même – en appelant la méthode finish() sur l’activité, ou – pour le service – à la fin de sa méthode onStart()
Le fichier AndroidManifest
Pour qu’Android puisse démarrer un composant de l’application, il doit être informé de son existence. Par conséquent, les applications déclarent leurs composants dans le fichier AndridManifest.xml qui est packagé dans le fichier .apk. C’est aussi dans ce fichier que le contrôle d’accès aux méthodes des composants est mis en place.
Activités et tâches
Une activité peut démarrer d’autres activités, y compris celles définies dans une autre application. Supposons que vous souhaitiez permettre à un utilisateur d’afficher sur la carte un lieu donné. Il existe déjà une activité (map viewer) qui rend ce service. Vous n’avez donc pas besoin de la réécrire, mais de lui passer un intent avec les informations requises à travers la méthode startActivity().
Pour l’utilisateur, l’activité map viewer fait partie de votre application. Android rend possible cette expérience utilisateur en maintenant ces deux activités dans la même tâche. Dis simplement, une tâche est ce que l’utilisateur expérimente comme une application. C’est un groupe d’activités interconnectées, organisées en pile. L’activité au sommet de la pile est la cible courante des actions de l’utilisateur. Lorsque l’activité A1 démarre une autre activité A2, A2 est positionnée au sommet de la pile, elle est active. A1 reste dans la pile, en pause. Quand l’utilisateur quitte A2, A1 se retrouve au sommet de la pile et redevient active.
Après cette présentation sommaire d’Android, nous allons procéder à la découverte par la pratique de notre nouveau système. En effet nous procéderons dans la suite à l’installation du plugin d’Android sous Eclipse puis à notre premier développement d’application Android.
Auteur : Majirus Fansi
Retrouvez l’ensemble des épisodes de notre tutoriel Android, le feuiileton de l’été:
- Épisode 1 : Introduction à Android et à ses grands concepts
- Épisode 2 : Hello World!
- Épisode 3 : Appel à des services Web sous Android
- Épisode 4 : Threading, moteur de base de données SQLite
Voir également