Anda di halaman 1dari 78

Programmation sous

Android
Gauthier Picard

Ecole Nationale Superieure


des Mines

2012

e concue par
Cette presentation
a et
Jean-Paul Jamont
` France, IUT de Valence)
(Universite Pierre Mendes

Programmation sous Android

Axe ISI - DSI

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

Structuration globale des repertoires

Activites

Programmation sous Android

7
8

Axe ISI - DSI

Definition
Cycle de vie
Hello world++
Layout XML
XML
Utiliser des layouts XML
Manifeste
Avant-propos
Contenu
Conventions
Les ressources
Les permissions
Exemple

E tude de classes specifiques


a` Android
Bibliographie

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

Les projets Android

Programmation sous Android

Activites

Layout XML

Manifeste

E tude de classes specifiques


a` Android

Bibliographie

Axe ISI - DSI

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

Programmation sous Android

Axe ISI - DSI

4 / 51


Presentation
dAndroid

Quest ce quAndroid ?

Les versions dAndroid


De nombreuses versions...

Les differentes
versions dAndroid ont toutes des noms de desserts depuis la sortie de la version 1.5 et

suivent un ordre alphabetique


:

avant la sortie du premier tel


ephone

1.0 -- 2007 : Version peu connue (version du SDK distribuee


Android)
ephone,

1.1 -- 2008 : Version incluse dans le premier tel


le HTC Dream
` revision

1.5 - Cupcake - 04/2009 : Derniere


officielle en mai 2010
` revision

1.6 - Donut - 09/2009 : Derniere


officielle en mai 2010
a` cause de nombreux bugs par la 2.0.1 puis par la 2.1
2.0 - Eclair - 2009 : Vite remplacee
` revision

2.1 - Eclair - 01/2010 : Derniere


officielle en mai 2010
` revision

2.2 (2.2.3) - FroYo - 05/2010 : Derniere


officielle en 2011
2.3 (2.3.7) - Gingerbread - 12/2010 : Version actuelle pour smartphones et petites tablettes

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

Programmation sous Android

Axe ISI - DSI

5 / 51


Presentation
dAndroid

Qui utilise Android ?

Les plateformes Android

De plus en plus dequipements

Google TV

ephones

Tel
et autres PDA

Tablettes

Programmation sous Android

Axe ISI - DSI

6 / 51


Presentation
dAndroid

Qui utilise Android ?

Android et ses concurrents 1/2


LOpen Handset Alliance

Date de creation
: Le 5 novembre 2007 a` linitiative de Google

ephonie

Objectifs : Developper
des normes ouvertes pour les appareils de tel
mobile

ephonie

Membres : 34 grands acteurs operateurs


de tel
mobile, fabricants de semi-conducteurs,
dappareils mobiles, de logiciels...

Concurrents dAndroid
Apple avec iOS
Research In Motion (RIM) avec BlackBerry OS
Microsoft avec Windows Phone

Samsung avec Bada (meme


si Samsung utilise aussi Android)
e en 2011)
HP avec Palm webOS devenu webOS (Arret
e en 2011, Nokia utilisera desormais

Nokia avec Symbian OS (Arret


Windows Phone).
...

Programmation sous Android

Axe ISI - DSI

7 / 51


Presentation
dAndroid

Qui utilise Android ?

Android et ses concurrents 2/2


Les smartphones vendus selon leur OS

Share of worldwide 2011 Q3 smartphone sales to end users by operating system, according to Gartner.

Programmation sous Android

Axe ISI - DSI

8 / 51


Presentation
dAndroid

par lOS
Les challenges releves

Les challenges
dAndroid
Fonctionnalites

Codecs audio et video


WiFi, EDGE, 3G, Bluetooth...
erom

`
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)

Important temps dacces


sur disque flash

Cycle de vie specifique


des applications (autonomie energ
etique,
ressources limitees)
et intermittence des reseaux

Faible debit
` des IHM :
Conception particuliere

E cran type : HVGA (320x480)

Utilisation en mode portrait ou paysage


non lisible (DPI)
Texte de petites polices peuvent etre

Faible resolution
de touche de la dalle tactile (environ 25 pixels)

Programmation sous Android

Axe ISI - DSI

9 / 51


Presentation
dAndroid

echarger/Distribuer

Tel
des applications

echarger/Distribuer

Tel
des applications

Google Play Store (ancien Android Market)


`
echargement/distribution

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)

Si vous souhaitez vendre vos applications :

25$ pour sinscrire en tant que developpeur

70% du prix revient au developpeur,


30% a` Google
Revenus percus via Google CheckOut

Programmation sous Android

Axe ISI - DSI

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.

dapplications. Elles permettent notamment lacces


AppsLib (Archos) : http ://appslib.com
AndroLib : http ://www.androlib.com
Market Samsung
...

Programmation sous Android

Axe ISI - DSI

11 / 51

Concepts de base

Plan

Presentation
dAndroid

Layout XML

Concepts de base
Un peu de vocabulaire
Architecture logicielle dAndroid

Manifeste

E tude de classes specifiques


a` Android

Bibliographie

Les projets Android

Activites

Programmation sous Android

Axe ISI - DSI

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

Une activite peut eventuellement


ne pas avoir dinterface utilisateur (cas des services
par exemple)

Fournisseur de contenu (Content provider)


stockees
sur le terminal
Niveau dabstraction pour toutes donnees
aux autres
Android encourage la mise a` disposition de ses propres donnees
programmes
sur la facon dont on accedera

Le content provider le permet en proposant un controle

aux donnees

Programmation sous Android

Axe ISI - DSI

13 / 51

Concepts de base

Un peu de vocabulaire

Termes importants

Intention (Intent)
`
enement

Une intention est un message systeme


quon peut qualifier dev

enements

Emis par le terminal pour prevenir


les applications de la survenue dev
(cas
enements

`
enements

des ev
systemes)
ou par tout autre application (cas des ev
applicatifs).
`
- Systeme
:
Insertion dune carte SD

Reception
dun SMS
...

- Applicatif : (on peut imaginer)

Un Intent Le logiciel NetSpyR&T demarre

Un Intent Lutilisateur arrive a` Paris en utilisant les informations de geolocalisation


du terminal

Programmation sous Android

Axe ISI - DSI

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

- Service permettant decouter


une playlist (independamment
de toute activite)

Manifeste (Manifeste)

Point de depart
de toute application Android

services...)
Permet de declarer
ce que lapplication contient (activites,

a` Android (que fait-on apparaitre dans le


Precise
comment ces composants sont relies
menu ? ...)

de la webcam, acces
` au reseaux,

Precise
les permissions de lapplication (controle
` au service de localisation...)
acces
Programmation sous Android

Axe ISI - DSI

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)

Langage de balisage extensible pour structurer des donnees

Positionnement XML (XML Layout)


Permet de concevoir des interfaces plus simplement quen langage Java
`
Permet concretement
d instancier les widgets
er
e par des outils qui permettent de construire
Ce fichier est souvent gen
graphiquement les interfaces

Programmation sous Android

Axe ISI - DSI

16 / 51

Concepts de base

Un peu de vocabulaire

Termes importants

Identifiant uniforme de ressource (Uniform Resource Identifier - URI)


`

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

moyens dagir sur la ressource ou dobtenir une representation


de la ressource en

` primaire.
decrivant
son mode dacces

Exemple : http://www.wikipedia.org/ identifie une ressource (page daccueil Wikipedia)


et

`
peut etre

implique quune representation


de cette ressource (une page HTML en caracteres
encodes)

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

en obtenir une copie reelle.

Programmation sous Android

Axe ISI - DSI

17 / 51

Concepts de base

Un peu de vocabulaire

Termes importants

Conteneur (Container)

ee

Permet de disposer un ensemble de widgets pour obtenir la presentation


desir
La plupart des outils de construction dinterfaces graphique fournissent des
le plus
gestionnaires de disposition (layout manager) qui sont organises

frequemment
en conteneurs.

Equipement
Android virtuel (Android Virtual Devices)

Les AVD permettent de simuler lexecution


dun terminal Android sur un ordinateur
Ces terminaux sont personnalisables (version dAndroid, type de processeur, espace
de stockage...).

Simplifie le developpement
et la mise au point des applications

Programmation sous Android

Axe ISI - DSI

18 / 51

Concepts de base

Architecture logicielle dAndroid

Architecture logicielle dAndroid


Architecture

Programmation sous Android

Axe ISI - DSI

19 / 51

Les projets Android

Plan

Presentation
dAndroid

Activites

Concepts de base

Layout XML

Les projets Android


un projet a` partir dun exemple
Creer
son propre projet
Creer

Structuration globale des repertoires

Manifeste

E tude de classes specifiques


a` Android

Bibliographie

Programmation sous Android

Axe ISI - DSI

20 / 51

Les projets Android

un projet a` partir dun exemple


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

21 / 51

Les projets Android

un projet a` partir dun exemple


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

21 / 51

Les projets Android

un projet a` partir dun exemple


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

21 / 51

Les projets Android

un projet a` partir dun exemple


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

21 / 51

Les projets Android

son propre projet


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

22 / 51

Les projets Android

son propre projet


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

22 / 51

Les projets Android

son propre projet


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

22 / 51

Les projets Android

son propre projet


Creer

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

22 / 51

Les projets Android

Structuration globale des repertoires

Structure dun projet Android


Structure du projet vue sous Eclipse

Programmation sous Android

Axe ISI - DSI

23 / 51

Les projets Android

Structuration globale des repertoires

Structure dun projet Android : la racine

Repertoire
/

manifest.xml : Le fichier manifest qui decrit


lapplication
build.xml : Le script Ant qui permet de compiler lapplication et de linstaller sur le terminal
es
utilises
par le
default.properties et local.properties : Deux fichiers de propriet
script Ant

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

Programmation sous Android

Axe ISI - DSI

24 / 51

Les projets Android

Structuration globale des repertoires

Structure dun 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 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

Programmation sous Android

Axe ISI - DSI

25 / 51

Les projets Android

Structuration globale des repertoires

Structure dun projet Android : les executables

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

qui contient les ressources de lapplication (fichier zip)


bin/votreApp.ap : Repertoire

bin/votreApp-debug.apk : Repertoire
qui contient la veritable
application Android

Programmation sous Android

Axe ISI - DSI

26 / 51


Activites

Plan

Hello world++

Presentation
dAndroid

Concepts de base

Layout XML

Les projets Android

Manifeste

Activites

Definition
Cycle de vie

E tude de classes specifiques


a` Android

Bibliographie

Programmation sous Android

Axe ISI - DSI

27 / 51


Activites

Definition

Quest ce quune activite ?

Definition
Une activite (Activity) = une IHM pour un cas dutilisation (cf cours UML) : Exemple : Soit une
application denvoi de SMS

- Une activite pour choisir un contact dans le repertoire


- Une activite pour la saisie du message
- Une activite pour afficher le journal des envois

Dun point de vue operationnel


:

- Une activite doit heriter


de la classe android.app.Activity

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

Programmation sous Android

Axe ISI - DSI

28 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le cycle de vie

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le cycle de vie

onCreate() :

ee
quand lactivite est cre ee

Methode
execut
` dune application, cette
Si cest la lactivite est la premiere

quand lutilisateur execute

methode
est donc appelee
lapplication

pour initialiser :
Methode
utilisee
- la vue XML

temporaires
- si necessaire,
les fichiers/donnees

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le cycle de vie

onRestart() :

ee
lorsque on redemarre

` un
Methode
execut
lactivite apres
(provoque par un appel de la methode

arret
stop())

quand lapplication repasse


Cette methode
est donc appelee
` un arret
prolonge
en premier plan apres

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le cycle de vie

onStart() :

ee
apres
` chaque onCreate() ou
Methode
execut
onRestart()

sauvegardees
durant le
Si necessaire,
recharger les donnees

dernier arret

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le 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

- mise a` jour des donnees


entre temps (avant le onResume())

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le cycle de vie

onPause() :

ee
a` chaque fois que :
Methode
execut

lutilisateur passe a` une autre activite,


lutilisateur demande un finish() sur cette activite
`
de la memoire

le systeme
a besoin de liberer

ee
systematiquement

Remarquer que la methode


est execut
avant chaque onStop()

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

prochaine activite ne demarrera


pas tant que lexecution
de

cette fonction nest pas terminee

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le cycle de vie

onStop() :

ee
avant chaque mise en sommeil
Methode
execut

ee
avant chaque onDestroy()
Methode
execut

Liberation
des ressources

Programmation sous Android

Axe ISI - DSI

29 / 51


Activites

Cycle de vie

Cycle de vie dune activite


Le 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

les fichiers temporaires


Si necessaire,
liberer

Programmation sous Android

Axe ISI - DSI

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();
}
...
}

Programmation sous Android

Axe ISI - DSI

30 / 51

Layout XML

Plan

Layout XML
XML
Utiliser des layouts XML

Presentation
dAndroid

Concepts de base

Les projets Android

Manifeste

Activites

E tude de classes specifiques


a` Android

Bibliographie

Programmation sous Android

Axe ISI - DSI

31 / 51

Layout XML

XML

et extensible
XML, format textuel, structure,

Definition
eXtensible Markup Language

Langage de balisage extensible pour structurer des donnees


Deux versions : 1.0 et 1.1

Exemple simple dutilisation de XML


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

<?xml version="1.0" encoding="ISO-8859-1"?>


<BIBLIOTHEQUE>

<!-- En-tte du fichier XML (i.e. prologue) -->


<!-- Balise d'ouverture de BIBLIOTHEQUE -->

<MAGAZINE>
<TITRE>Science et Vie</TITRE>
<DATEPARUTION>01-02-2012</DATEPARUTION>
<PRIX devise="Euro">4.20</PRIX>
</MAGAZINE>

<!-- On dclare un MAGAZINE -->

<LIVRE type="education" >


<TITRE>L'art du dveloppement Android</TITRE>
<AUTEUR>Mark Murphy</AUTEUR>
<PRIX devise="Euro">32.30 </PRIX>
</LIVRE>

<!-- On dclare un LIVRE de type "education" -->

<LIVRE type="roman">
<TITRE>Le livre d'Android</TITRE>
<AUTEUR>Patrick Beuzit</AUTEUR>
<PRIX devise="Dollar">22.25</PRIX>
</LIVRE>

<!-- On dclare un LIVRE de type "roman" -->

<!-- "PRIX" est une balise, "devise" une cl, "32.30" une valeur -->

...
</BIBLIOTHEQUE>

Programmation sous Android

<!-- Balise de fermeture de BIBLIOTHEQUE -->

Axe ISI - DSI

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

Programmation sous Android

Axe ISI - DSI

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

(L2) xmlns:android="..." : Declaration


de lespace de noms XML dAndroid

(L3) android:layout width="..." : la largeur du layout remplit le parent (ici lecran)

(L4) android:layout height="..." : la hauteur du layout remplit le parent (ici lecran)


(L5) android:orientation="..." : les widgets se suivront dans une direction ici verticale
Programmation sous Android

Axe ISI - DSI

33 / 51

Layout XML

XML

et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android

TextView (lignes 7 a` 11)

(L7 et L11) <TextView ... / > : le widget defini


ici est un label (un texte)
(L8) android:id="@+id/text" : identifiant associe a` ce widget (cf. code java)
(L9) android:layout width="wrap content" : largeur du widget adapte au texte quil contient
(L10) android:layout height="wrap content" : hauteur du widget adapte au texte quil contient
(L11) android:text="Hello, I am a TextView" : texte affiche par le widget
Programmation sous Android

Axe ISI - DSI

33 / 51

Layout XML

XML

et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android

Button (lignes 13 a` 17)

(L13 et L17) <Button .../ > : le widget defini


ici est un label (un texte)
android:id="@+id/button" : identifiant associe a` ce widget
une instance de la classe Button pour manipuler ce widget :
En java, on va creer
Button myButton = (Button) findViewById(R.id.button);

Programmation sous Android

Axe ISI - DSI

33 / 51

Layout XML

XML

et extensible
XML, format textuel, structure,
Exemple de layout XML dans Android

ImageView (lignes 19 a` 24)


(L19 et L24) <ImageView ... / > : (L20) android:id="@+id/imageView1" : identifiant de limage
(L21) android:layout width="161dp" : la largeur de limage est de 161 dot point
a` limage
(L22) android:layout height="wrap content" : prend la hauteur adaptee
e android:layout gravity
(L23) android:layout weight="0.36" : voir la propriet
(L24) android:src="@android:drawable/sym action email" : URI de limage
Programmation sous Android

Axe ISI - DSI

33 / 51

Layout XML

Utiliser des layouts 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

Programmation sous Android

Axe ISI - DSI

34 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html

E diter le layout avec un editeur


XML.

Exemple sous eclipse :


Programmation sous Android

Axe ISI - DSI

35 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html

E diter le layout avec un editeur


XML.

Exemple sous eclipse :


Programmation sous Android

Axe ISI - DSI

35 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html

E diter le layout avec un editeur


XML.

Exemple sous eclipse :


Programmation sous Android

Axe ISI - DSI

35 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html

E diter le layout avec un editeur


XML.

Exemple sous eclipse :


Programmation sous Android

Axe ISI - DSI

35 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
manuelle
Documentation disponible sur
http ://developer.android.com/guide/topics/ui/declaring-layout.html

E diter le layout avec un editeur


XML.

Exemple sous eclipse :


Programmation sous Android

Axe ISI - DSI

35 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer
Choix du layout

ements

LinearLayout : Il organise les differents


el
de votre interface sur une ligne ou sur une
colonne.

exactes des el
ements

AbsoluteLayout : Cette mise en page vous laisse definir


les coordonnees
qui le composent.

ements

RelativeLayout : Il permet de definir


la position des el
en fonction de la position de leurs
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.

Placer les widgets

EditText : Un champ de texte editable


Toast : Un pop up message qui saffiche sur

lecran
ImageView : Une image
CheckBox : Une case a` cocher
Button : Un bouton cliquable

Programmation sous Android

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

Axe ISI - DSI

36 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts XML

un layout XML
1. Creer

Creation
avec plugin (ou autre outil externe)

Programmation sous Android

Axe ISI - DSI

37 / 51

Layout XML

Utiliser des layouts 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,

Le code applicatif doit alors charger le layout dans la methode


onCreate() de lactivite via un

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

Programmation sous Android

Axe ISI - DSI

38 / 51

Layout XML

Utiliser des layouts XML

Integrer
des layouts XML dans mon application

3. Instancier les widgets sur lesquels on veut agir

une instance de chaque


Il va falloir maintenant dans la methode
onCreate() de votre activite creer
objet de votre layout XML que vous souhaitez manipuler.
Exemple :
Button myButton = (Button) findViewById(R.id.my button);
myButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});

Programmation sous Android

Axe ISI - DSI

39 / 51

Manifeste

Plan

Presentation
dAndroid

Concepts de base

Les projets Android

Activites

Layout XML

Programmation sous Android

Manifeste
Avant-propos
Contenu
Conventions
Les ressources
Les permissions
Exemple

E tude de classes specifiques


a` Android

Bibliographie

Axe ISI - DSI

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

Programmation sous Android

Axe ISI - DSI

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

(`a quels intents ils reagissent)

- Precise
leurs capacites
`
Ceci permet au systeme
de savoir comment lancer chaque partie de lapplication afin de

satisfaire au principe de reutilisabilit


e.

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)

Programmation sous Android

Axe ISI - DSI

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>)

Programmation sous Android

Axe ISI - DSI

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":::>

Ces ressources sont definies


dans le repertoire
res de lapplication.

Programmation sous Android

Axe ISI - DSI

44 / 51

Manifeste

Les permissions

Manifeste

Permissions
sauf sil le precise

Une application ne peux pas utiliser certaines fonctionnalites


dans le fichier
manifest

Il faut donc preciser


les permissions necessaires
grace a` : <uses-permission>
Il existe des permissions standards :
- android.permission.CALL EMERGENCY NUMBERS
- android.permission.READ OWNER DATA
- android.permission.SET WALLPAPER
- android.permission.DEVICE POWER

Il est possible de definir


ses propres permissions

Programmation sous Android

Axe ISI - DSI

45 / 51

Manifeste

Les permissions

Manifeste

Intent Filter
`

Ils informent le systeme


a` quelles intent les composants peuvent reagir
Un composant peut avoir plusieurs filtres

Exemple : Cas dun editeur


de texte

- Filtre pour editer


un document existant
- Filtre pour initier un nouveau document

Un filtre doit posseder


une action qui definit
a` quoi il correspond

Programmation sous Android

Axe ISI - DSI

46 / 51

Manifeste

Exemple

Manifeste
Exemple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.eyrolles.android.multimedia"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".CapturePhoto"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.CAMERA"/>
</manifest>

Programmation sous Android

Axe ISI - DSI

47 / 51

Etude
de classes specifiques
a` Android

Plan

Presentation
dAndroid

Layout XML

Concepts de base

Manifeste

Les projets Android

E tude de classes specifiques


a` Android

Activites

Bibliographie

Programmation sous Android

Axe ISI - DSI

48 / 51

Etude
de classes specifiques
a` Android

Travaillons a` partir de la documentation en ligne


android.widget.Toast
android.os.CountDownTimer
android.os.BatteryManager
android.speech.tts.TextToSpeech
android.hardware.Camera
android.hardware.Sensor

Programmation sous Android

Axe ISI - DSI

49 / 51

Bibliographie

Plan

Presentation
dAndroid

Layout XML

Concepts de base

Manifeste

Les projets Android

E tude de classes specifiques


a` Android

Activites

Bibliographie

Programmation sous Android

Axe ISI - DSI

50 / 51

Bibliographie

Ressources
Livres

Autres documents (cours...)


Romain Raveaux, Cours Android --- Developpement et API, Laboratoire L3I, IUT de La Rochelle.
Nazim Benbourahla, Diverses ressources fournies via Developpez.com.
Philippe Lacomme, Raksmey Phan, Creer des applications Android

Programmation sous Android

Axe ISI - DSI

51 / 51

Anda mungkin juga menyukai