Table des matières Préface........................................................... VII Partie I – Concepts de base............ 1 1. Tour d’horizon....................................... 3 Étape 2 : compilation, installation et exécution de l’application........................................ 26 Eclipse.................................................. 26 Ligne de commande............................. 27 4. Étude de votre premier projet.............. 31 Avantages et inconvénients de la programmation des smartphones.... 3 Contenu d’un programme Android . ....... 4 Fonctionnalités à votre disposition ......... 5 Tour d’horizon... de ce livre..................... 6 2. Partir du bon pied.................................. 7 Étape 1 : installation de Java .................. 7 Installation du JDK . ........................... 7 Apprendre Java ................................... 8 Étape 2 : installation du SDK Android ... 9 Installation des outils de base . ........... 9 Installation des SDK et des greffons.... 9 Étape 3 : installation d’ADT pour Eclipse . 13 Étape 4 : installation d’Apache Ant . ...... 14 Étape 5 : configuration de l’émulateur ... 15 Étape 6 : configuration du terminal ........ 19 Structure d’un projet................................ Contenu de la racine............................ À la sueur de votre front ..................... La suite de l’histoire ........................... Le fruit de votre travail ....................... 31 31 32 32 33 Contenu du manifeste.............................. 33 Au début, il y avait la racine................ 34 Application de votre application.......... 35 5. Quelques mots sur Eclipse.................... 37 Présentation d’ADT................................. 37 Travailler avec Eclipse............................. Comment importer un projet non Eclipse . Utilisation de DDMS........................... Création d’un émulateur . ................... Exécution d’un projet........................... Comment ne pas lancer un projet........ 38 38 41 42 43 43 Windows .............................................. 20 Autres IDE............................................... 44 Mac OS X et Linux .............................. 20 Les IDE et ce livre................................... 44 3. Votre premier projet Android . ............ 23 6. Amélioration de votre premier projet... 45 Étape 1 : création d’un nouveau projet.... 23 Gestion de plusieurs tailles d’écran ........ 45 Eclipse.................................................. 23 Versions d’Android reconnues par l’application....................................... 46 Ligne de commande............................. 25 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 5 24/10/12 09:18 VI L’art du développement Android Partie II – Activités......................... 49 7. Réécriture de votre premier projet...... 51 L’activité.................................................. 51 Dissection de l’activité............................ 52 Compiler et lancer l’activité.................... 54 8. Utilisation des layouts XML................. 55 Qu’est-ce qu’un positionnement XML ? . 55 Pourquoi utiliser des layouts XML ? . .... 56 Contenu d’un fichier layout .................... 57 Identifiants des widgets........................... 57 Utilisation des widgets dans le code Java . 58 Fin de l’histoire . ..................................... 58 9. Utilisation des widgets de base............. 61 Labels....................................................... 61 Boutons.................................................... 63 Images . ................................................... 63 Champs de saisie..................................... 64 11.Le framework des méthodes de saisie..... 99 Claviers physiques et logiciels................. 99 Adaptation à vos besoins......................... 100 Dire à Android où aller............................ 104 Mise en place........................................... 106 Enlevez-moi ça !...................................... 107 12.Widgets de sélection............................... 109 S’adapter aux circonstances ................... 109 Listes des bons et des méchants.............. 110 Modes de sélection............................... 112 Contrôle du Spinner . .............................. 114 Mettez vos lions en cage . ....................... 117 Champs : économisez 35 % de la frappe !. 121 Galeries . ................................................. 124 13.S’amuser avec les listes.......................... 125 Premières étapes ..................................... 125 Présentation dynamique . ........................ 127 Inflation des lignes................................... 129 Cases à cocher ........................................ 66 Aparté sur l’inflation............................ 130 Switchs..................................................... 68 Retour aux listes................................... 131 Boutons radio . ........................................ 70 Mieux, plus robuste et plus rapide . ........ 131 Résumé ................................................... 72 Utilisation de convertView................. 132 Remplissage......................................... 72 Autres propriétés utiles ....................... 72 Utilisation du patron de conception "support"....................... 134 Méthodes utiles ................................... 72 Lignes interactives................................... 135 Couleurs............................................... 73 10.Conteneurs.............................................. 75 14 .Encore plus de widgets et de conteneurs...................................... 141 Penser de façon linéaire : LinearLayout.. 76 Choisir..................................................... 141 Concepts et propriétés ........................ 76 Le temps s’écoule comme un fleuve ...... 146 Exemple . ............................................. 78 Prendre la bonne résolution..................... 147 Le modèle des boîtes............................ 82 Utilisation d’onglets ............................... 148 Tout est relatif : RelativeLayout.............. 84 Les pièces du puzzle . .......................... 148 Concepts et propriétés ........................ 84 Exemple . ............................................. 86 Tout câbler........................................... 149 Ajouts dynamiques............................... 152 Recouvrements de widgets................... 88 Tout faire basculer .................................. 156 Tabula Rasa : TableLayout....................... 89 Fouiller dans les tiroirs............................ 161 Concepts et propriétés ........................ 89 Autres conteneurs intéressants ............... 163 Exemple . ............................................. 91 15.Intégrer le navigateur de WebKit......... 165 Faire défiler : ScrollView . ...................... 92 Un navigateur, et en vitesse !................... 165 Tout placer dans une grille : GridLayout. 95 Chargement immédiat.............................. 167 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 6 24/10/12 09:18 Table des matières VII Navigation au long cours ........................ 168 Les handlers............................................. 215 Amuser le client . .................................... 169 Les messages . ..................................... 215 Réglages, préférences et options ............ 171 Les runnables . .................................... 218 16.Utilisation des menus............................. 173 Où est passé le thread de mon interface utilisateur ?.............................................. 218 Variantes des menus................................. 173 Menus d’options ..................................... 174 Menus contextuels .................................. 175 Illustration rapide..................................... 176 Encore de l’inflation ............................... 181 Structure XML d’un menu . ................. 181 Options des menus et XML.................. 182 Création d’un menu par inflation ....... 183 Au pays des géants.................................. 185 17.Affichage de messages surgissants........ 187 Les toasts ................................................ 188 Les alertes ............................................... 188 Mise en œuvre ........................................ 189 18.Gestion des événements du cycle de vie d’une activité.......................................... 193 L’activité de Schrödinger . ...................... 194 Vie et mort d’une activité ....................... 194 onCreate() et onDestroy() ................... 194 Désynchronisation .................................. 219 La théorie . .......................................... 219 AsyncTask, généricité et paramètres variables . ..................... 220 Les étapes d’AsyncTask ...................... 220 Exemple de tâche................................. 221 Threads et rotations................................. 224 Association manuelle de l’activité....... 225 Flux des événements............................ 228 Fonctionnement.................................... 228 Éviter les pièges....................................... 229 21.Création de filtres d’intentions............. 231 Quelle est votre intention ? ..................... 232 Composantes des intentions . .............. 232 Routage des intentions ........................ 233 Déclarer vos intentions ........................... 233 Récepteurs d’intention............................. 234 onStart(), onRestart() et onStop() ....... 195 Des intentions à chaque occasion............ 235 onPause() et onResume() .................... 195 Attention à la pause ................................ 235 L’état de grâce ........................................ 196 22.Lancement d’activités et de sous-activités.................................. 237 19.Gestion de la rotation............................ 197 Philosophie de la destruction................... 197 Activités paires et sous-activités . ........... 238 Tout est pareil, juste différent ................. 198 Démarrage............................................... 238 Choisir et consulter un contact............ 199 Création d’une intention ..................... 238 Sauvegarde de l’état............................. 201 Faire appel .......................................... 239 Il n’y a pas de petites économies ! . ........ 204 Navigation avec onglets . ........................ 242 Rotation maison....................................... 206 23.Utilisation des ressources...................... 247 … Mais c’est déconseillé par Google.. 209 Les différents types de ressources........... 247 Forcer le destin ....................................... 210 Théorie des chaînes ................................ 248 Tout comprendre...................................... 212 Chaînes normales ............................... 248 20.Utilisation des threads........................... 213 Formats de chaînes.............................. 248 Le thread principal de l’application......... 213 Texte stylé............................................. 249 Progresser avec les ProgressBar.............. 214 Formats stylés ..................................... 249 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 7 24/10/12 09:18 VIII L’art du développement Android Vous voulez gagner une image ? ............ 253 Corriger les icônes............................... 291 Les ressources XML................................ 254 Utilisation de l’espace ........................ 292 Valeurs diverses ...................................... 256 Et si ce n’est pas un navigateur ?........ 294 Dimensions ......................................... 257 Couleurs . ............................................ 257 26.Interfaces utilisateurs pour tablettes et grands écrans .................................... 295 Tableaux .............................................. 258 Pourquoi s’intéresser aux tablettes ?....... 296 Gérer la différence................................... 259 Ce que voit l’utilisateur........................... 296 Écrire dans les deux sens ........................ 263 Gérer les autres terminaux....................... 299 24.Définition et utilisation des styles......... 265 Styles : DRY............................................. 266 Éléments de style..................................... 267 Où appliquer un style . ........................ 267 Attributs disponibles............................ 268 Héritage d’un style............................... 268 Valeurs possibles.................................. 269 Thèmes : un style particulier................... 270 27.Utilisation de la barre d’action............. 303 Activation de la barre d’action................. 303 Éléments de menu dans la barre d’action . 304 Répondre au logo..................................... 305 Ajout de vues personnalisées à la barre d’action.................................... 306 Définition du layout............................. 306 Placement du layout dans le menu...... 308 Contrôle du clavier.............................. 308 Partie III – Honeycomb et tablettes. 271 N’oubliez pas les téléphones !................. 310 25.Gestion des différentes tailles d’écran. 273 28.Fragments............................................... 311 Écran par défaut....................................... 274 Tout en un................................................ 275 Penser en termes de règles, pas en termes de positions .................. 275 Utiliser des dimensions physiques ...... 276 Éviter les "vrais" pixels ...................... 276 Choisir des images adaptables ........... 276 Fait maison, rien que pour vous... . ......... 277 Introduction aux fragments...................... 311 Le problème résolu par les fragments.. 312 La solution des fragments.................... 312 La bibliothèque de compatibilité (ACL). 313 Création des classes fragments ............... 314 Fragments généraux............................. 314 ListFragment........................................ 315 <supports-screens> ............................ 277 Autres classes Fragment de base......... 320 Ressources et ensembles de ressources . 278 Fragments, layouts, activités et tailles d’écrans.................................................... 320 Trouver sa taille .................................. 279 Rien ne vaut la réalité.............................. 280 EU4YOU................................................. 322 Différences de densité.......................... 280 DetailsActivity...................................... 325 Ajustement de la densité...................... 280 Fragments et changements de configuration....................................... 326 Exploitez sans vergogne la situation ...... 281 Remplacer les menus par des boutons . 282 Concevoir en utilisant les fragments........ 327 Remplacer les onglets par une seule activité .......................... 282 29.Gestion des changements de plates-formes..................................... 329 Consolider les activités multiples........ 282 Exemple : EU4You ................................. 283 Des choses qui risquent de vous rendre nerveux.................................................... 329 Première version ................................. 283 Hiérarchie des vues.............................. 330 Corriger les polices............................. 289 Changement des ressources................. 330 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 8 24/10/12 09:18 Table des matières IX La jungle des versions.......................... 331 32.Accès et gestion des bases de données locales...................................................... 375 Détecter la version d’Android.............. 332 Présentation rapide de SQLite ................ 377 Envelopper l’API ................................ 333 Commencer par le début . ....................... 377 Patrons pour Ice Cream Sandwich et Honeycomb.......................................... 334 Mettre la table . ....................................... 380 La barre d’action................................. 335 Le retour de vos requêtes......................... 382 Gestion des modifications de l’API ........ 330 Isolation du code Ice Cream Sandwich/ Honeycomb.......................................... 336 Applications uniquement destinées aux tablettes................................................ 337 Partie IV – Dépôts de données, services réseaux et API................... 339 30.Accès aux fichiers................................... 341 Allons-y !................................................. 341 Lire et écrire............................................. 345 Stockage externe : un gain de place énorme....................................... 349 Où écrire.............................................. 349 Quand écrire........................................ 350 StrictMode : éviter le code poussif ......... 350 Mise en œuvre de StrictMode............... 351 StrictMode en action............................ 351 Ajouter des données ............................... 381 Requêtes brutes ................................... 382 Requêtes normales .............................. 383 Utilisation des curseurs ...................... 383 CursorAdapter personnalisés.............. 384 Créer ses propres curseurs................... 385 SQLite et versions d’Android............... 385 Flash semble plus rapide qu’il ne l’est ... 386 Embarquer votre base.............................. 386 Des données, des données, encore des données.................................. 387 33.Tirer le meilleur parti des bibliothèques Java......................................................... 389 Ant et JAR .............................................. 389 Limites extérieures ................................. 390 Suivre le script ........................................ 391 Autres langages de scripts....................... 394 Uniquement pour le développement, merci ! ................................................. 352 34.Communiquer via Internet................... 397 Savoir être strict dans certains cas ..... 352 Opérations HTTP via HttpClient . ... 398 Systèmes de fichier Linux : la victoire de sync et vous gagnez ................................ 354 Traitement des réponses . .................... 399 31.Utilisation des préférences.................... 357 Obtenir ce que vous voulez .................... 357 Tirer parti des composants Android pour Internet............................................ 402 Définir vos préférences ........................... 358 Téléchargement de fichiers................... 403 PreferenceFragment et PreferenceActivity.. 358 Suite de la lutte contre le code poussif ... 412 REST et relaxation ................................. 397 Autres points importants ..................... 401 Préférences avec les fragments................ 359 La nouvelle approche pour les préférences............................. 360 Ajouter la compatibilité ascendante.... 363 Partie V – Services.......................... 413 35.Théorie des services............................... 415 L’ancien modèle de gestion des préférences..................................... 364 Pourquoi les services ?............................ 416 Laisser les utilisateurs choisir . ............... 365 La classe Service.................................. 416 Ajouter un peu de structure..................... 369 Méthodes du cycle de vie..................... 416 Boîtes de dialogue................................... 371 Entrée du manifeste.............................. 417 Mise en place d’un service...................... 416 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 9 24/10/12 09:18 X L’art du développement Android Communiquer avec les services............... 418 Imposer les permissions via le manifeste . 461 Envoi de commandes avec startService()................................. 418 Papiers, s’il vous plaît !........................... 462 Liaison avec bindService().............. 419 Imposer les permissions ailleurs ........ 462 Communication à partir des services....... 420 Nouvelles permissions avec les anciennes applications.............................................. 463 Fonctions de rappel/écouteurs............. 420 Permissions : tout ou rien ....................... 463 Intentions diffusées.............................. 420 Résultats en attente.............................. 421 39.Accès aux services de localisation......... 465 Messenger............................................ 421 Fournisseurs de localisation : ils savent où vous vous cachez................................ 466 Notifications......................................... 421 Où suis-je ?.............................................. 466 36.Patrons de base pour les services.......... 423 Se déplacer . ............................................ 467 Downloader.............................................. 423 Est-on déjà arrivé ? Est-on déjà arrivé ? . 469 Conception........................................... 424 Tester... Tester... ...................................... 469 Implémentation du service................... 424 Utilisation du service........................... 427 40.Cartographie avec MapView et MapActivity....................................... 471 Lecteur musical........................................ 428 Termes d’utilisation................................. 472 Conception........................................... 429 Empilements ........................................... 472 Implémentation du service................... 429 La clé de tout........................................... 472 Utilisation du service........................... 430 Les composants essentiels....................... 473 Cartes optionnelles.............................. 475 L’interface de service web....................... 432 Conception........................................... 432 Le problème de la rotation................... 432 Implémentation du service................... 433 Utilisation du service........................... 438 Testez votre contrôle................................ 476 Zoom ................................................... 476 Centrage............................................... 476 Configuration des notifications . ............. 445 Couches sur couches . ............................. 476 Classes Overlay.................................. 477 Affichage d’ItemizedOverlay ........... 477 Gestion de l’écran tactile . .................. 479 Notifications matérielles ..................... 446 Moi et MyLocationOverlay . ................. 479 Icônes .................................................. 447 Terrain accidenté...................................... 480 Les notifications en action ...................... 448 Cartes et fragments.................................. 481 Limitez-vous aux dernières versions d’Android............................................. 482 Utilisez onCreateView() et onActivityCreated().................... 483 Hébergement du fragment dans une MapActivity........................ 484 Alternative aux cartes et aux fragments. 485 37.Alerter les utilisateurs avec des notifications............................. 445 Rester au premier plan............................. 451 FakePlayer revisité............................... 452 Notifications avec Ice Cream Sandwich et Honeycomb.......................................... 453 Partie VI – Autres fonctionnalités d’Android......................................... 457 41.Gestion des appels téléphoniques......... 487 38.Demander et exiger des permissions.... 459 Le Manager . ........................................... 488 Maman, puis-je ? .................................... 460 Appeler ................................................... 488 Halte ! Qui va là ? . ................................. 460 C’est vous qui téléphonez ! .................... 491 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 10 24/10/12 09:18 Table des matières XI 42.Polices de caractères.............................. 493 Problèmes éventuels................................ 530 Sachez apprécier ce que vous avez ......... 493 Versions des terminaux........................ 530 Polices supplémentaires........................... 495 Tailles et densités des écrans .............. 531 Le problème des glyphes......................... 497 Intégration limitée................................ 531 43.Outils de développement supplémentaires..................................... 499 Hierarchy Viewer .................................... 499 DDMS (Dalvik Debug Monitor Service). 503 Journaux ............................................. 504 Performances et batterie...................... 531 Look and Feel....................................... 532 Distribution.......................................... 532 Modifications du navigateur depuis Ice Cream Sandwich................................ 532 Stockage et extraction de fichiers......... 505 HTML5 et les navigateurs Android alternatifs................................... 533 Copies d’écran .................................... 506 HTML5 : un autre point de référence...... 533 Mise à jour de la position ................... 507 Appels téléphoniques et SMS .............. 507 Gestion de la mémoire......................... 510 adb : comme DDMS, mais au clavier . ... 511 Devenir graphiste..................................... 512 Partie VII – Environnements alternatifs......................................... 515 46.PhoneGap............................................... 535 Qu’est-ce que PhoneGap ?...................... 535 Comment s’y prendre ? ....................... 536 Fonctionnalités..................................... 536 Aspect des applications........................ 537 Distribution des applications . ............ 537 Et les autres plates-formes ? . ............. 537 Utilisation de PhoneGap.......................... 538 44.Rôle des environnements alternatifs.... 517 Installation........................................... 538 Au début, il y avait Java... . ..................... 518 Création et installation d’un projet...... 538 …Et ils virent que cela était bon............. 518 PhoneGap Build................................... 539 Ne pas suivre la mode . ........................... 519 PhoneGap et l’exemple Checklist............ 542 Support, structure..................................... 519 Respect des standards.......................... 542 Soyez prudent.......................................... 519 Ajouter les API de PhoneGap.............. 545 45.HTML5................................................... 521 Problèmes éventuels ............................... 548 Applications déconnectées...................... 521 Explications ........................................ 522 Utilisation............................................ 522 Web Storage............................................. 526 Sécurité................................................ 548 Tailles et densités des écrans............... 549 Look and Feel....................................... 550 Pour en savoir plus................................... 550 Explications......................................... 527 47.Autres environnements alternatifs....... 551 Utilisation............................................ 527 Rhodes..................................................... 551 Base de données SQL web .................. 529 Flash, Flex et AIR.................................... 552 Mise en production.................................. 529 JRuby et Ruboto...................................... 552 Tests...................................................... 529 Mono pour Android................................. 553 Signature et distribution....................... 530 Titanium Mobile...................................... 553 Mises à jour......................................... 530 Autres langages compilés pour la JVM... 553 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 11 24/10/12 09:18 XII L’art du développement Android Partie VIII – L’évolution constante d’Android......................................... 555 Demander implicitement certaines caractéristiques.................... 559 Un marché garanti .................................. 560 48.Gestion des terminaux........................... 557 Autres différences.................................... 560 Cette application contient des instructions Bogues, bogues, bogues........................... 560 explicites ................................................. 557 Test des terminaux................................... 561 Demander des caractéristiques précises. 558 Index.............................................................. 563 © 2012 Pearson France – L'art du développement Android, 4e édition – Grant Allen LIVRE-2557-Android 4.indb 12 24/10/12 09:18