Table Of ContentANDROID
Apprenez à développer efficacement
pour le leader des OS mobiles
Florent Garin
Gérant fondateur de la société DocDoku
Certifié Sun Java 2 Programmer
et Sun Entreprise Architect for J2EE
3e édition
DU NOD
Toutes les marques citées dans cet ouvrage sont des
marques déposées par Jeurs propriétaires respectifs.
Illustration et maquette de couverture : WIP
Le logo du robot utilisé sur la couverture est reproduit
à partir d'ww œuvre créée et partagée
par l' Android Open Source Project.
Il est utilisé conformément aux termes
de la Creative Co,r11no11s 2.5 Attributio11 Lice11se.
le pictogramme qui figure ci·contre f ~..,· 9 ~ J~'~: ~di·,e.-~ unede
mérite une explicotion. Son objet est COI bru1c11a am ~ .,,.._, .,.
d'olerter le lectelJf wr lo menoce q®i,s "1V IJe$,O~-~~,,lopo~·~~~,,.'
rcpréscn,e pour tovenir de l'éait, IQ _,,,;a,, clc ..........0 OCJ .........
po,1;<J;ir.meot don, le domc,;ne DANGER °"'"'lie, el de le, fo;..e lôte, ces
detédtiootechniqueetuni.....,.. ~fltovjOIXd't...imenocée.
toire, le développement mos.sif dv Noui roppelom dooc (t\le toute
pl,°""'P;lloge. ~' pomel~ ou lolole,
le Coc'e de lo propriété inrellec· de lo présente publication eil
tuel1e du 1., juillet 1992 interdit lEOOioo.KUŒ inaerdite SCl'I$ autorisation de
eneffeieJIJ)ress.émentlophofoco- Tll:LEUVRE l'ovteur. de M)n éôlfeur ou du
pt8 à \!$098 collectif $ON outori· Centre fronçoi$d 'cxploilolion cfu
$0~on ~ oyoti4 ~oit. O,, «Ne F)(Oliqve &-oit de copie (CFC, 20, rve des
(e" g~nér'oli$ée don, les étobli$1eMenh Gtondh~,ugu$1În$, 75006 P0tî$I,
© Dunod, Paris, 2009, 2011, 2012
ISBN 978-2-10-058885-5
Le Code de lo propriété inleUeauelle n'outorisont, oux lermes de l'ortide
L. 122·.5, 2° et 3° o), d'une port, que los «copies ou 1cpioduc1ions stllctcment
réservêe à l'usage privé du copiste et non destinées ô une utilisation collective•
et, d'oui·e porr, que le$ or\Ol)'$e.S el le$ oouttes c::îtotions dons un but d'exemple et
d'illuslTdion, c toote 1epr6.senlotion oo ,eproduclion intégrale ou partielle foi!G
sons le consen~ment de l'au~ur ou de ses oyonts droit ou oyonts couse est
illicite • (ort. l. 12241,
Cette représenlobon oo reproduction, por quelqoo procédé que ce $Oil, consfitu&
roit don: une oootrefoçon sanctionnée por les ortides l. 335-2 el suivanls du
Code de k, propti6t6 inteUcctucllc.
Table des matières
Avant-propos....................... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xl.
Chapitre l - Présentation.................................................... l
1.1 Qu'y a-t-il d1ns la boîte 1............................................... .l
1.2 L'Open 1-landset Alliance............................................... l
l . 2. l Les consrn,creurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l
l .2.2 La Ucence........................................................... l
1.3 Les applications de ba<;e • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • .1
1.4 Pœitionnement par rapport à son environnement. . . . . . . . . . . . . . . . . . . . . . . . . 2.
l.4.l ViPhone............................................................ .li.
l.4.2 Nokia.............................................................. 1
l .4.3 Windo<.vs Mobile..................................................... 1
l.4.4 BlackBerry.......................................................... 1
l .4.5 HP WlebOS .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . .§.
l .4.6 JavaFx.. .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . .lQ.
l .4.7 Flash/Flex. .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . .lQ.
l .4.8 JavaME..... .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. ll
l.4.9 Lesaurres........................................................... ll
Chapitre 2- Architecture logicielle........................................... l1
2.1 Un Linux sous le capot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l1
El--------------------------
Android
2.2 Des bibliothèques C/C+ +............................................... .Ll.
2.3 Un middleware Java.................................................... il
2.4 Dalvik .. .. . . . . .. . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . il
2.5 Le JDK................................................................ li.
Chapitre 3 - Le modèle de programmation..................................... 12.
3.1 Un développement presque clao;sique.................................... .12.
3. l . l Règles de codage . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . 20
3.2 Le SDK Android....................................................... 22
3. 2. l P!ug-in EcUpse. . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . 23
3.2.2 ScriprsAnr.......................................................... 26
3.3 Développer, exécuter et débugger........................................ 1.6.
3.3. l lnsral.larion.......................................................... 1.6.
3.3.2 Dalvik DebugMonir.or Service (DDMS) . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . 1J..
3.4 Structure d'un projet................................................... 28
3.4. l Le manifesr......................................................... 30
3.4.2 Les ressources....................................................... 38
3.5 Le NOK (Native Development Kit)..................................... 43
3. 5. l Présenrarion............. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . 43
3.5.2 lnsral.larion.......................................................... 43
3. 5 .3 Dévewppemenr . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . 44
3.6 Et les WebApp?....................................................... 45
Chapitre 4 - Construire l'interface graphique................................. 49
4.1 Le rendu visuel .. . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . 49
4.2 Approche programmatique ou déclarative................................ 50
4.3 Les composants graphiques.............................................. 55
4.3. l TexrView........................................................... 55
4.3.2 Ed.irTexr............................................................ 56
4. 3 .3 CheckBox . . .. . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . :il
4.3.4 ToggleBurr.on........................................................ 58
4. 3 .5 Rad.ioGroup. . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . 59
4.3.6 Burron............................................................. 1i.l
Tobie des matières -----------------------ŒJ
4.3.7 Spinner .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . 62
4.3.8 AuroComplereTexrView.............................................. 63
4.3.9 DarePi.:ker.......................................................... 65
4.3./0 TimePicker.......................................................... 65
4.3. l l Gal.Ier~............................................................. 66
4.3./2 lmage\'iew.......................................................... 69
4.3./3 lmageBurr.on........................................................ ]Q
4 .3. l 4 ProgressBar . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . 11
4 .3. l 5 Anal-Og2lock. . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . 11
4.3./6 DigiralClock......................................................... 11
4.3.17 Rar:ingBar.............. ............................................. 74
4.4 Les layoul~............................................................ 75
4.4.l LisrView................... ......................................... 75
4.4.2 FrameLayour........................................................ 76
4.4.3 LinearLayour........................................................ 76
4.4.4 TableLayour......................................................... 76
4.4.5 RelariwLayour...................................................... 77
Chapitre 5 - Le modèle de composants........................................ 12.
5.1 Une force modularité............... .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . 79
5.2 Quatre familles de composants.......................................... 80
5.3 La navigation encre activités............................................ 80
5 .3 . l t.: objerl nrenr .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . fil
5 .3. 2 La résolution . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. 82
5 .3 .3 La corr.m,micarion enrre acrivirés....... .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . 85
5 .3.4 Gestion du cyle de vie des acrivirés...................................... 87
5 .3 .5 Les fra~enr.s . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . 89
5.4 Les services............................................................ .2.!.
5.4.l LelangageAIDL.................................................... .22.
5.4.2 lmplérr.enrarionduservice............................................. .2!i.
5 . 4 .3 PubUcûtion du service . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . 21.
5.4.4 Côrédenr.......................................................... .2fl.
5. 4 .5 Srarred service . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . . . . .1.00.
[:}--------------------------- Android
5.5 Le bus de messages..................................................... 100
5. 5. l Deux modes d'émission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .lQl
5. 5. 2 Deux façons de s'abonner aux événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
5.5 .3 lmplémenrarion du receiver............................................ .lQ1
5. 5. 4 Une durée de vie rrès courre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .lQi
Chapitre 6 - La persistance des données....................................... 109
6.1 Sauvegarder l'érnt des applications....................................... .l.Q2.
6.2 Système de fichiers..................................................... .l.lQ
6. 2. l Lecrure d'un fichier................................................... .l.lQ
6. 2. 2 Écrire dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ill
6.3 Les préférences utilisateur............................................... fil
6. 3. l Lecrure des préférences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lll
6.3.2 Écrirure des préférences............................................... fil
6. 3 .3 /HM de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
6.4 SQLite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
6. 4. l Optimisation des performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
6.5 Exposer ses données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
6. 5. l Utiliser les providers.................................................. fil
6.5.2 Modifier les données duconrenr provider....... .. . . . . . . . .. . . . . . . . . . .. . . . . fil
6. 5 .3 Créer son propre Conrenr Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ill
Chapitre 7 - Conception générale.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ll2.
7.1 Architecture logicielle.................................................. .!12.
7. l . l Développer de.; appUcations réactives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .!12.
7.1.2 l..aconcepriongénérale ................................................ fil
7. l .3 Véhiculer des données enrre composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Lli
7. l . 4 Le maîrre mor : modulariré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
7.2 Infra~tructure back office............................................... fil
7. 2. l Serveurs d'appl.icarions................................................ fil
7. 2. 2 Google App Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
7. 2 .3 CouchDB.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
6
Tobie des matières
Chapitre 8- Fonctions IHM poussées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lli
8.1 Les menus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lli
8. /. / Les, Oprion Menus•................................................ ill
8. / .2 Les , Conrexr Menus•............................................... lli
8. / .3 Les • Popup Menus • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .l.iQ.
8.2 Étendre les composants exL~tants........................................ ill
8.3 Les animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . li§.
8.4 PersonnalL~tion en fonction de la configuration.......................... lli
8.4. l Les res,;ources alremarives...... .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . lli
8.5 Notifier l'utilL~ateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IB
8.5.l LeToasr ............................................................ ill
8 .5. 2 Barre de srarur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .lli.
8 .5 .3 Les bo~es de dial-Ogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .il§.
8.6 20 et 30.............................................................. ..!JiQ.
8.6.l Graph~meendeuxdimensions ......................................... .!fil.
8.6.2 Graph~meen rrois dimensions......................................... IB
8. 7 App Widgecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .W.
8.7. l Définièonde l'IHM......... .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . .lfüi.
8.7.2 App\VdgerPro-vider.................................................. ill
8.7 .3 Écran de config,.,ration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . llQ
8.8 La notion de Ta~k...................................................... lll
8. 9 Styles et thèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lli
8.10 La recherche Android.............................. . . . . . . . . . . . . . . . . . . . . ill
Chapitre 9- Interaction avec le matériel...................................... l1l
9.1 Les fonctbns de téléphonie............................................. lll
9. l . l Les appels vocaux.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lll
9. l .2 Réception de SMS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112.
9.1.3 EnvoideSMS ....................................................... ~
9.2 Géolocalisation........................................................ .li!2.
9. 2. l Sewice de lncal.isar ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
9.2.2 API decarr.ographie .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . IB
9.2.3 Laclas.;e MapView ................................................... .lfill.
El-------------------------- Android
9. 3 A Pl réseau ba~ niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
9.3.l EDGEet 3G ........................................................ fil
9.3.2 WiFi....... .. . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . .!.21
9. 3 .3 Bluer.oorh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IB
9.3.4 NFC (Near Field Communication)..................................... IB
9.4 L'appareil photo....................................................... 12.Q.
9.5 API Media ............................................................ .l.2a
9. 5. l MediaPlayer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.
9.5.2 MediaRecorder....... .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . 1Ql
9.5.3 JET Engine. .. . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . .2Ql
9.6 Le vibreur............................................................. 202
9.7 L'écran tactile......................................................... .2Q1
9.8 L'accéléromètre........................................................ 204
Chapitre 10- Le réseau...................................................... 1SJ1.
10.1 Connexion à desserveursdL~tanrB.. .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . 1S[]_
JO. l. l Les bases de données.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1S[]_
10. l. 2 Quels pror.ocoies réseaux uriUser? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
JO. l. 3 Les uoeb serviœs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10. l.4 SOAP..... .. . . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . 1.lQ
JO.l.5 IDX(PlainOldXML) ............................................... fil
10. l.6 )SON (JavaScript Object Notation).................................... fil
JO./. 7 XMPP............................................................. fil
Chapitre 11 - Sécurité et déploiement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
11.1 Signer les applic.1tions....................... . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
l l . l. l La phase de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
l l . l. 2 La phase de /)ûCkaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.2 Publier son application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
l l. 2. l Gestion des versions.................................................. 228
l l. 2. 2 Google Play Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
[!]
Tobie des matières
Chapitre 12 - Tablettes et autres appareils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lli
12.1 Les tablettes tactiles.................................................... lli
12. l. l Différences avec le mobile............................................. 232
12. l .2 Androd 3.x er 4.x... .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . .. . . . . . . . . .. . . . . 233
12.2 La fragmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . fil
12.2. l De nombreux frameu:ork.s............................................. 234
12.2.2 Les applications hybrides.............................................. 234
12.3 Le futur: HTMLS et CSS3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12.3.l HTMl5=HTML+JavaScripr+CSS .................................... 1:IB
Index....................................................................... 245