Android. Android. 3 édition. Nouvelle édition. Guide de développement d applications Java. Développement Java pour Smartphones et Tablettes

Documents pareils
Android 4 Les fondamentaux du développement d'applications Java

Table des matières. Partie I Concepts de base Préface... VII

Les fondamentaux du développement d applications Java

Installation et prise en main

Développement d applications professionnelles avec Android 2

TP au menu «UI ANDROID»

TP2 : Client d une BDD SqlServer

TD/TP 1 Introduction au SDK d Android

1.3 Gestion d'une application

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Tutorial pour une application simple

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Optimiser pour les appareils mobiles

Générer du code à partir d une description de haut niveau

1. Base de données SQLite

Alfstore workflow framework Spécification technique

Optimisation des performances

Guide de l utilisateur Faronics System Profiler Standard

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Point sur les solutions de développement d apps pour les périphériques mobiles

Outil de démonstration : Application PassNFC

Projet Android (LI260) Cours 2

Gestion des différentes tailles d écran

BIRT (Business Intelligence and Reporting Tools)

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

Business Intelligence

Présentation du PL/SQL

Sage CRM. Sage CRM 7.3 Guide du portable

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Votre premier projet Android

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Formation. Module WEB 4.1. Support de cours

Projet de développement

SMPMKPOT=aKbKbKpK=a îéäçéééãéåí=çû^ééäáå~íáçåë= kçã~çéë=j=abbp^mm

Java 7 Les fondamentaux du langage Java

Environnements de développement (intégrés)

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Android. Présentation d Android. Florent Garin

Numilog - Téléchargement des ebooks Mode d emploi

Module Criteo Tags et Flux pour Magento

Documentation utilisateur. [EIP] TransLSF

Installation 4D. Configuration requise Installation et activation

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Développement tablette Android. SophiaConf2011 Par Arnaud FARINE

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Storebox User Guide. Swisscom (Suisse) SA

Installation 4D. Configuration requise Installation et activation

Encryptions, compression et partitionnement des données

Introduction ANDROID

SQL Server Installation Center et SQL Server Management Studio

Introduction à Eclipse

Education Delivery Intelligent Tool

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

TP1 : Initiation à Java et Eclipse

Manuel d'installation de GESLAB Client Lourd

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Introduction : présentation de la Business Intelligence

Edutab. gestion centralisée de tablettes Android

Google Drive, le cloud de Google

Mise en route de votre collier GPS Pet Tracker

Chapitre 2. Classes et objets

Création et Gestion des tables

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

SQL Server SQL Server Implémentation d une solution. Implémentation d une solution de Business Intelligence.

26 Centre de Sécurité et de

A. Architecture du serveur Tomcat 6

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

1/ Présentation de SQL Server :

Utilisation de la Plateforme Office365 et d Oultlook Web App

AWS avancé. Surveiller votre utilisation d EC2

Création du projet : 1 sur 13

Introduction à JDBC. Accès aux bases de données en Java

< Atelier 1 /> Démarrer une application web

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

INSTALLATION RAPIDE DU CONVERTISSEUR WRC-300 Version 1.1

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

Devenez un véritable développeur web en 3 mois!

TP SIN Programmation sur androïde Support : eclipse

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Manuel d'utilisation

UTILISATION DU LIVRE NUMÉRIQUE

Guide d utilisation. Version 1.1

SQL SERVER 2008, BUSINESS INTELLIGENCE

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Séminaire Partenaires Esri France 7-8 juin Paris Les API ArcGIS pour les smartphones

BES WEBDEVELOPER ACTIVITÉ RÔLE

MEDIAplus elearning. version 6.6

OCLOUD BACKUP GUIDE DE REFERENCE POUR ANDROID

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

Ce document décrit la démarche à suivre pour installer les outils de développement et compiler le projet TANAGRA.

Un outil open source de gestion de bibliographies

Cégep de Saint Laurent Direction des communications et Direction des ressources technologiques. Projet WebCSL : Guide de rédaction web

Gestion des sauvegardes

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

Transcription:

- Guide de développement d applications Java 3 édition e Vous découvrirez dans un premier temps la plateforme, vous installerez l environnement de développement 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. 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 ajouter des traces et tester votre application en utilisant les fonctionnalités dédiées d Studio. Vous serez enfin guidé pas à pas pour publier vos applications vers les utilisateurs du monde entier. L ouvrage se termine en présentant la détermination de la géolocalisation et l utilisation des capteurs intégrés dans les terminaux. 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 (dans ses différentes versions jusqu à la 6 incluse) pour Smartphones et Tablettes tactiles. Enfin, en complément et pour illustrer de façon pratique les propos de l ouvrage, l auteur propose en téléchargement sur le site www.editionseni.fr un ensemble de projets reprenant toutes les notions présentées dans le livre : interface utilisateur, listes, traitements asynchrones, géolocalisation, NFC, etc. Tous les modules sont fonctionnels, directement exploitables, et fournissent une solide structure de base pour vos développements. Les chapitres du livre Avant-propos L univers Premiers pas Découverte de l interface utilisateur Les fondations Compléter l interface utilisateur Composants applicatifs principaux La persistance des données Construire des interfaces complexes Concurrence, sécurité et réseau Réseaux sociaux Tracer, détéléchargement boguer et tester Publier une applicawww.editions-eni.fr.fr tion Capteurs et géolocalistation La technologie NFC Objets connectés Fonctionnalités avancées Sur www.editions-eni.fr : bl e code source de tous les modules des projets. Pour plus d informations : 39 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 Studio jusqu à la publication de l application, et décrit une large sélection de fonctionnalités proposées par le système. Sylvain HEBUTERNE est Architecte. Spécialisé dans la programmation objet depuis 15 ans, il conçoit des applications à titre personnel, pour le compte d agences de communication et de start-up. Ces projets très diversifiés lui permettent d exploiter tout le potentiel de la plate-forme ainsi que les fonctionnalités plus avancées proposées par les dernières versions. ISBN : 978-2-409-00253-3 Véritable guide d apprentissage, ce livre accompagne le lecteur dans le développement d applications pour Smartphones et Tablettes tactiles. Il s adresse aux développeurs disposant d un minimum de connaissances sur la programmation orientée objet, le langage Java et les environnements de développement intégrés type Eclipse ou Studio et couvre toutes les versions d jusqu à la 6 incluse. Développement Java pour Smartphones et Tablettes pour Smartphones et Tablettes Nouvelle édition Guide de développement d applications Java pour Smartphones et Tablettes Sylvain HEBUTERNE

Table des matières 1 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 EI3AND dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement. 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 1 L'univers 1. Introduction............................................. 23 2. Présentation d'..................................... 23 2.1 Open Handset Alliance................................ 24 2.2 Historique........................................... 24 2.3 Versions d'.................................... 26 2.3.1 Chronologie des versions.......................... 26 2.3.2 Répartition des distributions............... 30 2.4 Architecture......................................... 31 3. Environnement de développement........................... 32 3.1 Prérequis............................................ 33 3.2 Studio....................................... 34 3.2.1 Téléchargement................................. 34

2 Guide de développement d applications Java 3.2.2 Installation..................................... 35 Chapitre 2 Premiers pas 1. Premier projet..................................... 49 1.1 Création du projet.................................... 49 1.2 Organisation du projet................................. 55 1.3 Compilation de l'application............................ 56 1.4 Exécution de l application.............................. 57 1.4.1 Sur l'émulateur........................... 57 1.4.2 Sur un appareil........................... 59 2. Structure d'un projet............................... 67 2.1 Structure du projet.................................... 67 2.2 Le manifeste......................................... 69 2.2.1 Balise manifest.................................. 71 2.2.2 Balise uses-sdk................................... 71 2.2.3 Balise application................................ 72 2.3 Les ressources........................................ 73 Chapitre 3 Découverte de l'interface utilisateur 1. Introduction............................................. 77 2. Écrans.................................................. 78 3. Activités et Layout........................................ 85 4. Mode programmatique et mode déclaratif..................... 87 5. Vues.................................................... 89 6. Layouts................................................. 91 6.1 Création en mode déclaratif............................. 92 6.2 Création en mode programmatique...................... 94

Table des matières 3 7. Widgets................................................. 96 7.1 Déclaration.......................................... 96 7.2 Utilisation........................................... 97 7.3 Découverte de quelques widgets......................... 97 7.3.1 TextView (champ de texte)........................ 98 7.3.2 EditText (champ de texte de saisie)................ 100 7.3.3 Button (bouton)................................ 102 7.3.4 Autres widgets................................. 106 Chapitre 4 Les fondations 1. Introduction............................................ 107 2. Intention............................................... 108 2.1 Intention explicite................................... 110 2.2 Intention implicite................................... 111 2.2.1 Création....................................... 112 2.2.2 Filtre d intention................................ 112 2.3 Intention en attente.................................. 115 3. Activité................................................ 116 3.1 Déclaration......................................... 117 3.2 Cycle de vie......................................... 119 3.2.1 oncreate...................................... 120 3.2.2 onstart........................................ 121 3.2.3 onresume..................................... 121 3.2.4 onpause....................................... 122 3.2.5 onstop........................................ 123 3.2.6 onrestart...................................... 124 3.2.7 ondestroy..................................... 124 3.3 Lancement.......................................... 125 3.4 Sauvegarde et restauration de l'état...................... 127 3.5 Pile d'activités....................................... 129

4 Guide de développement d applications Java Chapitre 5 Compléter l'interface utilisateur 1. Introduction............................................ 131 2. Styles et thèmes......................................... 131 3. Menus................................................. 133 3.1 Déclaration......................................... 133 3.2 Utilisation.......................................... 136 3.3 Menu d'activité...................................... 137 3.3.1 Création...................................... 137 3.3.2 Utilisation..................................... 138 3.4 Menu contextuel.................................... 139 3.4.1 Création...................................... 140 3.4.2 Utilisation..................................... 141 4. Barre d'action........................................... 141 4.1 Options de menu.................................... 142 4.2 Icône de l'application................................. 143 5. Notifications............................................ 144 5.1 Toast.............................................. 144 5.2 Boîte de dialogue..................................... 145 5.2.1 Tour d'horizon................................. 146 5.2.2 Boîte de dialogue d'alerte......................... 146 5.3 Barre de notification.................................. 151 5.3.1 Création d'une notification....................... 152 5.3.2 Envoi d'une notification.......................... 155 6. Internationalisation...................................... 156

Table des matières 5 Chapitre 6 Composants applicatifs principaux 1. Introduction............................................ 159 2. Fragment............................................... 159 2.1 Intégration du fragment............................... 161 2.1.1 Mode déclaratif................................. 161 2.1.2 Mode programmatique.......................... 162 2.2 Fragments et mise en page adaptative................... 165 2.3 Cycle de vie......................................... 166 2.3.1 onattach...................................... 166 2.3.2 oncreateview.................................. 167 2.3.3 onactivitycreated.............................. 168 2.3.4 ondestroyview................................. 168 2.3.5 ondetach...................................... 169 2.4 Sauvegarde et restauration de l'état...................... 169 2.5 Pile de fragments..................................... 170 3. Service................................................. 172 3.1 Déclaration......................................... 172 3.2 Utilisation directe.................................... 173 3.3 Utilisation en établissant une connexion................. 175 3.4 Cycle de vie......................................... 177 3.4.1 oncreate...................................... 177 3.4.2 onstartcommand............................... 178 3.4.3 onbind........................................ 178 3.4.4 onunbind..................................... 179 3.4.5 ondestroy..................................... 179 4. Récepteur d'évènements................................... 180 4.1 Évènement......................................... 181 4.2 Déclaration......................................... 182 4.3 Cycle de vie......................................... 184

6 Guide de développement d applications Java 5. Liste................................................... 185 5.1 Implémentation standard............................. 186 5.1.1 Layout des éléments de la liste.................... 186 5.1.2 Adaptateur.................................... 187 5.1.3 Implémentation................................ 187 5.2 Implémentation spécifique............................ 191 5.2.1 Layout des éléments de la liste.................... 191 5.2.2 Adaptateur.................................... 192 5.3 Sélection d un élément................................ 195 Chapitre 7 La persistance des données 1. Introduction............................................ 197 2. Fichiers de préférences.................................... 197 2.1 Cibler le fichier...................................... 198 2.2 Lecture............................................. 199 2.3 Écriture............................................ 200 2.4 Suppression......................................... 202 3. Fichiers................................................ 203 3.1 Stockage interne..................................... 203 3.1.1 Écriture....................................... 203 3.1.2 Lecture........................................ 204 3.1.3 Supprimer un fichier............................ 205 3.2 Stockage externe..................................... 205 3.2.1 Disponibilité du support......................... 206 3.2.2 Accès et emplacements.......................... 207 3.2.3 Fichiers communs............................... 209 3.3 Fichiers temporaires.................................. 209 3.3.1 Stockage interne................................ 209 3.3.2 Stockage externe................................ 210

Table des matières 7 4. Bases de données SQLite.................................. 211 4.1 Création d'une base de données......................... 211 4.2 Traitements et requêtes SQL........................... 213 4.2.1 Navigation dans les résultats...................... 214 4.2.2 Lecture de données.............................. 215 4.3 Mises à jour......................................... 216 4.4 Optimisation pour la recherche textuelle................. 219 4.4.1 Création et peuplement de la table................. 219 4.4.2 Interrogation................................... 220 5. Fournisseur de contenus................................... 222 5.1 Interface et URI..................................... 222 5.2 Requêtes........................................... 223 5.3 Ajout d'un enregistrement............................. 225 5.4 Suppression d'enregistrements......................... 226 6. Sauvegarde dans les nuages................................ 227 6.1 Souscrire à l' Backup Service..................... 228 6.2 Configuration de la clé................................ 230 6.3 Agent de sauvegarde.................................. 231 6.3.1 Configuration.................................. 231 6.3.2 BackupAgentHelper............................. 232 6.4 Gestionnaire de sauvegarde............................ 235 6.4.1 Demander une sauvegarde........................ 235 6.4.2 Tester le service................................. 236 7. Prise en charge du JSON................................... 237 7.1 Présentation du format JSON.......................... 237 7.2 Interprétation du format JSON......................... 238

8 Guide de développement d applications Java Chapitre 8 Construire des interfaces complexes 1. Introduction............................................ 243 2. Créer ses propres composants.............................. 244 2.1 Surcharger un composant existant...................... 244 2.1.1 Étendre une classe du package android.widget....... 244 2.1.2 Intégrer le nouveau composant dans un layout....... 245 2.1.3 Ajouter des attributs personnalisés................. 246 2.2 Réunir un ensemble de composants..................... 249 2.3 Construire entièrement un composant................... 250 2.3.1 Implémenter ondraw().......................... 250 2.3.2 Implémenter onmeasure()........................ 251 2.3.3 Obtenir les dimensions de l'écran.................. 252 3. Utiliser le Navigation Drawer.............................. 253 3.1 Mettre en place le panneau de navigation................ 254 3.2 Utiliser le panneau de navigation....................... 256 3.2.1 Détecter les évènements d'ouverture/fermeture...... 257 3.2.2 Navigation Drawer et ActionBar................... 257 3.2.3 Intégrer le bouton d'ouverture/fermeture........... 259 3.2.4 Forcer l'ouverture du panneau au lancement de l'activité......................... 260 4. Créer des images redimensionnables......................... 261 4.1 Les images 9-patch................................... 261 4.1.1 Présentation................................... 261 4.1.2 Créer des images 9-patch......................... 264 4.2 Les drawables XML.................................. 267 4.2.1 Définir une forme en XML....................... 267 4.2.2 Modifier la forme initiale......................... 270 4.2.3 Combiner plusieurs formes....................... 275 5. Mise en page complexe................................... 276 5.1 Choix du layout..................................... 276 5.2 Positionnement relatif................................ 277

Table des matières 9 5.3 Utiliser les poids..................................... 279 5.4 Un dernier point..................................... 284 Chapitre 9 Concurrence, sécurité et réseau 1. Introduction............................................ 287 2. Processus............................................... 287 2.1 android:process...................................... 288 2.2 Partage de processus.................................. 289 3. Programmation concurrente............................... 291 3.1 AsyncTask.......................................... 292 3.2 Thread............................................. 296 3.2.1 Création....................................... 296 3.2.2 runonuithread................................ 297 3.2.3 Communication interthread...................... 298 4. Sécurité et droits......................................... 301 4.1 Les droits avant MarshMallow......................... 302 4.2 Les droits sous MarshMallow.......................... 302 4.3 Déclaration de droits................................. 305 4.4 Restriction d'utilisation............................... 305 5. Réseau................................................. 307 5.1 Agent utilisateur..................................... 308 5.2 HttpClient................................... 311 5.3 Utilisation de la bibliothèque Volley..................... 314 5.3.1 Intégration de Volley............................ 314 5.3.2 Requêtes de type chaîne de caractères.............. 319 5.3.3 Ajouter des paramètres.......................... 322 5.3.4 Requêtes au format JSON........................ 322 5.3.5 Requêtes au format Image........................ 324 5.3.6 Autres requêtes................................. 325

10 Guide de développement d applications Java Chapitre 10 Réseaux sociaux 1. Introduction............................................ 327 2. Intégration standard...................................... 328 2.1 Sous 2.x et 3.x............................... 328 2.2 Sous 4.x..................................... 329 3. Intégration complète..................................... 333 3.1 Récupérer les clés d'api............................... 333 3.1.1 Créer une application Facebook................... 334 3.1.2 Autres réseaux sociaux........................... 337 3.2 Installer le SDK SocialAuth-.................... 337 3.2.1 Intégration des bibliothèques dans le projet.......... 338 3.2.2 Utilisation de l'api.............................. 339 Chapitre 11 Tracer, déboguer et tester 1. Introduction............................................ 347 2. Journal d'évènements..................................... 348 2.1 Consultation des évènements.......................... 349 2.2 Écriture des évènements............................... 351 3. Débogage............................................... 352 3.1 Débogage pas à pas................................... 352 3.2 Device Monitor.............................. 353 3.2.1 Vue Devices.................................... 355 3.2.2 Vue Emulator Control........................... 357 3.2.3 Vue Threads................................... 358 3.2.4 Vue Heap...................................... 359 3.2.5 Vue Allocation Tracker.......................... 360 3.2.6 Vue File Explorer............................... 361

Table des matières 11 4. Tests unitaires et fonctionnels............................. 361 4.1 Création d'un projet de tests........................... 362 4.2 Création d'une classe de tests unitaires locaux............. 363 4.3 Création d un test pour une activité..................... 365 5. Test du singe............................................ 368 Chapitre 12 Publier une application 1. Introduction............................................ 371 2. Préliminaires............................................ 373 2.1 Version de l'application............................... 373 2.1.1 android:versioncode............................ 373 2.1.2 android:versionname............................ 374 2.1.3 Surcharge par Gradle............................ 375 2.2 Filtres pour le marché................................. 375 2.2.1 uses-feature.................................... 376 2.2.2 uses-configuration.............................. 378 3. Signature de l'application.................................. 378 3.1 Compilation en mode débogage........................ 379 3.2 Compilation en mode final............................ 379 3.2.1 Protection du code.............................. 380 3.2.2 Signer l'application.............................. 382 3.2.3 Installer l'application............................ 384 4. Production de plusieurs versions............................ 385 5. Publication de l'application sur le Play Store.................. 389 5.1 Inscription.......................................... 390 5.2 Publication......................................... 399 5.2.1 Fichier.apk.................................... 401 5.2.2 Fiche Google Play Store.......................... 401 5.2.3 Tarifs et disponibilité............................ 403 5.2.4 Coordonnées................................... 404

12 Guide de développement d applications Java 5.2.5 Accepter...................................... 404 5.3 Et après?........................................... 405 Chapitre 13 Capteurs et géolocalisation 1. Introduction............................................ 407 2. Fondamentaux.......................................... 408 3. Détecter un capteur...................................... 408 4. Obtenir les valeurs....................................... 411 5. Localisation géographique................................. 414 5.1 Permissions......................................... 415 5.2 Gestionnaire de localisation............................ 416 5.3 Récupérer les données de localisation.................... 417 5.3.1 En cache...................................... 420 5.3.2 Une seule fois.................................. 420 5.3.3 Périodiquement................................. 421 5.3.4 Stopper les mises à jour.......................... 422 6. Google Maps............................................ 423 6.1 Mise en place........................................ 423 6.1.1 Installation du SDK............................. 423 6.1.2 Configuration de l'application..................... 424 6.1.3 Obtenir une clé d'utilisation...................... 425 6.2 Utilisation.......................................... 428 6.2.1 Déclaration de la vue............................ 429 6.2.2 MapActivity................................... 429 6.2.3 Géolocalisation................................. 431

Table des matières 13 Chapitre 14 La technologie NFC 1. Introduction............................................ 435 2. La technologie NFC...................................... 435 2.1 Les scénarios d'utilisation du NFC...................... 436 2.2 Les tags NFC........................................ 436 3. Prise en charge du NFC................................... 438 3.1 Utiliser avec un émulateur............................. 438 3.2 Détecter si l'appareil est compatible NFC................. 439 3.2.1 Filtrer les appareils.............................. 439 3.2.2 Tester à l'exécution.............................. 440 3.2.3 Activation par l'utilisateur........................ 440 4. Découverte d'un tag NFC.................................. 440 4.1 Prise en charge d'un intent ACTION_NDEF_DISCOVERED. 441 4.2 Prise en charge d'un intent ACTION_TECH_DISCOVERED 443 4.3 Prise en charge d'un intent ACTION_TAG_DISCOVERED.. 445 4.4 Application Records........................... 445 4.5 Foreground dispatch.................................. 446 5. Lire un tag NFC......................................... 448 5.1 Déterminer le contenu d'un tag NDEF................... 449 5.2 Lire une URI........................................ 450 5.3 Lire une chaîne de caractères........................... 452 5.4 Lire un Type MIME.................................. 453 5.5 Lire un tag de type TNF_WELL_KNOWN................ 453 6. Écrire un tag NFC........................................ 454 6.1 Définir un enregistrement NdefRecord avec l'api 9........ 455 6.1.1 Construire un payload de type texte................ 456 6.1.2 Construire un payload de type URI................ 457 6.2 Définir un enregistrement NdefRecord avec les API 14 et 16. 458

14 Guide de développement d applications Java Chapitre 15 Objets connectés 1. Introduction............................................ 461 2. Détection et connexion................................... 462 2.1 Permissions......................................... 462 2.2 Initialisation........................................ 463 2.3 Recherche d appareil BLE.............................. 464 2.3.1 Recherche sous Jelly Bean........................ 464 2.3.2 Recherche sous Lollipop.......................... 466 2.3.3 Appliquer des filtres lors de la recherche............. 467 2.4 Connexion.......................................... 470 3. Échange de données/interactions........................... 473 3.1 Découvrir les services................................. 473 3.2 Lire une caractéristique............................... 476 3.3 Écrire une valeur..................................... 478 Chapitre 16 Fonctionnalités avancées 1. Introduction............................................ 481 2. App Widget............................................. 481 2.1 Création........................................... 482 2.2 Déclaration......................................... 483 2.3 Configuration....................................... 484 2.4 Cycle de vie......................................... 486 2.4.1 onenabled..................................... 487 2.4.2 ondisabled.................................... 487 2.4.3 onupdate..................................... 488 2.4.4 ondeleted..................................... 488 2.5 RemoteViews....................................... 489

Table des matières 15 2.6 Activité de configuration.............................. 492 2.6.1 Déclaration.................................... 492 2.6.2 Création....................................... 493 3. Protéger les applications payantes........................... 495 3.1 Installation de la LVL................................. 496 3.1.1 Téléchargement................................ 496 3.1.2 Intégration de la LVL dans le code source............ 498 3.2 Utilisation de la LVL.................................. 498 3.2.1 Politique...................................... 498 3.2.2 Obfuscation................................... 499 3.2.3 Vérification de la licence......................... 500 3.3 Tester.............................................. 503 3.3.1 Tester sur un appareil.................... 508 3.3.2 Tester sur un émulateur.......................... 508 4. Proposer des achats intégrés................................ 508 4.1 Préparation......................................... 509 4.2 Utilisation du paiement intégré......................... 511 4.2.1 Initier la communication avec le Play Store.......... 511 4.2.2 Obtenir la liste des produits....................... 512 4.2.3 Vérifier qu un produit a été commandé............. 514 4.2.4 Commander un produit.......................... 515 Index.................................................. 519

197 Chapitre 7 La persistance des données 1. Introduction La persistance des données Ce chapitre a pour but de présenter la persistance des données sous. Les données persistantes d'une application sont les données sauvegardées avant la fermeture de l'application de telle sorte qu'elles puissent être restaurées ultérieurement. propose plusieurs mécanismes permettant de gérer la persistance de données, selon la nature de ces données. Nous découvrirons les fichiers de préférences, les fichiers standard et les bases de données. Nous terminerons par les fournisseurs de contenus qui, au-delà de la persistance des données, proposent un mécanisme de partage de données entre les applications. 2. Fichiers de préférences fournit un framework simple pour sauvegarder et restaurer des données de types primitifs. Ces données sont sauvegardées dans des fichiers au format XML sous la forme d'associations clés-valeurs. Ces fichiers sont appelés fichiers de préférences.

198 Guide de développement d applications Java 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 par décrire comment supprimer toutes ou partie des données de ces fichiers. Remarque Le système permet d'afficher et de sauvegarder les préférences générales de l'utilisateur. Toute application peut adopter la même fonctionnalité 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 écran de préférences est réalisée en dérivant de la classe PreferenceActivity. Depuis 3.0 (API 11), cette classe fonctionne de concert avec les fragments de type PreferenceFragment afin de pouvoir, entre autres, afficher 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. Ce fichier 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'un objet de type SharedPreferences retourné par la méthode getpreferences 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 lors de sa création. Les valeurs possibles pour ce paramètre sont : Context.MODE_PRIVATE : mode privé. C'est le mode par défaut. Le fichier ne peut être lu et écrit que par l'application courante, ou une application partageant le même identifiant utilisateur. Context.MODE_WORLD_READABLE : les autres applications peuvent lire le fichier. Context.MODE_WORLD_WRITEABLE : les autres applications peuvent modifier le fichier. Editions ENI - All rights reserved

La persistance des données Chapitre 7 199 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 utiliser la méthode getsharedpreferences en spécifiant le nom du fichier en premier 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 sous forme 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 à virgule 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'objet de type SharedPreferences récupéré précédemment. On invoque ensuite certains de ses accesseurs permettant de lire individuellement une donnée selon 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)

200 Guide de développement d applications Java Le premier paramètre est le nom de la clé. Le second paramètre est la valeur par 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érifier la 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 type SharedPreferences.Editor. Cet objet est retourné par la méthode edit appelée sur l'objet de type SharedPreferences récupéré précédemment. Syntaxe public abstract SharedPreferences.Editor edit () Editions ENI - All rights reserved

La persistance des données Chapitre 7 201 Exemple SharedPreferences.Editor editeur = prefs.edit(); L'objet Editor ci-dessus permet de spécifier les nouvelles données ou de modifier les données existantes en les écrasant avec les nouvelles. On invoque ses méthodes permettant d'écrire individuellement une association clé-valeur. À l'instar des méthodes de lecture, il existe une méthode d écriture par type primitif. Ces méthodes prennent en paramètres le nom de la clé ainsi que la valeur 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 fois la 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 enregistrées.

202 Guide de développement d applications Java 2.4 Suppression La suppression des données contenues dans un fichier de préférences se fait en utilisant l'objet Editor de type SharedPreferences.Editor comme pour l'écriture des données. La méthode remove de l'objet Editor permet de supprimer une association clé-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-à-dire toutes 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 les modifications. Il est également possible d'enchaîner les modifications puisque les méthodes de 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 en premier quelle que soit la position de son appel. On peut donc par exemple réécrire la ligne précédente sans en modifier le résultat. Editions ENI - All rights reserved