Vous êtes sur la page 1sur 16

Kawenga, territoires numriques

Lieu rgional d'exprimentation arts et cultures numriques

Cahier Pratique Samedi numrique n1

Programmation sous Android


intervenant : Thibault Jouannic

I. Fiche Projet
1. Intitul de l'atelier : Initiation la programmation Android 2. Type de public : Tous publics 3. Pr-requis des publics : Un minimum de connaissance de la programmation 4. Pr-requis pour l'animateur : Connatre le dveloppement Android 5. Dates et dure de l'atelier : Les Samedis 8 et 29 octobre 2011 6. Descriptif dtaill : Depuis quelques annes, notre rapport la lecture, la communication mais aussi nos usages quotidiens via Internet ont t modifs grce des systmes sophistiqus bass sur des tlphones portables ou tablettes tactiles.Directement connects des ofres de services ou mme nos rseaux sociaux, professionnels, ces priphriques sont aujourdhui partie intgrante de notre quotidien. Cest un territoire en pleine volution et susceptible dtre utilis par les artistes pour faire merger des projets innovants.Pour cela, la matrise de la programmation sous Android semble tre un point daccroche pertinent.L'intervenant propose cette fn deux samedis numriques.Prenant soin dans un premier temps de prsenter lcosystme et le dveloppement Android, il rpartira ensuite par petits groupes des missions de dveloppement raliser dans un projet existant, et permettant aux participants dtudier divers aspects dune application ludique. 7. Objectifs pdagogiques : Expliquer l'cosystme de la plateforme de dveloppement Android Expliquer les concepts de bases de la programmation d'applications Android Lister les outils et pratiques ncessaires Fournir au stagiaire les connaissances pour lui permettre de crer lui mme des applications simples, ainsi que les ressources lui permettant de poursuivre ses recherches de faon personnelle.

8. Droulement : Deux ateliers : Premier atelier, 1h de prsentation thorique, puis ralisation d'une suite d'exercices en manipulation. Deuxime atelier, 2h d'exercices de rappel, puis ralisation de divers exercices au choix du stagiaire. 9. Rsultats attendus : Le stagiaire est capable de poursuivre son apprentissage du dveloppement Android de manire autonome. 10. Ressources ncessaires (humaines, matrielles, logicielles) : Un poste sous *nix, disposant de l'IDE Eclipse et du plugin Android (ADT) 11. Nom et Contacts de l'intervenant : Thibault Jouannic http://thibault.jouannic.fr thibault@jouannic.fr 06 30 47 30 50

II. Tutoriel et droulement de l'atelier

Sommaire

1- Bienvenue dans le monde Android........................................................................................ 5 1.1- Qu'est-ce qu'Android ?...............................................................................................5 1.2- Quels sont les avantages d'Android ?.........................................................................5 1.3- Et les inconvnients ?............................................................................................... 5 2- Autopsie du systme............................................................................................................ 6 3- Les outils de dveloppement................................................................................................ 6 4- Avant d'aller plus loin, les mains dans le cambouis...............................................................7 4.1- Notre premire application....................................................................................... 7 4.2- Modifer du code.......................................................................................................7 5- Comprendre une application................................................................................................ 8 5.1- Composants fondamentaux....................................................................................... 8 5.2- Structure du rpertoire............................................................................................. 9 5.3- tude d'une activity................................................................................................10 5.4- Exercice.................................................................................................................. 11 6- Les interfaces graphiques...................................................................................................12 6.1- Exercice.................................................................................................................. 12 7- Travaux pratiques............................................................................................................... 13

1. Bienvenue dans le monde Android


1.1 Qu'est-ce qu'Android ? Android est : un systme d'exploitation pour terminaux mobile ; dvelopp par l'Open Handset Alliance, pilot par Google ; open-source (jusqu' un certain point) ; l'OS leader pour systmes embarqus ; prvu pour fonctionner sur des terminaux fortement contraints ; et un jeu de priphriques trs htroclite ; 1.2 Quels sont les avantages d'Android ? Android propose une API complte, cohrente et unife ; Android est trs bien document ; De nombreux outils de dveloppement de qualit sont disponibles ; Android est ouvert ; Android propose une facilit de publication ; Android est ouvert la concurrence ;

1.3 Et les inconvnients ?


Qui a dit uniformisation ? a tourne sur tout en n'importe quoi ; C'est fragment ; Vous vendez votre me au dieu Google ;

2. Autopsie du systme
Android est compos de difrentes couches logicielles. Le noyau Linux (couche basse, communication avec le matriel, gestion de la mmoire, etc.) ; Android Runtime : Machine virtuelle Java, optimise pour une empreinte mmoire rduite ; Les bibliothques : fournissent les fonctionnalits de base du systme (Base de donne, rendu web, multimdia, etc.)

L' Application framework : ensembles d'APIS utilises par les applications, et donnant accs aux fonctionnalits du systme ; Les applications : Gmail, GoogleMap, Allocin, etc.

3. Les outils de dveloppement


Google met le paquet pour fournir au dveloppeur tous les outils possible pour lui faciliter la vie. Voici un aperu de la trousse outils du dveloppeur Android : L'IDE1 Eclipse ; Le SDK2 Android : ensemble de bibliothques, d'outils, d'exemples et de documentation ncessaire au dveloppement d'applications ; Le plugin ADT pour Eclipse : intgration du SDK dans l'interface d'Eclipse ; Les AVD3 : mulateurs de terminaux permettant de tester des dveloppements sans
1 2 3

Environnement de dveloppement intgr Software Development Kit Android Virtual Device

passer par un terminal rel ; Les exemples : le SDK est fourni avec de nombreux exemples, qui mettent en lumire la plupart des fonctionnalits disponibles ; Le plus important : la documentation, plus qu'abondante ;

4. Avant d'aller plus loin, les mains dans le cambouis


4.1 Notre premire application tape d'apprentissage obligatoire, le traditionnel Hello World . 1. Lancez Eclipse. Le plugin de dveloppement et le SDK ont dj t installs ; 2. Crez un nouveau projet Android ; 1. File > New > Project ; 2. Android > Android Project ; 3. Project Name : HelloWorld. Dans Build Target slectionner Android 2.2 ; 4. Dans package name : org.kawenga.android ; 5. Puis cliquer sur Finish ; 3. Crez un AVD ; 1. Window > Android SDK and AVD Manager ; 2. New ; 3. Name : AVD Kawenga ; 4. Target : Android 2.2 ; 5. Skin : HVGA ; 6. Create AVD ; 7. Start ; 4. Construire et excuter le projet ; 1. Attendre que l'AVD soit lanc ; 2. Cliquer sur Run as ; 3. Android Application ; 4. Admirez l'application se lancer ;

4.2 Modifier du code Ouvrir le fchier HelloWorldActivity.java , qui devrait ressembler a :


package org.kawenga.android; import android.app.Activity; import android.os.Bundle; public class HelloWorldActivity extends Activity { /** Called when the activity is frst created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Remplacer la dernire ligne de code en gras par ceci :


TextView tv = new TextView(this); tv.setText("Hello, Kawenga !"); setContentView(tv);

Notez l'erreur qui apparat dans la marge : il manque un import de paquet. Pour corriger l'erreur, utiliser le raccourci Ctrl + Shift + O ; Relancez l'application et admirez le rsultat ;

5. Comprendre une application


5.1 Composants fondamentaux Comprendre le dveloppement Android ncessite de comprendre les fondamentaux d'une application. Toutes les applications sont composes des mmes lments de base : Les activity . Une activity correspond une fentre de votre application. Vous ne pouvez interagir qu'avec une seule activity en mme temps. Les service . Un service est une tche qui peut s'excuter mme quand vous n'interagissez pas avec l'appli. Exemple : un service qui consulte rgulirement la mto, et vous alerte s'il risque de pleuvoir. Les broadcast receiver . Les applications, ou les composants de base d'Android,

peuvent envoyer des messages dans le vent, sans spcifer de destinataire spcifques. Lorsque la batterie atteint un niveau critique, o lorsqu'un nouveau rseau wif est dcouvert, des messages sont envoys. Les applications peuvent galement envoyer des messages. Un broadcast receiver est un composant qui peut souscrire certains types de messages, et efectuer d'autres actions leur rception. Les intent . Les messages en question sont appels intent . Les composants des applications sont lancs via des intents. Un intent peut tre global (sans cible dsigne), ou tre envoys un certain composant spcifque (ex : une autre activity de la mme application). Les content provider . Si une application gre un type de donnes particulier, elle peut mettre en place un content provider, qui permettra d'autres applications d'interagir avec les donnes en question. Par exemple, l'application de gestion des contacts fourni un content provider qui permet aux autres applications d'accder la liste des contacts. 5.2 Structure du rpertoire tudions d'un peu plus prs l'arborescence d'une application. Pour cela, nous allons crer un nouveau projet partir d'un sample du SDK. 1. File > New > Project ; 2. Android > Android Project ; 3. Create project from existing sample ; 4. Build target : Android 2.2 ; 5. Samples : SkeletonApp ; 6. Finish ; Un nouveau projet apparat dans la liste : SkeletonActivity. tudions de plus prs l'utilit des difrents rpertoires. Android 2.2 : contient la bibliothque Android ncessaire la compilation. La version dpend de la cible slectionne plus haut, et conditionnera les API disponibles ainsi que les types de priphriques sur lesquels l'application pourra tourner ; Src : Contient les sources java de l'application. Notez la prsence d'un package, au sens java du terme. Ce package doit tre prsent pour que l'application fonctionne. Pour le reste, vous tes libre d'organiser vos sources comme vous le souhaitez. Gen : Contient des fchiers automatiquement gnrs la compilation de l'application, et qui permettent Android d'accder aux ressources. Ne pas le modifer la main. Res : Contient les ressources structures de l'application. Les ressources comprennent des fchiers de styles, des fchiers de traductions, des fchiers de description d'interface (views), etc. Il est possible de fournir la mme ressource en fonction de difrents critres (taille de l'cran, orientation, clavier disponible ou pas, mode nuit ou pas, etc.).

Le systme appliquera la bonne ressource en fonction du contexte. Assets :Contient les ressources non structures (fchiers multimdia, modles 3d, donnes initiales, etc.) Tests : contient ventuellement le projet de tests, qui permet de mettre en place les tests unitaires du projet ; AndroidManifest.xml : Ce fchier, essentiel, est la carte d'identit de l'application. Dans ce fchier, on dcrit tous les composants de l'application (activities, services, etc.), l'icone utilise, le nom de l'application, les permissions ncessaires, les rsolutions d'cran supportes, etc. 5.3 tude d'une activity Maintenant que nous comprenons l'organisation d'une application, penchons nous plus en dtail sur le code de la principale (et seule) activity du projet. Ouvrez le fchier SkeletonActivity.java, et parcourons-le pas pas. Note : seules les lignes les plus intressantes seront dtailles.
package com.example.android.skeletonapp;

Instruction java qui indique quel package appartient le fchier.


import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText;

Liste des imports de paquets, qui indique quels endroits trouver les composants utilis dans notre code. Cette liste est auto-gnre grce au raccourci Ctlr +Shift + O.
public class SkeletonActivity extends Activity {

Dclare une nouvelle activity, qui hrite de la classe Android Activity .

static final private int BACK_ID = Menu.FIRST; static final private int CLEAR_ID = Menu.FIRST + 1;

Dclare des identifants qui seront utiliss pour distinguer les difrentes entres du menu de l'application.

/** Called when the activity is frst created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

La mthode onCreate est appele une seule fois, quand l'activity est cre4. C'est cet endroit qu'elle doit tre confgure.

// Inflate our UI from its XML layout description. setContentView(R.layout.skeleton_activity);

Dclare quel est le layout utiliser pour l'interface graphique de l'application. R est la classe auto-gnre qui contient toutes les rfrences vers les ressources.
((Button)fndViewById(R.id. back)).setOnClickListener(mBackListener); ((Button)fndViewById(R.id. clear)).setOnClickListener(mClearListener);

Dclare quels sont les lments qui ragiront au clic sur les difrents boutons.
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, BACK_ID, 0, R.string.back).setShortcut('0', 'b'); menu.add(0, CLEAR_ID, 0, R.string.clear).setShortcut('1', 'c'); return true; }

Dclare le menu destin apparatre lors d'un appui sur le bouton menu du terminal Android.
4

Voir le cycle de vie d'une activity. http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle

5.4 Exercice Ajoutez un troisime bouton dans le menu de l'application, qui affiche Mission accomplie dans la zone de texte. Indices : 1. Modifez le layout xml de l'application pour ajouter un bouton ; 2. Ajoutez un OnClickListener au bouton ; 3. Crez une nouvelle entre dans le fchier strings.xml ; 4. Implmentez le listener ;

6. Les interfaces graphiques


Nous n'avons pour le moment vu que des applications simplistes, l'interface trs rduite. Pourtant, une application n'est rien sans son interface. tudions les concepts relatifs la mise en place d'une interface graphique sous Android. Une interface est compose d'un ensemble d'lments graphiques (texte, bouton, image) appels Vues . Certaines vues spciales sont en fait des assemblages d'autres views, et sont appeles Layouts . La notion de vue est trop complexe pour tre aborde aujourd'hui en dtail. Le meilleur moyen d'avoir un bon aperu des possibilits des vues est de raliser le tutoriel Hello views 5 de la documentation Android. 6.1 Exercice Ajoutez un bouton (ou modifez un bouton existant) sur l'application prcdente, qui ouvre une nouvelle fentre affichant du texte. 1. Ouvrez le fchier manifest. Utilisez l'interface de l'onglet Application pour dclarer une nouvelle activity AboutActivity . 2. Crez une nouvelle classe hritant de Activity . 1. File > New > Class 2. Name : AboutActivity 3. Superclass : Browse. > Activity 4. Finish 3. Crez un nouveau layout about_activity.xml 1. Ouvrez le rpertoire layout
5

http://developer.android.com/resources/tutorials/views/index.html

2. Clic droit > New > File 3. File name : about_activity.xml 4. Finish 5. Utilisez l'interface pour rajouter un ScrollView, puis un LinearLayout (vertical), puis un TextView ; 6. Ajouter une entre dans le fchier strings.xml ; 7. Rfrencez cette entre dans le fchier layout ; 4. Implmentez le code qui permet d'utiliser le layout appropri dans la nouvelle activity ; 5. Utilisez un intent pour lancer la nouvelle activit ;

Intent intent = new Intent(getApplicationContext(), AboutActivity.class); startActivity(intent);

7. Travaux pratiques
Voici une mission un peu plus complexe, qui va mettre en application ce que vous avez appris. Construisez une application permettant de laisser un commentaire (sur le thme imaginaire de votre choix). Votre application doit disposer des fonctionnalits suivantes : 1. Un texte invite l'utilisateur laisser un commentaire ; 2. Une barre de notation (RatingBar) permet de saisir une note de 1 5 ; 3. Un champ de formulaire permet de saisir du texte ; 4. Un bouton permet de valider le commentaire ; 5. Une fois valid, le formulaire est rinitialis, et le commentaire est affich dans une notifcation (Toast) ; Cette mission mettra en jeu les comptences suivantes : 1. Crer un projet Android via Eclipse ; 2. Dfnir, sur papier, une interface graphique mobile ; 3. Implmenter cette interface en xml ; 4. Utiliser l'ADT comme assistant de dveloppement ; 5. Utiliser la documentation pour trouver les informations ncessaires ; 6. Tester une application sur un AVD ;

Documentation ncessaire : http://developer.android.com/resources/tutorials/views/hello-linearlayout.html http://developer.android.com/resources/tutorials/views/hello-formstuf.html http://developer.android.com/guide/topics/ui/notifers/toasts.html

III. Bibliographie, Rfrences et Rseaugraphie


lire
MOTTIER Cyril, PERRIER Ludovic, Dveloppez pour Android : Des applications mobiles optimises, Paris, Digit Books, 2011, INSBN 978-2-8150-3006-9

Liens
Le site de rfrence pour les dveloppeurs android : http://developer.android.com/index.html Le blog des dveloppeurs android : http://android-developers.blogspot.com/ Reddit anyone ? http://www.reddit.com/r/android Le blog de Cyril Mottier, dveloppeur android expriment http://android.cyrilmottier.com/ Stackoverflow, site d'entraide entre dveloppeurs http://stackoverflow.com/tags/android Le site Android Stackexchange, site d'change entre passionns d'Android http://android.stackexchange.com/

Exemples tudier
Open-source android apps http://code.google.com/p/apps-for-android/ Une liste d'applis open-source http://en.wikipedia.org/wiki/List_of_free_software_Android_applications Les samples du SDK http://developer.android.com/resources/samples/get.html Les sources d'Android, beaucoup de bonnes applis http://source.android.com/

Cette oeuvre est mise disposition selon les termes de la Licence Creative Commons Paternit Pas dUtilisation Commerciale Pas de Modifcation 2.0 France.

Kawenga - territoires numriques 21 boulevard Louis Blanc 34000 MONTPELLIER www.kawenga.org / contact@kawenga.org / + 33(0)4 67 06 51 66