Cours programmation Android de la conception au déploiement
Plan
1 Presentation d’Android´
Qu’est ce qu’Android ?
Qui utilise Android ?
Les challenges releves par l’OS´ Tel´ echarger/Distribuer des´ applications Architecture logicielle
2 Concepts de base
Un peu de vocabulaire
Architecture logicielle d’Android
3 Les projets Android
Creer un projet´ a partir d’un exemple`
Creer son propre projet´
Structuration globale des repertoires´ 4 Activites´
Definition´
Cycle de vie
Hello world++
5 Layout XML
XML
Utiliser des layouts XML
6 Manifeste
Avant-propos
Contenu
Conventions
Les ressources
Les permissions
Exemple
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
Plan
1 Presentation d’Android´
Qu’est ce qu’Android ?
Qui utilise Android ?
Les challenges releves par l’OS´ Tel´ echarger/Distribuer des´ applications Architecture logicielle
2 Concepts de base
3 Les projets Android
4 Activites´
5 Layout XML
6 Manifeste
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
Qu’est ce qu’Android?
Qu’est ce qu’Android?
Un systeme d’exploitation open source`
? Un systeme d’exploitation` oriente´ dispositif mobiles
? il s’agit donc d’un ensemble de logiciels qui sert d’interface entre le materiel (les´ composants du tel´ ephone, d’une tablette ) et les logiciels applicatifs (ceux que vous allez´ developper).´
? Un systeme d’exploitation` open source
? disponibilite du code,´
? importante communaute d’utilisateurs.´
? Un systeme d’exploitation` base sur le noyau´ Linux ? Environnement de developpement´ gratuit
? Programmation en Java ou en langage C,
? Kit de developpement (´ SDK Android) disponible au lien
Qu’est ce qu’Android? Les versions d’Android
Les plateformes Android
Android et ses concurrents 1/2
Android et ses concurrents 2/2
Les challenges releves par l’OS´Les challenges
Tel´ echarger/Distribuer des applications´
Tel´ echarger/Distribuer des applications´
Google Play Store (ancien Android Market)
Systeme standard de t` el´ echargement/distribution d’applications.´
? Pas de verification´ des applications
? Navigation plus laborieuse que AppMarket (recherche par categories, mots cl´ es, prix)´
? Necessite un´ terminal certifie´ (camera, 3G, compass )
? Gestion des autorisations avant l’installation
? Des centaines de milliers d’applications disponibles (57% gratuites) Si vous souhaitez vendre vos applications :
? 25$ pour s’inscrire en tant que developpeur´
? 70% du prix revient au developpeur,´ 30% a Google`
? Revenus perc¸us via Google CheckOut
Tel´ echarger/Distribuer des applications´
Tel´ echarger/Distribuer des applications´
Autres plateformes
Il existe d’autres plateformes de distributions legales´ (i.e. autorisees par Google)´ d’applications. Elles permettent notamment l’acces aux` terminaux non certifies´ .
? AppsLib (Archos) : http
? AndroLib : http ? Market Samsung
?
Plan
1 Presentation d’Android´ 5 Layout XML
2 Concepts de base 6 Manifeste
Un peu de vocabulaire
Architecture logicielle d’Android 7 Etude de classes sp´ ecifiques´ a Android`
3 Les projets Android 8 Bibliographie
4 Activites´
Activite (´ Activity)
? Brique de base d’une interface utilisateur
? Equivalent d’une fen´ etre (Windows, Linux) ou d’une boˆ ˆ?te de dialogue
? Une activite peut´ eventuellement ne pas avoir d’interface utilisateur (cas des services´ par exemple)
Fournisseur de contenu (Content provider)
? Niveau d’abstraction pour toutes donnees stock´ ees sur le terminal´
? Android encourage la mise a disposition` de ses propres donnees aux autres´ programmes
? Le content provider le permet en proposant un controleˆ sur la fac¸on dont on accedera´ aux donnees´
Intention (Intent)
? Une intention est un message systeme qu’on peut qualifier d’` ev´ enement´
? Emis par le terminal pour pr´ evenir les applications de la survenue d’´ ev´ enements (cas´ des ev´ enements syst´ emes` ) ou par tout autre application (cas des ev´ enements´ applicatifs).
- Systeme` :
? Insertion d’une carte SD
? Reception d’un SMS´
?
- Applicatif : (on peut imaginer)
? Un Intent ”Le logiciel NetSpyR&T demarre”´
? Un Intent ”L’utilisateur arrive a Paris” en utilisant les informations de g` eolocalisation´ du terminal”
Service (Service)
? Logiciel autonome prevu pour durer (contrairement aux activit´ es, fournisseurs de´ contenus, recepteur d’intentions).´ ? Ne necessite pas d’interface utilisateur.´
? Exemples :
- Service verifiant p´ eriodiquement des mises-´ a-jour de flux RSS`
- Service permettant d’ecouter une playlist (ind´ ependamment de toute activit´ e)´
Manifeste (Manifeste)
? Point de depart de toute application Android´
? Permet de declarer´ ce que l’application contient (activites, services )´
? Precise comment ces composants sont reli´ es´ a Android (que fait-on apparaitre dans le` menu ? )
? Precise les´ permissions de l’application (controle de la webcam, accˆ es au r` eseaux,´ acces au service de localisation )`
Gadget graphique (Widget)
? Terme resultant de la contraction des termes´ window et gadget
? Concretement c’est un` composant d’interface graphique (libelles, champs de saisie,´ boutons )
XML (XML)
? Extensible Markup Language (langage de balisage extensible)
? Langage de balisage extensible pour structurer des donnees´
Positionnement XML (XML Layout)
? Permet de concevoir des interfaces plus simplement qu’en langage Java
? Permet concretement d’` instancier les widgets
? Ce fichier est souvent gen´ er´ e par des outils´ qui permettent de construire graphiquement les interfaces
Identifiant uniforme de ressource (Uniform Resource Identifier - URI)
? courte chaˆ?ne de caracteres` identifiant une ressource sur un reseau r´ eel ou abstrait´ ? respecte une norme d’Internet mise en place pour le Web (voir RFC 3986).
? Sont des URI :
- les Uniform Resource Locator (URL) : identifie une ressource sur un reseau et fournit les´ moyens d’agir sur la ressource ou d’obtenir une representation´ de la ressource en decrivant son´ mode d’acces primaire` .
Exemple : identifie une ressource (page d’accueil Wikipedia) et´ implique qu’une representation de cette ressource (une page HTML en caract´ eres encod` es) peut´ etreˆ obtenue via le protocole HTTP depuis un reseau h´ ote appelˆ e .´
- les Uniform Resource Name (URN) : identifie une ressource par son nom dans un espace de noms.
Exemple : urn:isbn:0-395-36341-1 identifie une ressource par un numero de l’International´ Standard Book Number (ISBN), permet de faire ref´ erence´ a un livre, mais il ne sugg` ere ni o` u, ni comment` en obtenir une copie reelle.´
Conteneur (Container)
? Permet de disposer un ensemble de widgets pour obtenir la presentation d´ esir´ ee´
? La plupart des outils de construction d’interfaces graphique fournissent des gestionnaires de disposition (layout manager) qui sont organises le plus´ frequemment en conteneurs.´
Equipement Android virtuel (´ Android Virtual Devices)
? Les AVD permettent de simuler l’execution´ d’un terminal Android sur un ordinateur
? Ces terminaux sont personnalisables (version d’Android, type de processeur, espace de stockage ).
? Simplifie le developpement´ et la mise au point des applications
Architecture logicielle d’AndroidArchitecture logicielle d’Android
Plan
1 Presentation d’Android´ 4 Activites´
2 Concepts de base 5 Layout XML
3 Les projets Android 6 Manifeste
Creer un projet´ a partir d’un exemple`
Creer son propre projet´ 7 Etude de classes sp´ ecifiques´ a Android`
Structuration globale des repertoires´
8 Bibliographie
21 / 51
21 / 51
21 / 51
23 / 51
Structure d’un projet Android : la racine
Repertoire´ /
? : Le fichier manifest qui decrit l’application´
? : Le script Ant qui permet de compiler l’application et de l’installer sur le terminal
? default.properties et local.properties : Deux fichiers de propriet´ es´ utilises par le´ script Ant
? bin/ : Repertoire qui contient l’´ application compilee´
? gen/ : Repertoire qui contient le´ code source produit par les outils de compilation Android
? libs/ : Repertoire qui contient les´ fichiers JAR exterieurs´ a l’application`
? src/ : Repertoire qui contient´ code source Java de l’application
? res/ : Repertoire qui contient les´ ressources (iconesˆ , layouts )
? tests/ : Repertoire qui contient un´ projet Android completement distinct` qui permet de tester celui qui est creé´
? assets/ : Repertoire qui contient les´ autres fichiers statiques fournis avec l’application pour son deploiement sur le terminal´
24 / 51
Structure d’un projet Android : les ressources
Contenu du repertoire´ res/
? res/drawable/ : Repertoire qui contient´ les images (JPG, PNG )
? res/layout/ : Repertoire qui contient les descriptions XML de la composition de l’IHM (les´ layouts)
? res/menu/ : Repertoire qui contient les´ descriptions XML des menus
? res/raw/ : Repertoire qui contient les´ fichiers gen´ eraux´ (un fichier CSV contenant les informations de compte par exemple)
? res/values/ : Repertoire qui contient les´ messages, les dimensions
? res/xml/ : Repertoire qui contient les´ autres fichiers XML que vous souhaitez fournir
25 / 51
Structure d’un projet Android : les executables´
Contenu du repertoire´ bin/
? bin/classes/ : Repertoire qui contient les´ classes java compilees´
? : Repertoire qui contient´ l’executable´ creé´ a partir des classes compil` ees´
? : Repertoire qui contient les´ ressources de l’application (fichier zip)
? : Repertoire qui contient la´ veritable application Android´
26 / 51
Plan
1 Presentation d’Android´
2 Concepts de base
3 Les projets Android
4 Activites´
Definition´
Cycle de vie
Hello world++
5 Layout XML
6 Manifeste
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
27 / 51
Definition´
Qu’est ce qu’une activite?´
Definition´
? Une activite (´ Activity) = une IHM pour un cas d’utilisation (cf cours UML) : Exemple : Soit une application d’envoi de SMS
- Une activite pour choisir un contact dans le r´ epertoire´
- Une activite pour la saisie du message´
- Une activite pour afficher le journal des envois´ ? D’un point de vue operationnel :´
- Une activite doit´ heriter´ de la classe .Activity
- Une activite est´ independante des autres´ activites MAIS :´
? Il faut designer une´ activite de d´ epart´ (celle qui sera utilisee en 1er)´
? Il faut chainer les activites´ (une activite doit activer la suivante)´
- Nous considerons dans notre cours qu’une activit´ e est li´ ee´ a un` layout XML.
28 / 51
Hello world++Une illustration
Plan
1 Presentation d’Android´
2 Concepts de base
3 Les projets Android
4 Activites´
5 Layout XML
XML
Utiliser des layouts XML
6 Manifeste
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
31 / 51
Integrer des layouts XML dans mon application´
Les etapes :´
Avec un editeur texte ou un outil le g´ en´ erant :´
1. Creer un layout XML´ (porter une attention particuliere aux` identifiants des widgets)
Dans le programme Java :
2. Charger le layout
3. Instancier les widgets sur lesquels on veut agir
34 / 51
Choix du layout
LinearLayout: Il organise les differents´ el´ ements de votre interface sur une ligne ou sur une´ colonne.
AbsoluteLayout: Cette mise en page vous laisse definir les coordonn´ ees exactes des´ el´ ements´ qui le composent.
RelativeLayout: Il permet de definir la position des´ el´ ements en fonction de la position de leurs´ el´ ements parents. On ne peut pas avoir de d´ ependance circulaire dans la taille dans le´ RelativeLayout.
TableLayout: Cette mise en page peut se faire en colonne et en ligne.
Placer les widgets
EditText: Un champ de texte editable´
Toast: Un pop up message qui s’affiche sur
l’ecran´
ImageView: Une image
CheckBox: Une case a cocher`
Button: Un bouton cliquable
RadioButton: selecteurs/interrupteurs.´
ImageButton: Une image qui se comporte comme un bouton
DatePicker: Un selecteur de dates´
SlidingDrawer: Un el´ ement qui se pr´ esente sous´ forme d’un tiroir qu’on ouvre et ferme
36 / 51
Integrer des layouts XML dans mon application´
38 / 51
Integrer des layouts XML dans mon application´
39 / 51
Plan
1 Presentation d’Android´
2 Concepts de base
3 Les projets Android
4 Activites´
5 Layout XML
6 Manifeste
Avant-propos
Contenu
Conventions
Les ressources
Les permissions
Exemple
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
40/ 51
Avant-propos
41/ 51
Contenu
Contenu
? Precise le nom du package java utilisant l’application. Cela sert d’identifiant unique !´
? Decrit les composants de l’application´
- Liste des activites´ , services, broadcast receivers
- Precise les classes qui les impl´ ementent´
- Precise leurs´ capacites´ (a quels intents ils r` eagissent)´
? Ceci permet au systeme de savoir comment lancer chaque partie de l’application afin de`
satisfaire au principe de reutilisabilit´ e.´
? Definit les´ permissions de l’application
- Droit de passer des appels
- Droit d’acceder´ a Internet`
- Droit d’acceder au GPS´
-
? Precise la´ version d’Android minimum necessaire´
? Declare les´ librairies utilisees´
? Declare des outils d’´ Instrumentation (uniquement pour le developpement)´
42 / 51
Conventions
Conventions
? Seuls deux el´ ements sont obligatoires :´
- <manifest> : contient le package, la version Englobe tout le fichier
- <application> :decrit l’application´ et contiendra la liste de ses composants
? Les donnees sont pass´ ees en tant qu’attribut et non en tant que contenu´
? Tous les attributs commencent par android: (sauf quelques un dans <manifest>)
43/ 51
Les ressources
44/ 51
Les permissions
45/ 51
Les permissions
46/ 51
Exemple
Etude de classes sp´ ecifiques´ a Android`
Plan
1 Presentation d’Android´
2 Concepts de base
3 Les projets Android
4 Activites´
5 Layout XML
6 Manifeste
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
48/ 51
Etude de classes sp´ ecifiques´ a Android`
49/ 51
Bibliographie
1 Presentation d’Android´
2 Concepts de base
3 Les projets Android
4 Activites´
5 Layout XML
6 Manifeste
7 Etude de classes sp´ ecifiques´ a Android`
8 Bibliographie
50/ 51
51/ 51
