23
Sylvain HEBUTERNE Android Guide de développement d’applications Java pour Smartphones et Tablettes 4 e édition

Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

  • Upload
    others

  • View
    7

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

Dév

elop

pem

ent J

ava

pour

S

mar

tpho

nes

et T

able

ttes

ISB

N :

978-

2-40

9-01

526-

7

39 €

Android - Guide de développement d’applications Java pour Smartphones et Tablettes

Sylvain HEBUTERNE est Architecte Android. Spécialisé dans la program-mation objet depuis 15 ans, il conçoit des applications Android pour le compte d’agences de communication et de start-up. Ces projets très diver-sifiés lui permettent d’exploiter tout le potentiel de la plateforme Android ainsi que les fonctionnalités plus avancées proposées par les dernières versions.

Véritable guide d’apprentissage, ce livre accompagne le lecteur dans le développement d’applications Android pour smartphones et tablettes tactiles. Il s’adresse aux développeurs disposant d’un mini-mum de connaissances sur la programmation orientée objet, le langage Java et les environnements de développement intégrés type Eclipse et couvre toutes les versions d’Android jusqu’à la 9 incluse.

Le livre présente l’intégralité du processus de création d’applications, de la mise en place de l’environnement de développement Android Studio jusqu’à la publication de l’application, et décrit une large sélec-tion de fonctionnalités proposées par le système Android.

Vous découvrirez dans un premier temps la plateforme Android, vous installerez l’environnement de développement Android Studio et vous créerez sans attendre votre première application. Vous étudierez ensuite comment se construit l’interface utilisateur et prendrez connaissance des composants applicatifs fondamentaux ainsi que des nouveaux composants d’interface. Vous apprendrez à développer des interfaces complexes qui s’adaptent aux écrans des tablettes et smartphones et à construire vos propres composants réutilisables. Puis seront pré-sentées la persistance des données, la programmation concurrente, la sécurité et la communication réseau, en intégrant la bibliothèque spécialisée Volley. Un chapitre vous expliquera comment intégrer les réseaux sociaux dans vos applications.

Pour pouvoir proposer des applications les plus qualitatives possibles, vous découvrirez comment déboguer efficacement vos applications et tester votre application en utilisant les fonctionnalités dédiées d’Android Studio. Vous serez enfin guidé pas à pas pour publier vos applications vers les utilisateurs du monde entier.

Le livre se termine en présentant les mécanismes de géolocalisation, l’intégration de solutions de cartographie type Open Street Map et l’utilisation des capteurs intégrés dans les terminaux Android. Sont également traités en détail des sujets avancés tels que la création d’AppWidget, la protection des applications payantes (LVL), les achats in-app ainsi que les communications NFC et les objets connectés.

À l’issue de cette lecture, vous serez capable de développer et publier des applications, de qualité, natives Android (dans ses différentes versions) pour smartphones et tablettes tactiles.

Pour illustrer de façon pratique ses propos, l’auteur propose en télé-chargement sur le site www.editions-eni.fr un ensemble de projets reprenant toutes les notions présentées dans le livre. Tous les modules sont fonctionnels, directement exploitables et fournissent une solide structure de base pour vos développements.

Téléchargementwww.editions-eni.fr.fr

Sur www.editions-eni.fr :b Le code source de tous

les modules des projets.

Avant-propos • L’univers Android • Pre-miers pas • Les bases de l’interface uti-lisateur • Composants avancés • Styles, navigation  et  notifications  •  Interface utilisateur avancée • La persistance des données • Intentions, récepteurs d’évé-nements  et  services  •  Concurrence, sécurité et réseau • Réseaux sociaux • Tracer,  déboguer  et  tester  •  Publier une application • Capteurs et géoloca-lisation • La  technologie NFC • Objets connectés • Fonctionnalités avancées  

Les chapitres du livre

Pour plus d’informations :

Andr

oid

Sylvain HEBUTERNE

AndroidGuide de développement d’applications Java

pour Smartphones et Tablettes

4e édition

Nouvelle édition

Page 2: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

1Table des matières

Avant-propos

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. À qui s'adresse cet ouvrage ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Connaissances nécessaires pour aborder cet ouvrage . . . . . . . . . . . . . 18

4. Objectifs à atteindre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5. Téléchargements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6. Informations complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

7. Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Chapitre 1L'univers Android

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2. Présentation d'Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1 Open Handset Alliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3 Versions d'Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.3.1 Chronologie des versions . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3.2 Répartition des distributions Android . . . . . . . . . . . . . . . 31

2.4 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3. Environnement de développement . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.1 Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.2 Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.2.1 Téléchargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr 

Saisissez la référence ENI de l'ouvrage EI4AND dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

lcroise
Tampon
Page 3: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

2Guide de développement d’applications Java

Android

Chapitre 2Premiers pas

1. Premier projet Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.1 Création du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491.2 Organisation du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561.3 Compilation et exécution de l'application . . . . . . . . . . . . . . . . . 57

1.3.1 Sur l'émulateur Android. . . . . . . . . . . . . . . . . . . . . . . . . . . 571.3.2 Sur un appareil Android . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2. Structure d'un projet Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.1 Structure du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.2 Gradle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

2.2.1 Configuration niveau projet . . . . . . . . . . . . . . . . . . . . . . . 702.2.2 Configuration niveau app . . . . . . . . . . . . . . . . . . . . . . . . . 71

2.3 Le manifeste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742.3.1 Balise manifest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772.3.2 Balise uses-sdk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.3.3 Balise application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

2.4 Les ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3. Qualification des ressources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.1 Écrans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.2 Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.3 Autres qualificatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Chapitre 3Les bases de l'interface utilisateur

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2. Concepts de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962.1 Activités et Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962.2 Mode programmatique et mode déclaratif . . . . . . . . . . . . . . . . . 982.3 Vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Page 4: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

3Table des matières

3. Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.1 Création en mode déclaratif. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073.2 Création en mode programmatique . . . . . . . . . . . . . . . . . . . . . 111

4. Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144.3 Découverte de quelques widgets . . . . . . . . . . . . . . . . . . . . . . . . 114

4.3.1 TextView (champ de texte) . . . . . . . . . . . . . . . . . . . . . . . 1154.3.2 EditText (champ de texte de saisie) . . . . . . . . . . . . . . . . 1184.3.3 Button (bouton) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.3.4 Autres widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

4.4 Première utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

5. Activités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275.2 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

5.2.1 onCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305.2.2 onStart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1325.2.3 onResume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1325.2.4 onPause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.2.5 onStop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1345.2.6 onRestart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355.2.7 onDestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355.2.8 Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5.3 Lancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385.4 Sauvegarde et restauration de l'état. . . . . . . . . . . . . . . . . . . . . . 1405.5 Pile d’activités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Page 5: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

4Guide de développement d’applications Java

Android

Chapitre 4Composants avancés

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

2. Fragment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1462.1 Intégration du fragment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

2.1.1 Mode déclaratif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1472.1.2 Mode programmatique . . . . . . . . . . . . . . . . . . . . . . . . . . 1482.1.3 Bibliothèque de support . . . . . . . . . . . . . . . . . . . . . . . . . . 152

2.2 Fragments et mise en page adaptative . . . . . . . . . . . . . . . . . . . 1542.3 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

2.3.1 onAttach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572.3.2 onCreateView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.3.3 onActivityCreated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592.3.4 onDestroyView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592.3.5 onDetach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

2.4 Sauvegarde et restauration de l'état . . . . . . . . . . . . . . . . . . . . . 1602.5 Pile de fragments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

3. Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1633.1 Implémentation standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

3.1.1 Layout des éléments de la liste . . . . . . . . . . . . . . . . . . . . 1643.1.2 Adaptateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1643.1.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

3.2 Implémentation spécifique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1693.2.1 Layout des éléments de la liste . . . . . . . . . . . . . . . . . . . . 1703.2.2 Adaptateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

3.3 Interactions avec un composant ListView . . . . . . . . . . . . . . . . 1743.3.1 Sélection d’un élément. . . . . . . . . . . . . . . . . . . . . . . . . . . 1743.3.2 Mise à jour de la liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

3.4 Le composant Liste déroulante . . . . . . . . . . . . . . . . . . . . . . . . . 179

Page 6: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

5Table des matières

4. Créer ses propres composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1814.1 Surcharger un composant existant . . . . . . . . . . . . . . . . . . . . . . 181

4.1.1 Étendre une classe du package android.widget. . . . . . . . 1824.1.2 Intégrer le nouveau composant dans un layout . . . . . . . 1834.1.3 Ajouter des attributs personnalisés . . . . . . . . . . . . . . . . . 183

4.2 Réunir un ensemble de composants . . . . . . . . . . . . . . . . . . . . . 1864.3 Construire entièrement un composant. . . . . . . . . . . . . . . . . . . 187

4.3.1 Implémenter onDraw() . . . . . . . . . . . . . . . . . . . . . . . . . . 1874.3.2 Implémenter onMeasure() . . . . . . . . . . . . . . . . . . . . . . . . 1884.3.3 Obtenir les dimensions de l'écran . . . . . . . . . . . . . . . . . . 189

Chapitre 5Styles, navigation et notifications

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

2. Styles et thèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1912.1 Les styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1922.2 Notion de thème. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1932.3 Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

3. Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2023.3 Menu d'activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

3.3.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2053.3.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

3.4 Menu contextuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073.4.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073.4.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

3.5 Menus pop-up. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

4. Barre d'action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2114.1 Intégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

4.1.1 Dans le fichier de layout . . . . . . . . . . . . . . . . . . . . . . . . . 2124.1.2 Dans l’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Page 7: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

6Guide de développement d’applications Java

Android

4.2 Personnalisation de la barre d’action. . . . . . . . . . . . . . . . . . . . . 2154.2.1 Images et titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2154.2.2 Icône de l'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

5. Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2195.1 Toast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2195.2 Boîte de dialogue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

5.2.1 Tour d'horizon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2235.2.2 Boîte de dialogue d'alerte . . . . . . . . . . . . . . . . . . . . . . . . . 224

5.3 Barre de notification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295.3.1 Création d'une notification basique . . . . . . . . . . . . . . . . 2295.3.2 Compléter une notification . . . . . . . . . . . . . . . . . . . . . . . 2375.3.3 Interagir avec une notification . . . . . . . . . . . . . . . . . . . . 241

Chapitre 6Interface utilisateur avancée

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

2. Mise en page complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2462.1 Choix du layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2462.2 Positionnement relatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472.3 Utiliser les poids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2492.4 Utiliser les ressources « dimension » . . . . . . . . . . . . . . . . . . . . . 2542.5 Travailler avec le constraintLayout . . . . . . . . . . . . . . . . . . . . . . 256

3. Utiliser le Navigation Drawer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623.1 Mettre en place le panneau de navigation . . . . . . . . . . . . . . . . 2633.2 Utiliser le panneau de navigation . . . . . . . . . . . . . . . . . . . . . . . 266

3.2.1 Détecter les événements d'ouverture/fermeture . . . . . . 2663.2.2 Navigation Drawer et ActionBar. . . . . . . . . . . . . . . . . . . 2673.2.3 Forcer l'ouverture du panneau

au lancement de l'activité. . . . . . . . . . . . . . . . . . . . . . . . . 2683.3 Remplir le panneau de navigation. . . . . . . . . . . . . . . . . . . . . . . 269

Page 8: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

7Table des matières

4. Créer des images redimensionnables . . . . . . . . . . . . . . . . . . . . . . . . . 2724.1 Les images 9-patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

4.1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2724.1.2 Créer des images 9-patch . . . . . . . . . . . . . . . . . . . . . . . . . 274

4.2 Les drawables XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2804.2.1 Définir une forme en XML . . . . . . . . . . . . . . . . . . . . . . . 2804.2.2 Modifier la forme initiale . . . . . . . . . . . . . . . . . . . . . . . . . 2834.2.3 Combiner plusieurs formes . . . . . . . . . . . . . . . . . . . . . . . 287

Chapitre 7La persistance des données

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

2. Fichiers de préférences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2892.1 Cibler le fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2902.2 Lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2912.3 Écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2922.4 Suppression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

3. Fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2953.1 Stockage interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

3.1.1 Écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2953.1.2 Lecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2963.1.3 Supprimer un fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

3.2 Stockage externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2973.2.1 Disponibilité du support . . . . . . . . . . . . . . . . . . . . . . . . . 2983.2.2 Accès et emplacements . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.2.3 Fichiers communs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

3.3 Fichiers temporaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3013.3.1 Stockage interne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3013.3.2 Stockage externe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

Page 9: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

8Guide de développement d’applications Java

Android

4. Bases de données SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3034.1 Création d'une base de données. . . . . . . . . . . . . . . . . . . . . . . . . 3034.2 Traitements et requêtes SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . 305

4.2.1 Navigation dans les résultats . . . . . . . . . . . . . . . . . . . . . . 3064.2.2 Lecture de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

4.3 Mises à jour. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3084.4 Optimisation pour la recherche textuelle . . . . . . . . . . . . . . . . . 311

4.4.1 Création et peuplement de la table . . . . . . . . . . . . . . . . . 3114.4.2 Interrogation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

5. Fournisseur de contenus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3145.1 Interface et URI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3145.2 Requêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3155.3 Ajout d'un enregistrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3185.4 Suppression d'enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . 318

6. Sauvegarde dans les nuages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3196.1 Souscrire à l'Android Backup Service. . . . . . . . . . . . . . . . . . . . . 3206.2 Configuration de la clé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3226.3 Agent de sauvegarde. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

6.3.1 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3246.3.2 BackupAgentHelper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

6.4 Gestionnaire de sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3276.4.1 Demander une sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . 3286.4.2 Tester le service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

7. Prise en charge du JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3297.1 Présentation du format JSON . . . . . . . . . . . . . . . . . . . . . . . . . . 3297.2 Interprétation du format JSON. . . . . . . . . . . . . . . . . . . . . . . . . 331

Page 10: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

9Table des matières

Chapitre 8Intentions, récepteurs d’événements et services

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

2. Intention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3362.1 Intention explicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3362.2 Intention implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

2.2.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3372.2.2 Filtre d’intention. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

2.3 Intention en attente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

3. Récepteur d'événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3443.1 Événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3453.2 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3463.3 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

4. Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3494.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3504.2 Utilisation directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3514.3 Utilisation en établissant une connexion . . . . . . . . . . . . . . . . . 3524.4 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

4.4.1 onCreate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3554.4.2 onStartCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3554.4.3 onBind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3564.4.4 onUnbind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3574.4.5 onDestroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

4.5 IntentService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

Page 11: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

10Guide de développement d’applications Java

Android

Chapitre 9Concurrence, sécurité et réseau

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

2. Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3612.1 android:process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3622.2 Partage de processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

3. Programmation concurrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3653.1 AsyncTask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3663.2 Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

3.2.1 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3703.2.2 runOnUIThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3713.2.3 Communication interthreads . . . . . . . . . . . . . . . . . . . . . 372

4. Sécurité et droits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3754.1 Les droits avant Android MarshMallow . . . . . . . . . . . . . . . . . . 3764.2 Les droits sous Android MarshMallow . . . . . . . . . . . . . . . . . . . 3764.3 Déclaration de droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3794.4 Restriction d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

5. Réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3815.1 Agent utilisateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3835.2 AndroidHttpClient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3865.3 Utilisation de la bibliothèque Volley. . . . . . . . . . . . . . . . . . . . . 389

5.3.1 Intégration de Volley . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3895.3.2 Requêtes de type chaîne de caractères . . . . . . . . . . . . . . 3945.3.3 Ajouter des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . 3975.3.4 Requêtes au format JSON . . . . . . . . . . . . . . . . . . . . . . . . 3975.3.5 Requêtes au format Image . . . . . . . . . . . . . . . . . . . . . . . . 3995.3.6 Autres requêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

Page 12: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

11Table des matières

Chapitre 10Réseaux sociaux

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

2. Intégration standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4022.1 Sous Android 2.x et 3.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4022.2 Sous Android 4.x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

3. Intégration complète . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4073.1 Récupérer les clés d'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

3.1.1 Créer une application Facebook. . . . . . . . . . . . . . . . . . . . 4083.1.2 Autres réseaux sociaux . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

3.2 Installer le SDK SocialAuth-Android . . . . . . . . . . . . . . . . . . . . 4113.2.1 Intégration des bibliothèques dans le projet . . . . . . . . . . 4123.2.2 Utilisation de l'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

Chapitre 11Tracer, déboguer et tester

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

2. Journal d'événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4202.1 Consultation des événements . . . . . . . . . . . . . . . . . . . . . . . . . . 4212.2 Écriture des événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

3. Débogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4243.1 Débogage pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4243.2 Android Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

3.2.1 Analyse du CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4263.2.2 Analyse de la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . 4293.2.3 Vue Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

3.3 Android Device Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4313.3.1 Vue Devices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4333.3.2 Vue Emulator Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

Page 13: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

12Guide de développement d’applications Java

Android

3.3.3 Vue Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4363.3.4 Vue Heap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4373.3.5 Vue Allocation Tracker . . . . . . . . . . . . . . . . . . . . . . . . . . 4383.3.6 Vue File Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

4. Tests unitaires et fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4394.1 Création d'un projet de tests . . . . . . . . . . . . . . . . . . . . . . . . . . . 4404.2 Création d'une classe de tests unitaires locaux. . . . . . . . . . . . . 4414.3 Création d’un test pour une activité . . . . . . . . . . . . . . . . . . . . . 443

5. Test du singe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

Chapitre 12Publier une application

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

2. Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4512.1 Version de l'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

2.1.1 android:versionCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4512.1.2 android:versionName. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4522.1.3 Surcharge par Gradle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

2.2 Filtres pour le marché. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4542.2.1 uses-feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4552.2.2 uses-configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

3. Signature de l'application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4563.1 Compilation en mode débogage . . . . . . . . . . . . . . . . . . . . . . . . 4573.2 Compilation en mode final . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

3.2.1 Protection du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4593.2.2 Signer l'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4603.2.3 Installer l'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

4. Production de plusieurs versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

Page 14: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

13Table des matières

5. Publication de l'application sur le Play Store . . . . . . . . . . . . . . . . . . 4675.1 Inscription. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4685.2 Publication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

5.2.1 Fichier .apk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4795.2.2 Fiche Google Play Store . . . . . . . . . . . . . . . . . . . . . . . . . . 4795.2.3 Tarifs et disponibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4815.2.4 Coordonnées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4825.2.5 Accepter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

5.3 Et après ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

Chapitre 13Capteurs et géolocalisation

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2. Les capteurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4862.1 Détecter un capteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4862.2 Obtenir les valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

3. Localisation géographique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4933.1 Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4943.2 Gestionnaire de localisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4953.3 Récupérer les données de localisation . . . . . . . . . . . . . . . . . . . . 496

3.3.1 En cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4973.3.2 Une seule fois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4973.3.3 Périodiquement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5013.3.4 Stopper les mises à jour . . . . . . . . . . . . . . . . . . . . . . . . . . 503

4. Cartographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5034.1 Mise en place. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5044.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5064.3 Suivre la géocalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5104.4 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

Page 15: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

14Guide de développement d’applications Java

Android

Chapitre 14La technologie NFC

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

2. Présentation de NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5152.1 Les scénarios d'utilisation du NFC . . . . . . . . . . . . . . . . . . . . . . 5162.2 Les tags NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516

3. Prise en charge du NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5183.1 Utiliser avec un émulateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5183.2 Détecter si l'appareil est compatible NFC. . . . . . . . . . . . . . . . . 519

3.2.1 Filtrer les appareils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5193.2.2 Tester à l'exécution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5203.2.3 Activation par l'utilisateur . . . . . . . . . . . . . . . . . . . . . . . . 520

4. Découverte d'un tag NFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5214.1 Prise en charge d'un intent

ACTION_NDEF_DISCOVERED . . . . . . . . . . . . . . . . . . . . . . . 5224.2 Prise en charge d'un intent

ACTION_TECH_DISCOVERED . . . . . . . . . . . . . . . . . . . . . . . 5234.3 Prise en charge d'un intent ACTION_TAG_DISCOVERED. . 5254.4 Android Application Records. . . . . . . . . . . . . . . . . . . . . . . . . . . 5264.5 Foreground dispatch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

5. Lire un tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5295.1 Déterminer le contenu d'un tag NDEF . . . . . . . . . . . . . . . . . . . 5295.2 Lire une URI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5305.3 Lire une chaîne de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . 5325.4 Lire un type MIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5335.5 Lire un tag de type TNF_WELL_KNOWN . . . . . . . . . . . . . . . . 533

6. Écrire un tag NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5346.1 Définir un enregistrement NdefRecord avec l'API 9 . . . . . . . . 535

6.1.1 Construire un payload de type texte. . . . . . . . . . . . . . . . 5366.1.2 Construire un payload de type URI . . . . . . . . . . . . . . . . 537

6.2 Définir un enregistrement NdefRecord avec les API 14 et 16 . 538

Page 16: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

15Table des matières

Chapitre 15Objets connectés

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

2. Détection et connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5422.1 Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5422.2 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5432.3 Recherche d’appareil BLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544

2.3.1 Recherche sous Jelly Bean . . . . . . . . . . . . . . . . . . . . . . . . 5442.3.2 Recherche sous Lollipop . . . . . . . . . . . . . . . . . . . . . . . . . . 5462.3.3 Appliquer des filtres lors de la recherche. . . . . . . . . . . . . 547

2.4 Connexion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

3. Échange de données/interactions . . . . . . . . . . . . . . . . . . . . . . . . . . . 5533.1 Découvrir les services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5533.2 Lire une caractéristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5563.3 Écrire une valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

Chapitre 16Fonctionnalités avancées

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

2. App Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5622.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5632.2 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5632.3 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5642.4 Cycle de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

2.4.1 onEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5672.4.2 onDisabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5672.4.3 onUpdate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5682.4.4 onDeleted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

2.5 RemoteViews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569

Page 17: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

16Guide de développement d’applications Java

Android

2.6 Activité de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5722.6.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5722.6.2 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

3. Protéger les applications payantes. . . . . . . . . . . . . . . . . . . . . . . . . . . 5753.1 Installation de la LVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576

3.1.1 Téléchargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5763.1.2 Intégration de la LVL dans le code source. . . . . . . . . . . . 577

3.2 Utilisation de la LVL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5783.2.1 Politique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5783.2.2 Obfuscation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5793.2.3 Vérification de la licence . . . . . . . . . . . . . . . . . . . . . . . . . 580

3.3 Tester. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5823.3.1 Tester sur un appareil Android . . . . . . . . . . . . . . . . . . . . 5873.3.2 Tester sur un émulateur. . . . . . . . . . . . . . . . . . . . . . . . . . 587

4. Proposer des achats intégrés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5884.1 Préparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5884.2 Utilisation du paiement intégré . . . . . . . . . . . . . . . . . . . . . . . . 591

4.2.1 Initier la communication avec le Play Store . . . . . . . . . . 5914.2.2 Obtenir la liste des produits. . . . . . . . . . . . . . . . . . . . . . . 5924.2.3 Vérifier qu’un produit a été commandé . . . . . . . . . . . . . 5944.2.4 Commander un produit . . . . . . . . . . . . . . . . . . . . . . . . . . 595

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

Page 18: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

289

Chapitre 7

La persistance des données

La pers istance des données1. Introduction

Ce chapitre a pour but de présenter la persistance des données sous Android.

Les données persistantes d'une application sont les données sauvegardéesavant la fermeture de l'application de telle sorte qu'elles puissent être restau-rées ultérieurement.

Android propose plusieurs mécanismes permettant de gérer la persistance dedonnées, selon la nature de ces données. Nous découvrirons les fichiers de pré-férences, les fichiers standards et les bases de données.

Nous terminerons par les fournisseurs de contenus qui, au-delà de la persis-tance des données, proposent un mécanisme de partage de données entre lesapplications.

2. Fichiers de préférences

Android fournit un framework simple pour sauvegarder et restaurer desdonnées de types primitifs. Ces données sont sauvegardées dans des fichiersau format XML sous la forme d'associations clés-valeurs. Ces fichiers sontappelés fichiers de préférences.

lcroise
Tampon
Page 19: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

© E

dit

ions

EN

I -

All r

ights

rese

rved

290Guide de développement d’applications Java

Android

Nous allons étudier dans un premier temps comment cibler un fichier de pré-férences, puis comment le lire et y écrire des données. Nous terminerons pardécrire comment supprimer toutes ou partie des données de ces fichiers.

Remarque

Le système Android permet d'afficher et de sauvegarder les préférencesgénérales de l'utilisateur. Toute application peut adopter la même fonction-nalité et le même affichage. La hiérarchie des préférences proposées peutêtre réalisée directement dans un fichier XML. L'implémentation d'un tel écrande préférences est réalisée en dérivant de la classe PreferenceActivity.Depuis Android 3.0 (API 11), cette classe fonctionne de concert avec lesfragments de type PreferenceFragment afin de pouvoir, entre autres, affi-cher côte à côte les titres des sections et les préférences qu'elles proposent.

2.1 Cibler le fichier

Par défaut, un fichier de préférences est associé à l'activité qui le crée. Cefichier porte automatiquement le nom qualifié entier de l'activité concernée,par exemple fr.mondomaine.android.monappli.prefsFic1.xml.

La création et la gestion du fichier de préférences sont réalisées au travers d'unobjet de type SharedPreferences retourné par la méthode getPrefe-rences de la classe Activity.

Syntaxe

public SharedPreferences getPreferences (int mode)

Cette méthode prend en paramètre le mode d'accès à assigner au fichier lorsde sa création. Les valeurs possibles pour ce paramètre sont :

– Context.MODE_PRIVATE : mode privé. C'est le mode par défaut. Lefichier ne peut être lu et écrit que par l'application courante, ou une appli-cation partageant le même identifiant utilisateur.

– Context.MODE_WORLD_READABLE : les autres applications peuvent lirele fichier.

– Context.MODE_WORLD_WRITEABLE : les autres applications peuventmodifier le fichier.

Page 20: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

291La persistance des donnéesChapitre 7

Exemple

SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

Il est également possible de spécifier explicitement un autre nom de fichier.Cela permet de créer plusieurs fichiers de préférences. Pour cela, il faut utiliserla méthode getSharedPreferences en spécifiant le nom du fichier enpremier paramètre.

Syntaxe

public abstract SharedPreferences getSharedPreferences (String

name, int mode)

Exemple

SharedPreferences prefs =

getSharedPreferences("nomFichierPrefs1.xml",

Context.MODE_PRIVATE);

2.2 Lecture

Les données contenues dans un fichier de préférences sont enregistrées sousforme d'associations clés-valeurs. Une telle association est composée :

– D'une clé qui est une chaîne de caractères de type String.

– D'une valeur de type primitif : boolean (booléen), float (nombre à vir-gule flottante), int ou long (entiers) ou String (chaîne de caractères).

Pour lire les données contenues dans un fichier de préférences, on utilise l'objetde type SharedPreferences récupéré précédemment. On invoque ensuitecertains de ses accesseurs permettant de lire individuellement une donnéeselon son type.

Syntaxe

public abstract boolean getBoolean (String key, boolean defValue)

public abstract float getFloat (String key, float defValue)

public abstract int getInt (String key, int defValue)

public abstract long getLong (String key, long defValue)

public abstract String getString (String key, String defValue)

Page 21: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

© E

dit

ions

EN

I -

All r

ights

rese

rved

292Guide de développement d’applications Java

Android

Le premier paramètre est le nom de la clé. Le second paramètre est la valeurpar défaut à retourner si la clé n'existe pas.

Exemple

boolean modeWifi = prefs.getBoolean("modeWifi", false);

int compteur = prefs.getInt("compteur", 0);

String commentaire = prefs.getString("commentaire", "");

On peut aussi récupérer toutes les données d'un seul coup en utilisant la mé-thode getAll.

Syntaxe

public abstract Map<String, ?> getAll ()

Exemple

Map<String, ?> valeurs = prefs.getAll();

Boolean modeWifi = (Boolean)valeurs.get("modeWifi");

La méthode contains de l'objet SharedPreferences permet de vérifierla présence d'une clé donnée qu'on lui spécifie en paramètre.

Syntaxe

public abstract boolean contains (String key)

Exemple

if (prefs.contains("modeWifi")) {

traitement();

}

2.3 Écriture

L'écriture de données dans un fichier de préférences se fait via un objet de typeSharedPreferences.Editor. Cet objet est retourné par la méthodeedit appelée sur l'objet de type SharedPreferences récupéré précédem-

ment.

Syntaxe

public abstract SharedPreferences.Editor edit ()

Page 22: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

293La persistance des donnéesChapitre 7

Exemple

SharedPreferences.Editor editeur = prefs.edit();

L'objet Editor ci-dessus permet de spécifier les nouvelles données ou de mo-difier les données existantes en les écrasant avec les nouvelles. On invoque sesméthodes permettant d'écrire individuellement une association clé-valeur. Àl'instar des méthodes de lecture, il existe une méthode d’écriture par typeprimitif. Ces méthodes prennent en paramètres le nom de la clé ainsi que lavaleur de la donnée.

Syntaxe

public abstract SharedPreferences.Editor putBoolean (String key,

boolean value)

public abstract SharedPreferences.Editor putFloat (String key,

float value)

public abstract SharedPreferences.Editor putInt (String key,

int value)

public abstract SharedPreferences.Editor putLong (String key,

long value)

public abstract SharedPreferences.Editor putString (String key,

String value)

Exemple

editeur.putBoolean("modeWifi", true);

editeur.putInt("compteur", 42);

editeur.putString("commentaire", "Ceci est un commentaire");

L'écriture des données ne sera effectivement réalisée dans le fichier qu'une foisla méthode commit de l'objet Editor appelée.

Syntaxe

public abstract boolean commit ()

Exemple

editeur.commit();

Remarque

Attention à ne pas oublier d'appeler la méthode commit. Car sans cet appel,l'objet Editor ne sert à rien ; les modifications qu'il contient n'étant pas enre-gistrées.

Page 23: Android Guide de développement d’applications …...Développement Java pour Smartphones et Tablettes 39 € ISBN : 978-2-409-01526-7 Android - Guide de développement d’applications

© E

dit

ions

EN

I -

All r

ights

rese

rved

294Guide de développement d’applications Java

Android

2.4 Suppression

La suppression des données contenues dans un fichier de préférences se fait enutilisant l'objet Editor de type SharedPreferences.Editor commepour l'écriture des données.

La méthode remove de l'objet Editor permet de supprimer une associationclé-valeur. On spécifie le nom de la clé en paramètre.

Syntaxe

public abstract SharedPreferences.Editor remove (String key)

Exemple

editeur.remove("modeWifi");

La méthode clear permet de supprimer toutes les données, c'est-à-diretoutes les associations clés-valeurs.

Syntaxe

public abstract SharedPreferences.Editor clear ()

Exemple

editeur.clear();

Comme pour l'écriture, il faut appeler la méthode commit pour enregistrer lesmodifications.

Il est également possible d'enchaîner les modifications puisque les méthodesde l'objet Editor retournent cet objet.

Exemple

editeur.clear().putBoolean("modeWifi", modeWifi).commit();

Remarque

Lors de l'appel à la méthode commit, la méthode clear est exécutée enpremier quelle que soit la position de son appel.

On peut donc par exemple réécrire la ligne précédente sans en modifier lerésultat.