Android
Gauthier Picard
2012
e concue par
Cette presentation
a et
Jean-Paul Jamont
` France, IUT de Valence)
(Universite Pierre Mendes
1 / 51
Plan
Presentation
dAndroid
Quest ce quAndroid ?
Qui utilise Android ?
par lOS
Les challenges releves
echarger/Distribuer
Tel
des
applications
Architecture logicielle
Concepts de base
Un peu de vocabulaire
Architecture logicielle dAndroid
Les projets Android
un projet a` partir dun exemple
Creer
son propre projet
Creer
Activites
7
8
Definition
Cycle de vie
Hello world++
Layout XML
XML
Utiliser des layouts XML
Manifeste
Avant-propos
Contenu
Conventions
Les ressources
Les permissions
Exemple
2 / 51
Presentation
dAndroid
Plan
Presentation
dAndroid
Quest ce quAndroid ?
Qui utilise Android ?
par lOS
Les challenges releves
echarger/Distribuer
Tel
des
applications
Architecture logicielle
Concepts de base
Activites
Layout XML
Manifeste
Bibliographie
3 / 51
Presentation
dAndroid
Quest ce quAndroid ?
Quest ce quAndroid ?
`
Un systeme
dexploitation open source
`
Un systeme
dexploitation oriente dispositif mobiles
il sagit donc dun ensemble de logiciels qui sert dinterface entre le materiel
(les
ephone,
composants du tel
dune tablette...) et les logiciels applicatifs (ceux que vous allez
developper).
`
Un systeme
dexploitation open source
disponibilite du code,
importante communaute dutilisateurs.
`
Un systeme
dexploitation base sur le noyau Linux
Environnement de developpement
gratuit
Programmation en Java ou en langage C,
Kit de developpement
(SDK Android) disponible au lien
http://developer.android.com/sdk/index.html
4 / 51
Presentation
dAndroid
Quest ce quAndroid ?
Les differentes
versions dAndroid ont toutes des noms de desserts depuis la sortie de la version 1.5 et
3.0 (3.2) - Honeycomb - 01/2011 : Version actuelle pour grandes tablettes et TV connectes
pour Smartphone, Tablette et GoogleTV, fortement inspiree
dHoneycomb
4.0 (4.0.3) - Ice Cream Sandwich - 10/2011 : Version unifiee
5.0 - Jelly Bean : Version a` venir
5 / 51
Presentation
dAndroid
Google TV
ephones
Tel
et autres PDA
Tablettes
6 / 51
Presentation
dAndroid
Date de creation
: Le 5 novembre 2007 a` linitiative de Google
ephonie
Objectifs : Developper
des normes ouvertes pour les appareils de tel
mobile
ephonie
Concurrents dAndroid
Apple avec iOS
Research In Motion (RIM) avec BlackBerry OS
Microsoft avec Windows Phone
7 / 51
Presentation
dAndroid
Share of worldwide 2011 Q3 smartphone sales to end users by operating system, according to Gartner.
8 / 51
Presentation
dAndroid
par lOS
Les challenges releves
Les challenges
dAndroid
Fonctionnalites
`
Camera, GPS, Accel
etre,
compass...
Framework dapplication
Machine virtuelle Dalvik
e
Navigateur web integr
API graphique 2D et 3D
SQLite
Contraintes
500-600 Mhz
CPU cadences
Faible memoire
RAM disponible
` (en ecriture)
Faible debit
` des IHM :
Conception particuliere
Faible resolution
de touche de la dalle tactile (environ 25 pixels)
9 / 51
Presentation
dAndroid
echarger/Distribuer
Tel
des applications
echarger/Distribuer
Tel
des applications
Systeme
standard de tel
dapplications.
Pas de verification
des applications
prix)
Navigation plus laborieuse que AppMarket (recherche par categories,
mots cles,
Necessite
un terminal certifie (camera, 3G, compass...)
Gestion des autorisations avant linstallation
Des centaines de milliers dapplications disponibles (57% gratuites)
10 / 51
Presentation
dAndroid
echarger/Distribuer
Tel
des applications
echarger/Distribuer
Tel
des applications
Autres plateformes
par Google)
Il existe dautres plateformes de distributions legales
(i.e. autorisees
` aux terminaux non certifies.
11 / 51
Concepts de base
Plan
Presentation
dAndroid
Layout XML
Concepts de base
Un peu de vocabulaire
Architecture logicielle dAndroid
Manifeste
Bibliographie
Activites
12 / 51
Concepts de base
Un peu de vocabulaire
Termes importants
Activite (Activity)
Brique de base dune interface utilisateur
(Windows, Linux) ou dune bote de dialogue
E quivalent dune fenetre
aux donnees
13 / 51
Concepts de base
Un peu de vocabulaire
Termes importants
Intention (Intent)
`
enement
enements
`
enements
des ev
systemes)
ou par tout autre application (cas des ev
applicatifs).
`
- Systeme
:
Insertion dune carte SD
Reception
dun SMS
...
14 / 51
Concepts de base
Un peu de vocabulaire
Termes importants
Service (Service)
pour durer (contrairement aux activites,
fournisseurs de
Logiciel autonome prevu
contenus, recepteur
dintentions).
Ne necessite
pas dinterface utilisateur.
Exemples :
- Service verifiant
periodiquement
des mises-`a-jour de flux RSS
Manifeste (Manifeste)
Point de depart
de toute application Android
services...)
Permet de declarer
ce que lapplication contient (activites,
de la webcam, acces
` au reseaux,
Precise
les permissions de lapplication (controle
` au service de localisation...)
acces
Programmation sous Android
15 / 51
Concepts de base
Un peu de vocabulaire
Termes importants
Gadget graphique (Widget)
Terme resultant
de la contraction des termes window et gadget
`
champs de saisie,
Concretement
cest un composant dinterface graphique (libelles,
boutons...)
XML (XML)
Extensible Markup Language (langage de balisage extensible)
16 / 51
Concepts de base
Un peu de vocabulaire
Termes importants
ou abstrait
courte chane de caracteres
identifiant une ressource sur un reseau
reel
respecte une norme dInternet 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
` primaire.
decrivant
son mode dacces
`
peut etre
appele www.wikipedia.org.
obtenue via le protocole HTTP depuis un reseau
hote
- les Uniform Resource Name (URN) : identifie une ressource par son nom dans un espace de
noms.
de lInternational
Exemple : urn:isbn:0-395-36341-1 identifie une ressource par un numero
erence
` ni ou,
` ni comment
Standard Book Number (ISBN), permet de faire ref
a` un livre, mais il ne suggere
17 / 51
Concepts de base
Un peu de vocabulaire
Termes importants
Conteneur (Container)
ee
frequemment
en conteneurs.
Equipement
Android virtuel (Android Virtual Devices)
Simplifie le developpement
et la mise au point des applications
18 / 51
Concepts de base
19 / 51
Plan
Presentation
dAndroid
Activites
Concepts de base
Layout XML
Manifeste
Bibliographie
20 / 51
21 / 51
21 / 51
21 / 51
21 / 51
22 / 51
22 / 51
22 / 51
22 / 51
23 / 51
Repertoire
/
bin/ : Repertoire
qui contient lapplication compilee
gen/ : Repertoire
qui contient le code source produit par les outils de compilation Android
libs/ : Repertoire
qui contient les fichiers JAR exterieurs
a` lapplication
src/ : Repertoire
qui contient code source Java de lapplication
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 e
assets/ : Repertoire
qui contient les autres fichiers statiques fournis avec lapplication pour
son deploiement
sur le terminal
24 / 51
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 lIHM (les
layouts)
res/menu/ : Repertoire
qui contient les descriptions XML des menus
eraux
res/raw/ : Repertoire
qui contient les fichiers gen
(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
Contenu du repertoire
bin/
bin/classes/ : Repertoire
qui contient les classes java compilees
bin/classes.dex : Repertoire
qui contient lexecutable
cre e a` partir des classes compilees
bin/votreApp-debug.apk : Repertoire
qui contient la veritable
application Android
26 / 51
Activites
Plan
Hello world++
Presentation
dAndroid
Concepts de base
Layout XML
Manifeste
Activites
Definition
Cycle de vie
Bibliographie
27 / 51
Activites
Definition
Definition
Une activite (Activity) = une IHM pour un cas dutilisation (cf cours UML) : Exemple : Soit une
application denvoi de SMS
MAIS :
- Une activite est independante
des autres activites
en 1er)
Il faut designer
une activite de depart
(celle qui sera utilisee
(une activite doit activer la suivante)
Il faut chainer les activites
a` un layout XML.
- Nous considerons
dans notre cours quune activite est liee
28 / 51
Activites
Cycle de vie
29 / 51
Activites
Cycle de vie
onCreate() :
ee
quand lactivite est cre ee
Methode
execut
` dune application, cette
Si cest la lactivite est la premiere
methode
est donc appelee
lapplication
pour initialiser :
Methode
utilisee
- la vue XML
temporaires
- si necessaire,
les fichiers/donnees
29 / 51
Activites
Cycle de vie
onRestart() :
ee
lorsque on redemarre
` un
Methode
execut
lactivite apres
(provoque par un appel de la methode
arret
stop())
29 / 51
Activites
Cycle de vie
onStart() :
ee
apres
` chaque onCreate() ou
Methode
execut
onRestart()
sauvegardees
durant le
Si necessaire,
recharger les donnees
dernier arret
29 / 51
Activites
Cycle de vie
onResume() :
ee
apres
` chaque appel de la methode
Methode
execut
onStart()
ee
a chaque passage en premier plan de
Methode
execut
lactivite (si pas de stop() )
Si necessaire
:
la connexion a` la base de donnees
- gerer
qui auraient pu etre
modifiees
29 / 51
Activites
Cycle de vie
onPause() :
ee
a` chaque fois que :
Methode
execut
le systeme
a besoin de liberer
ee
systematiquement
Si necessaire,
il faut :
qui seront perdues apres
`
- sauvegarder les donnees
si elles ne sont pas sauvegardees
larret
la deconnexion
- gerer
a` la base de donnees
rapide car la
Attention : lexecution
de cette fonction doit etre
29 / 51
Activites
Cycle de vie
onStop() :
ee
avant chaque mise en sommeil
Methode
execut
ee
avant chaque onDestroy()
Methode
execut
Liberation
des ressources
29 / 51
Activites
Cycle de vie
onDestroy() :
ee
lors du kill/arret
de lactivite
Methode
execut
execut
e pour obtenir a`
onCreate() devra a` nouveau etre
nouveau lactivite
29 / 51
Activites
Hello world++
Une illustration
Hello world ! ! !
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.developpez.android;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorld extends Activity
{
/** Called with the activity is first created. */
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
/** remarquez qu'ici on utilise pas de layout XML */
TextView textView = new TextView(this);
textView.setText("Hello world !");
setContentView(textView);
}
protected void onRestart()
{
super.onRestart();
Toast.makeText(this, "appel de la mthode onRestart()", 1).show();
}
protected void onPause()
{
super.onPause();
Toast.makeText(this, "appel de la mthode onRestart()", 1).show();
}
...
}
30 / 51
Layout XML
Plan
Layout XML
XML
Utiliser des layouts XML
Presentation
dAndroid
Concepts de base
Manifeste
Activites
Bibliographie
31 / 51
Layout XML
XML
et extensible
XML, format textuel, structure,
Definition
eXtensible Markup Language
<MAGAZINE>
<TITRE>Science et Vie</TITRE>
<DATEPARUTION>01-02-2012</DATEPARUTION>
<PRIX devise="Euro">4.20</PRIX>
</MAGAZINE>
<LIVRE type="roman">
<TITRE>Le livre d'Android</TITRE>
<AUTEUR>Patrick Beuzit</AUTEUR>
<PRIX devise="Dollar">22.25</PRIX>
</LIVRE>
<!-- "PRIX" est une balise, "devise" une cl, "32.30" une valeur -->
...
</BIBLIOTHEQUE>
32 / 51
Layout XML
XML
et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android
Prologue (ligne 1)
XML
(L1) <?xml ... ?> : Entete
(L1) version="1.0" : XML version 1.0
`
`
sur 8bits)
(L1) encoding="utf-8" : format de codage de caracteres
ISO/CEI 10646 (caracteres
codes
33 / 51
Layout XML
XML
et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android
LinearLayout (lignes 2 a` 5)
` les autres)
(L2 et 5) <LinearLayout ... / > : Specifie
le conteneur (ici : disposition des widgets les un derriere
33 / 51
Layout XML
XML
et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android
33 / 51
Layout XML
XML
et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android
33 / 51
Layout XML
XML
et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android
33 / 51
Layout XML
Integrer
des layouts XML dans mon application
Les etapes
:
erant
Avec un editeur
texte ou un outil le gen
:
un layout XML (porter une attention particuliere
` aux identifiants des widgets)
1. Creer
Dans le programme Java :
2. Charger le layout
3. Instancier les widgets sur lesquels on veut agir
34 / 51
Layout XML
un layout XML
1. Creer
Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html
35 / 51
Layout XML
un layout XML
1. Creer
Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html
35 / 51
Layout XML
un layout XML
1. Creer
Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html
35 / 51
Layout XML
un layout XML
1. Creer
Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html
35 / 51
Layout XML
un layout XML
1. Creer
Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html
35 / 51
Layout XML
un layout XML
1. Creer
Choix du layout
ements
exactes des el
ements
ements
el
parents. On ne peut pas avoir de dependance
circulaire dans la taille dans le
RelativeLayout.
TableLayout : Cette mise en page peut se faire en colonne et en ligne.
lecran
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
ement
SlidingDrawer : Un el
qui se presente
sous
forme dun tiroir quon ouvre et ferme
36 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
un layout XML
1. Creer
Creation
avec plugin (ou autre outil externe)
37 / 51
Layout XML
Integrer
des layouts XML dans mon application
2. Charger le layout
chaque layout XML est compilee
en une ressource View.
Quand lapplication est compilee,
appel de la methode
setContentView()
` la ref
erence
La methode
setContentView() prend en parametre
vers le layout. Cette
erence
ref
est de la forme R.layout.nom du layout.
Exemple : Soit le layout
mainl ayout.xml.Dansl activite, lamethodeonCreate()doitcontenirauminimum
38 / 51
Layout XML
Integrer
des layouts XML dans mon application
39 / 51
Manifeste
Plan
Presentation
dAndroid
Concepts de base
Activites
Layout XML
Manifeste
Avant-propos
Contenu
Conventions
Les ressources
Les permissions
Exemple
Bibliographie
40 / 51
Manifeste
Avant-propos
Manifeste
Avant-propos
Fichier XML
Precise
larchitecture de lapplication
Chaque application doit en avoir un
AndroidManifest.xml est dans la racine du projet
41 / 51
Manifeste
Contenu
Manifeste
Contenu
Precise
le nom du package java utilisant lapplication. Cela sert didentifiant unique !
Decrit
les composants de lapplication
services, broadcast receivers
- Liste des activites,
- Precise
les classes qui les implementent
- Precise
leurs capacites
`
Ceci permet au systeme
de savoir comment lancer chaque partie de lapplication afin de
Definit
les permissions de lapplication
- Droit de passer des appels
- Droit dacceder
a` Internet
- Droit dacceder
au GPS
- ...
Precise
la version dAndroid minimum necessaire
Declare
les librairies utilisees
Declare
des outils dInstrumentation (uniquement pour le developpement)
42 / 51
Manifeste
Conventions
Manifeste
Conventions
ements
Seuls deux el
sont obligatoires :
- <manifest> : contient le package, la version... Englobe tout le fichier
- <application> :decrit
lapplication et contiendra la liste de ses composants
sont passees
en tant quattribut et non en tant que contenu
Les donnees
Tous les attributs commencent par android: (sauf quelques un dans <manifest>)
43 / 51
Manifeste
Les ressources
Manifeste
Les ressources
en tant que tel le fichier manifest peut faire appel a` des
Au lieu de contenir les donnees
ressources
<activityandroid:icon="@drawable=smallPic":::>
44 / 51
Manifeste
Les permissions
Manifeste
Permissions
sauf sil le precise
45 / 51
Manifeste
Les permissions
Manifeste
Intent Filter
`
46 / 51
Manifeste
Exemple
Manifeste
Exemple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
47 / 51
Etude
de classes specifiques
a` Android
Plan
Presentation
dAndroid
Layout XML
Concepts de base
Manifeste
Activites
Bibliographie
48 / 51
Etude
de classes specifiques
a` Android
49 / 51
Bibliographie
Plan
Presentation
dAndroid
Layout XML
Concepts de base
Manifeste
Activites
Bibliographie
50 / 51
Bibliographie
Ressources
Livres
51 / 51