Android 5
Présentation de la formation
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Android 5
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Généralités
• Utiliser l’environnement
• Réaliser une application
• Les interfaces utilisateur
• Stocker les informations
• Gérer le multimédia
• XML et HTTP
• Gérer les infos utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
• Faire des tests
• Monétiser l’application
• Android Wear
Présentation du formateur
• Fabien Brissonneau
• Email : fabien.brissonneau@gmail.com
• Consultant Concepteur et Formateur
• Missions d’architecture, de conception , de réalisation logicielles
• Fondateur de eiXa6
• Actuellement en mission sur un projet de gestion
Maîtriser Android 5 et Android 4 alphorm.com™©
• Actuellement en mission sur un projet de gestion
• Mes références :
Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau
Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/
Mes formations sur alphorm
Maîtriser Android 5 et Android 4 alphorm.com™©
Les autres formations dév sur Alphorm
Maîtriser Android 5 et Android 4 alphorm.com™©
Qu’est-ce que Android ?
• Un système d’exploitation pour mobiles
• Une plateforme multi-constructeurs, multi-éditeurs
• Un framework riche, cohérent et efficace
• Une ensemble d’outils de développement productifs
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les alternatives sont minoritaires
Publics concernés
• Cette formation s’adresse à des développeurs
• Connaître Java est nécessaire, ne pas être dérouté par sa syntaxe
• Nous ne reviendrons pas sur les concepts du langage
Maîtriser Android 5 et Android 4 alphorm.com™©
Présentation des outils
• Le SDK Android, framework et outils
• L’interface de développement Android Studio
• La présentation sera faite sous Windows 8
Maîtriser Android 5 et Android 4 alphorm.com™©
Are you ready ? ☺
Maîtriser Android 5 et Android 4 alphorm.com™©
Histoire d’Android
Généralités sur Android
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Histoire d’Android
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les acteurs
• Le système
• Les outils
Maîtriser Android 5 et Android 4 alphorm.com™©
Les acteurs
• Google
• Open Handset Alliance, http://www.openhandsetalliance.com/
Maîtriser Android 5 et Android 4 alphorm.com™©
• Une mascotte, BugDroid
Le système
• Première version commerciale en Septembre 2008
• Chaque version majeure porte un nom depuis Cupcake
• Cupcake,Donut,Eclair,Froyo,Gingerbread,Honeycomb,
• IceCreamSandwich (4.0-4.0.4), JellyBean, KitKat (4.4)
Maîtriser Android 5 et Android 4 alphorm.com™©
• Lollipop (5)
• Les versions correspondent plus ou moins à des version de l’API
• Lollipop correspond à l’API 21
Les outils
• Un site : http://developer.android.com/sdk/index.html
• La mise à jour des outils du SDK via SDK Manager
• Les outils du SDK ont des numéros de versions
En décembre 2014 : 24.0.2
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les outils spécifiques à la dernière plateforme sont les platform-tools
Ce qu’on a couvert
• Les acteurs
• Le système
• Les outils
Maîtriser Android 5 et Android 4 alphorm.com™©
Architecture
Généralités sur Android
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Architecture
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les couches du système
• L’exécution d’une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Les couches du système
• Le framework d’applications
• Le binder (IPC), couche de liaison vers le système
• Les services système, organisé en composants (système ou média)
• La couche d’abstraction du matériel (HAL)
Maîtriser Android 5 et Android 4 alphorm.com™©
• Le noyau Linux et ses pilotes
L’exécution d’une application
• Avant la version 5, Dalvik est le nom de la machine virtuelle
La compilation est dite JIT (Just In Time)
• Lollipop utilise ART (Android RunTime)
Exécution du format Dex (Dalvik Executable)
Compilation AOT (Ahead Of Time), qui a lieu à l’installation
Maîtriser Android 5 et Android 4 alphorm.com™©
Compilation AOT (Ahead Of Time), qui a lieu à l’installation
• Un garbage collector gère la mémoire
Ce qu’on a couvert
• Les couches du système
• L’exécution d’une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Les packages
Généralités sur Android
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les packages
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• L’arborescence des packages
• Le package android.app
• Les packages android.widget et android.view
• Le package android.utils
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les packages com.google.android.gms.*
L’arborescence de packages
• Les packages sous android.app
Le modèle applicatif android, Activity, Service y sont
• Les packages sous android.content
Les composants ContentProvider et BroadcastReceiver
Les packages android.widget et android.view
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les packages android.widget et android.view
Les composants graphiques
• …
• Les packages java.*
Les classes java utilisables pour Android
Le package android.app
• La classe Activity : composant graphique qui permet les interactions
avec l’utilisateur
• La classe Service : un composant qui réalise des traitements en arrière-
plan
• La classe Fragment, qui est une partir réutilisable de l’ihm
Maîtriser Android 5 et Android 4 alphorm.com™©
Les packages android.widget et android.view
• Les classes Button, CheckBox, DatePicker…
Éléments graphiques chargés dans l’Activité
• Les classes LinearLayout, GridLayout…
Les composants de disposition des contrôles dans l’activité
Les classes Menu, MenuItem
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les classes Menu, MenuItem
Les composants de menu
Le package android.util
• La classe Log
Permet de tracer des événements dans LogCat
• La classe Xml
Utilitaire de traitement de fichiers Xml
Maîtriser Android 5 et Android 4 alphorm.com™©
Les packages com.google.util.gms.*
• Les classes Google Play Services
Google+
Google Maps
Android Wear
…
Maîtriser Android 5 et Android 4 alphorm.com™©
…
• Chaque API a son propre package
Ce qu’on a couvert
• L’arborescence des packages
• Le package android.app
• Les packages android.widget et android.view
• Le package android.utils
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les packages com.google.android.gms.*
Android Studio
Utiliser l’environnement
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Android Studio
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Installation de l’IDE et du JDK
• Les ressources dans un projet
• Les activités et les tests dans un projet
• Les fonctions d’Android Studio
Maîtriser Android 5 et Android 4 alphorm.com™©
Installation de l’IDE et du JDK
• Url : http://developer.android.com/sdk/index.html
• Possible de ne télécharger que le SDK
• JDK
• Android SDK
Maîtriser Android 5 et Android 4 alphorm.com™©
• Images pour AVD
Les ressources dans un projet
• Les ressources jouent un rôle important :
Description de l’ihm, codes couleurs, chaînes de caractères, images…
• Les ressources sont utilisées grâce à un identifiant
• En java, la classe R représente ces ressources
Maîtriser Android 5 et Android 4 alphorm.com™©
• Certaines ressources sont non structurées : les assets
• L’organisation des ressources suit des règles de nommage et
d’organisation des répertoires
Les activités et les tests dans un projet
• Une activité est un concept d’interface utilisateur
Un simple écran
Contient une ou plusieurs vues
Plusieurs activités dans une application
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les fragments sont comme des sous-activités
Ils sont prévus pour gérer les potentiels différents selon les tailles d’écrans
• Les ressources de « layout » seront liées aux activités
• Une activité est une classe Java
Les fonctions et les tests d’Android Studio
• L’éditeur de code
• Des modèles prêts à l’emploi
• Des applications multi-écrans
• Des matériels virtuels divers
Maîtriser Android 5 et Android 4 alphorm.com™©
• Des scripts de construction évolués
Ce qu’on a couvert
• Installation de l’IDE et du JDK
• Les ressources dans un projet
• Les activités et les tests dans un projet
• Les fonctions d’Android Studio
Maîtriser Android 5 et Android 4 alphorm.com™©
Compilation, exécution et
Utiliser l’environnement
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Compilation, exécution et
débogage
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• La compilation du projet
• L’exécution de l’application
• Le débogage de l’application
Maîtriser Android 5 et Android 4 alphorm.com™©
La compilation du projet
• Un projet sous Android Studio est composé de plusieurs modules
• Chaque module donne lieu à un fichier zip d’extension .apk
• Ce fichier contient :
Le code exécutable par la VM (Dalvik ou ART)
Maîtriser Android 5 et Android 4 alphorm.com™©
Les ressources compilées
Un manifest décrivant l’application
La signature dans un certificat (la clé privée est conservée par le développeur)
L’exécution de l’application
• Se réalise sur émulateur
Choix d’un AVD, ou création d’un nouveau
• Ou bien sur un appareil physique
Installation des pilotes USB
Paramètres « développeur » activé
Maîtriser Android 5 et Android 4 alphorm.com™©
Paramètres « développeur » activé
Le débogage de l’application
• Le certificat est généré automatiquement par Android Studio
• Le débogage peut se faire sur matériel virtuel ou réel
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• La compilation du projet
• L’exécution de l’application
• Le débogage de l’application
Maîtriser Android 5 et Android 4 alphorm.com™©
Le déploiement
Utiliser l’environnement
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le déploiement
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les modes de livraison
• La gestion des versions
• Les signatures
Maîtriser Android 5 et Android 4 alphorm.com™©
Les modes de livraison
• Différents canaux :
Par un marketplace (Google Play), voir les règles spécifiques
Par mail
Via un site web
• Paramétrage de l’installation à partir de « sources inconnues »
Maîtriser Android 5 et Android 4 alphorm.com™©
• Paramétrage de l’installation à partir de « sources inconnues »
• Préparation minimum :
Mode release
Signer
Tester et vérifier l’application et toutes les ressources externes
La gestion des versions
• A noter l’importance des numéros de versions dans ce système ou
plusieurs applications vont collaborer
• Dans le manifest :
La version : versionCode (pour les applications) , versionName (pour les
utilisateurs)
Maîtriser Android 5 et Android 4 alphorm.com™©
Prérequis sur le SDK : minSdkVersion, targetSdkVersion, maxSdkVersion
Les signatures
• Les applications sont toutes signées avant qu’elles puissent être
installées
• Les certificats sont auto-signés, ils servent à identifier l’auteur
• En mode debug, le certificat est généré par le Android SDK
Mot de passe bien connu, pas besoin de le fournir
Maîtriser Android 5 et Android 4 alphorm.com™©
Mot de passe bien connu, pas besoin de le fournir
• En mode release, il faut disposer d’un magasin de clés privées, d’une clé
privée identifiant l’auteur, modifier le fichier de build
• Toutes les versions d’une application doivent avoir la même clé
Ce qu’on a couvert
• Les modes de livraison
• La gestion des versions
• Les signatures
Maîtriser Android 5 et Android 4 alphorm.com™©
Les outils
Utiliser l’environnement
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les outils
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Utiliser Android Studio
• Les outils en ligne de commande
• Les principaux outils
Maîtriser Android 5 et Android 4 alphorm.com™©
Utiliser Android Studio
• L’aide à la construction de l’ihm
• Un suivi des images correspondant aux variables
• Fenêtre de sortie filtrable
• Positionnement automatique des parentés d’activités
Maîtriser Android 5 et Android 4 alphorm.com™©
• Création facilitée des ihms
• Edition simple et complète du code : quick fix, navigation facile, région
de code, aide rapidement accessible, …
Les outils en ligne de commande
• Les outils du SDK : AVD Manager, Android Emulator, mksdcard
• Les outils de développement : android, hierachyviewer, lint, sdk
manager, sqlite3
• Les outils de debug : adb, uiautomator, ddms, device monitor, monkey,
systrace
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les outils de construction
• Les outils d’images
• Remarque sur les outils liés à la plateforme
Les principaux outils
• Android Asset Packaging Tool (aapt) : compile les ressources et produit
R.java
• Les éventuelles interfaces aidl
Maîtriser Android 5 et Android 4 alphorm.com™©
Les principaux outils
• Les fichiers .class sont traduits en .dex
Maîtriser Android 5 et Android 4 alphorm.com™©
Les principaux outils
• La signature suit
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Utiliser Android Studio
• Les outils en ligne de commande
• Les principaux outils
Maîtriser Android 5 et Android 4 alphorm.com™©
Un simple programme
Réaliser une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Un simple programme
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le périmètre de l’application
• L’architecture de l’application
• La construction de l’ihm principale
• Les menus
Maîtriser Android 5 et Android 4 alphorm.com™©
Le périmètre de l’application
• Exemple d’application qui permet de garder trace de ses déplacements
Saisir un trajet : saisie manuelle, récupération de la localisation, notification
wear, stockage
Récupérer les trajets et kilomètres par mois ou par an : imprimante, mail,
stockage,
Paramétrage : localisation, stockage, cloud, imprimante
Maîtriser Android 5 et Android 4 alphorm.com™©
Paramétrage : localisation, stockage, cloud, imprimante
Architecture de l’application
• Vues de haut niveau entre lesquelles on peut naviguer
• Les vues par catégories pour entrer dans le détail
• Les vues de détail
• Dans un premier temps, saisie d’un trajet : 1 seule vue de haut niveau
Maîtriser Android 5 et Android 4 alphorm.com™©
Construction de l’ihm principale
• La notion de « view » : les contrôles visuels
• La notion de « viewgroup » : tous les layouts
• Il est possible de créer l’ihm dans le code, ou bien dans XML
Avec l’éditeur graphique, ou bien en éditant le code XML directement
Maîtriser Android 5 et Android 4 alphorm.com™©
• Ensemble complet de contrôles : Textes, Boutons, Images, Dates
• Contrôles complexes : Liste, Grille, Spinner et Gallerie
Travaille avec des adaptateurs
Cas particulier des AdapterView
• Séparation de l’accès aux données de leur représentation
• Un contrôle de liste (ListView, Spinner,…) contient des items dont le
type doit être décrit par un layout
• Il est lié par un adaptateur à des données (tableau, …)
• Un adaptateur convertit une donnée en une vue enfant de la liste
Maîtriser Android 5 et Android 4 alphorm.com™©
• Un adaptateur convertit une donnée en une vue enfant de la liste
SimpleCursorAdapter
• Lorsque le ListView doit représenter une ligne, il fait appel à
l’adaptateur en passant la ligne
L’adaptateur va alors construire la vue enfant en utilisant le layout référencé
Utiliser un menu
• Le menu peut être décrit dans le fichier XML
• Il est créé avec l’activité
Maîtriser Android 5 et Android 4 alphorm.com™©
• On peut réagir sur les items
Ce qu’on a couvert
• Le périmètre de l’application
• L’architecture de l’application
• La construction de l’ihm principale
• Les menus
Maîtriser Android 5 et Android 4 alphorm.com™©
Sauvegarder les données
Réaliser une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Sauvegarder les données
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Stockage dans les préférences
• Stockage interne
• Stockage externe
• Les bases de données SQLite
Maîtriser Android 5 et Android 4 alphorm.com™©
• La connexion au réseau
Le stockage dans les préférences
• Stockage de paires clé-valeur
• Utiliser la classe android.content.SharedPreferences
getSharedPreferences() ou getPreferences()
• Stockage de toute variable primitive
Maîtriser Android 5 et Android 4 alphorm.com™©
• Persistence des données entre sessions
• Ecriture : edit() fournit un Editor
Appeler putXXX(v), puis commit()
• Lecture : utiliser getXXX()
Stockage interne
• Sauvegarder un fichier privé pour l’application
Le fichier est enlevé lorsque d’utilisateur désinstalle l’application
• Pour ouvrir le fichier
La méthode openFileOutput(fichier,mode) de android.content.Context
La méthode openFileInput(fichier)
Maîtriser Android 5 et Android 4 alphorm.com™©
La méthode openFileInput(fichier)
Utiliser ensuite FileOutputStream/FileInputStream
• Même technique pour les fichiers de cache, avec getCacheDir()
• Autres méthodes : getFilesDir(), getDir(), deleteFile(), fileList()
Stockage externe
• Peut être une carte SD ou bien interne
• Accessibles librement et modifiable par l’utilisateur
• Soumis à permission READ/WRITE_EXTERNAL_STORAGE
• Vérifier que le stockage externe existe
Maîtriser Android 5 et Android 4 alphorm.com™©
getExternalStorageState()
• Fichiers publics :
Environment.getExternalStoragePublicDirectory()
• Fichiers « app-private » :
getExternalFilesDir()
Les bases de données SQLite
• Base accessible de l’application elle-même
• Créer une sous-classe de SQLiteOpenHelper et redéfinir onCreate()
Créer les tables nécessaires
• Lecture et écriture par getReadableDatabase() et getWritableDatabase()
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les requêtes sont exécutées avec la méthode SQLiteDatabase.query()
• Et les résultats sont parcourus avec un Cursor
• Pour déboguer, penser à l’outil sqlite3
La connexion au réseau
• Il est possible de se connecter au réseau s’il est disponible
• Ce serait une forme de stockage des données
• Les packages java.net.* et android.net.*
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Stockage dans les préférences
• Stockage interne
• Stockage externe
• Les bases de données SQLite
Maîtriser Android 5 et Android 4 alphorm.com™©
• La connexion au réseau
Le cycle de vie
Réaliser une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le cycle de vie
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Vue d’ensemble du cycle de vie
• La pause et la reprise
• L’arrêt et le redémarrage
• La re-création de l’activité
Maîtriser Android 5 et Android 4 alphorm.com™©
Vue d’ensemble du cycle de vie
• Les fonctions appelées lors du changement d’état :
onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()
onRestart()
• Toutes les fonctions (« de rappel » ou « callback ») n’ont pas à être
implémentées
Maîtriser Android 5 et Android 4 alphorm.com™©
implémentées
• Les états stables dans la vie de l’activité sont :
Resumed : en avant-plan et l’utilisateur interagit avec
Paused : semi-visible, l’utilisateur ne peut plus interagir
Stopped : cachée, aucune exécution de code
Application et activité
• L’activité « principale » de l’application est définie dans le manifest
• Cette activité reçoit le onCreate() lors du lancement
Maîtriser Android 5 et Android 4 alphorm.com™©
La redéfinition de onCreate()
• Peut servir à construire une ihm différente selon la version du SDK
• Initialise l’ihm
Maîtriser Android 5 et Android 4 alphorm.com™©
• Le pendant est onDestroy(), rarement utilisée
La pause et la reprise
• La méthode onPause() est appelée lorsque l’activité devient
partiellement invisible
Arrêter les actions qui consomment (animations…)
Sauvegarder les informations persistantes
Libérer les ressources consommatrices (senseurs …)
Maîtriser Android 5 et Android 4 alphorm.com™©
Libérer les ressources consommatrices (senseurs …)
• Le pendant : onResume()
Initialiser les senseurs
Reprendre les animations
L’arrêt et le redémarrage
• Les cas d’usage de stop/restart :
L’utilisateur passe à une autre application par les « applications récentes »,
stoppe l’appli puis repasse par le même chemin
L’application démarre une autre activité, puis back
Réception d’un appel téléphonique
Maîtriser Android 5 et Android 4 alphorm.com™©
Réception d’un appel téléphonique
• Méthode onStop()
Libérer toutes les ressources
• et onRestart()
Rarement utile
La re-création de l’activité
• Lorsque l’activité est détruite car inutilisée depuis un certain temps
Il s’agit pour le système d’économiser des ressources
• Le système peut alors reconstruire l’activité dans l’état où elle était lors
de sa destruction
Pairs clés-valeurs d’état -> bundle
Maîtriser Android 5 et Android 4 alphorm.com™©
Pairs clés-valeurs d’état -> bundle
La re-création de l’ihm est prise en charge par le système
• Pour sauver/restaurer des données supplémentaires :
onSaveInstanceState / onRestoreInstanceState
Ce qu’on a couvert
• Vue d’ensemble du cycle de vie
• La pause et la reprise
• L’arrêt et le redémarrage
• La re-création de l’activité
Maîtriser Android 5 et Android 4 alphorm.com™©
L’actionbar
Réaliser une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
L’actionbar
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Généralités sur la barre action
• Mettre des boutons dans la barre
• Modifier le style de la barre
Maîtriser Android 5 et Android 4 alphorm.com™©
Généralités sur la barre d’actions
• La barre d’action sert
d’identité visuelle,
de repère de navigation,
à déclencher les actions importantes,
à naviguer dans l’application
Maîtriser Android 5 et Android 4 alphorm.com™©
à naviguer dans l’application
• Selon la version d’Android, la mise en œuvre peut être différente
Nous ne supportons ici que Android après 3.0 (API 11)
Mettre des boutons dans la barre
• Les boutons doivent correspondre aux actions les plus importantes
• Si une icône est montrée, on parle de « action button »
• Pour ajouter l’icône, ne pas oublier
Maîtriser Android 5 et Android 4 alphorm.com™©
Projet/…/res/drawable/-> ajouter Image Asset
Remarque sur les icônes
• Téléchargement d’icônes toutes prêtes
Sur developer.android.com/design/downloads/index.html
Maîtriser Android 5 et Android 4 alphorm.com™©
Visualise et réagir
• Pour visualiser le menu …
Maîtriser Android 5 et Android 4 alphorm.com™©
• Et réagir sur les boutons …
La navigation entre les activités
• Les activités peuvent être reliées par parenté
• Ici, l’activité SendMailActivity est « fille » de MainActivityMileage
Maîtriser Android 5 et Android 4 alphorm.com™©
• Et ne pas oublier
Modifier le style de la barre
• Il y a deux thèmes par défaut : Theme.Holo et Theme.Holo.Light
• Choisir le style dans AndroidManifest.Xml
• Ou bien dans un fichier de style : styles.xml
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Généralités sur la barre action
• Mettre des boutons dans la barre
• Modifier le style de la barre
Maîtriser Android 5 et Android 4 alphorm.com™©
Le support des matériels
Réaliser une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le support des matériels
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le support des langages
• Le support des écrans
• Le support des versions de plateformes
Maîtriser Android 5 et Android 4 alphorm.com™©
Le support des langages
• Les chaînes de caractères sont isolées
• Chaque « locale » est représentée par un répertoire
Maîtriser Android 5 et Android 4 alphorm.com™©
• La recherche s’effectue en descendant dans les sous-répertoires
Le support des écrans
• Les écrans ont différentes tailles et différentes densités
• Tailles : small, normal, large, xlarge
• Densités : ldpi, mdpi, hdpi, xhdpi
• L’orientation de l’écran correspond à une variation de taille
Maîtriser Android 5 et Android 4 alphorm.com™©
Le support des versions de plateformes
• Les versions sont représentées par des répertoires
Maîtriser Android 5 et Android 4 alphorm.com™©
• On peut récupérer dans le code la version du SDK
Ce qu’on a couvert
• Le support des langages
• Le support des écrans
• Le support des versions de plateformes
Maîtriser Android 5 et Android 4 alphorm.com™©
Interagir avec d’autres
Réaliser une application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Interagir avec d’autres
activités
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Généralités sur les « Intent »
• Lancer une sous-activité
• Les Intents Android
Maîtriser Android 5 et Android 4 alphorm.com™©
Généralités sur les « intents »
• Une « intent » définit une action et les données associés
• Une « intent » peut être explicite ou implicite
Soit démarrer une activité bien précise
Soit faire exécuter une action par une activité non spécifiée
L’activation est possible grâce au paramétrage de <intent-filter>
Maîtriser Android 5 et Android 4 alphorm.com™©
• L’activation est possible grâce au paramétrage de <intent-filter>
Lancer une sous-activité
• Pour une action nommée <package>.intent.action.NAME dans le
manifest de l’activité
• Créer un objet de classe android.content.Intent
Maîtriser Android 5 et Android 4 alphorm.com™©
• L’activité elle-même peut savoir comment elle a été sollicitée
Intent origine = this.getIntent();
Les Intents Android
• Intent.ACTION_VIEW : invocation du navigateur web
• Intent.ACTION_MAIN : point d’entrée d’application
• Intent.ACTION_WEB_SEARCH : recherche Web
• Intent.ACTION_CALL : appel téléphonique
Maîtriser Android 5 et Android 4 alphorm.com™©
• Catégories standards :
CATEGORY_DEFAULT
CATEGORY_LAUNCHER
CATEGORY_BROWSABLE : accessible par un lien
…
Déclencher l’envoi d’un mail
• Suivant l’action choisie, on passe des données
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Généralités sur les « Intent »
• Lancer une sous-activité
• Les Intents Android
Maîtriser Android 5 et Android 4 alphorm.com™©
Les composants
Les interfaces utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les composants
graphiques
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les contrôles Text
• Les contrôles Button
• Les contrôles Date/Time Picker
• Les contrôles Clock
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les contrôles List/Grid/Spinner
Les contrôles Text
• TextView : texte sans édition possible
• EditText : champ de texte éditable
• AutoCompleteTextView : donne des possibilités de complétion
• MultiAutoCompleteTextView : idem mais multiple
Maîtriser Android 5 et Android 4 alphorm.com™©
Les contrôles Button
• La classe de base android.widget.Button
• Listener abonné soit en code Java soit en attribut de balise
Maîtriser Android 5 et Android 4 alphorm.com™©
Les contrôles Date/Time Picker
• DatePicker
• TimePicker
Maîtriser Android 5 et Android 4 alphorm.com™©
Les contrôles Clock
• TextClock
• AnalogClock
Maîtriser Android 5 et Android 4 alphorm.com™©
Les contrôles List/Grid/Spinner
• ListView
• GridView
• Spinner
Maîtriser Android 5 et Android 4 alphorm.com™©
Les containers et les adapters
• Les List/Grid/Spinner récupèrent leurs données via des Adapters
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Les contrôles Text
• Les contrôles Button
• Les contrôles Date/Time Picker
• Les contrôles Clock
Maîtriser Android 5 et Android 4 alphorm.com™©
• Les contrôles List/Grid/Spinner
La logique de l’interface
Les interfaces utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
La logique de l’interface
graphique
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Construire une IHM en Java
• Construire une IHM en XML
• Construire une IHM en mixant XML et Java
Maîtriser Android 5 et Android 4 alphorm.com™©
Construire une IHM en Java
• Les contrôles sont attachés à des ViewGroup, les « layouts »
• Chaque « layout » a une orientation
• Les ViewGroup sont eux-mêmes attachés en relation parent-enfants
Maîtriser Android 5 et Android 4 alphorm.com™©
Construire une IHM en XML
• Utilisant les balises <LinearLayout/>
Maîtriser Android 5 et Android 4 alphorm.com™©
Construire une IHM en mixant Java et XML
• La construction peut être faite en XML
• Manipulation en Java
• Importance des id
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Construire une IHM en Java
• Construire une IHM en XML
• Construire une IHM en mixant XML et Java
Maîtriser Android 5 et Android 4 alphorm.com™©
La gestion des menus
Les interfaces utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
La gestion des menus
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les menus options
• Les menus contextuels
• Les menus popup
Maîtriser Android 5 et Android 4 alphorm.com™©
Les menus options
• Ce sont les principaux menus d’une activité
• Pour des actions ayant un impact global
• Depuis Android 3.0, ils sont dans la barre d’action
Maîtriser Android 5 et Android 4 alphorm.com™©
Les menus contextuels
• Un menu flottant qui apparaît suite à un long clic sur un élément
• Depuis Android 3.0, il s’agit du mode d’action contextuel de préférence
Maîtriser Android 5 et Android 4 alphorm.com™©
Les menus popup
• Une liste d’items qui correspondent à la vue
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Les menus options
• Les menus contextuels
• Les menus popup
Maîtriser Android 5 et Android 4 alphorm.com™©
La variété des
Les interfaces utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
La variété des
LayoutManager
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• LinearLayout
• TableLayout
• RelativeLayout
• FrameLayout
Maîtriser Android 5 et Android 4 alphorm.com™©
• GridLayout
LinearLayout
• Les enfants sont organisés verticalement ou horizontalement
• La gravité est l’ancrage d’un côté
• Le poids est le pourcentage de déformation
Maîtriser Android 5 et Android 4 alphorm.com™©
TableLayout
• Extension de LinearLayout
• Les enfants sont placés en lignes/colonnes
Maîtriser Android 5 et Android 4 alphorm.com™©
RelativeLayout
• Les enfants sont rattachés relativement
Au conteneur : android:layout_alignParentTop,…
Aux voisins : android:toRightOf,…
Maîtriser Android 5 et Android 4 alphorm.com™©
FrameLayout
• Plusieurs enfants, mais un seul visible
• Utiliser setVisibility(…) pour faire afficher l’un ou l’autre
Maîtriser Android 5 et Android 4 alphorm.com™©
GridLayout
• Positionne les enfants en lignes/colonnes
• Une cellule peut ne pas avoir de contrôle
• Un contrôle peut s’étaler sur plusieurs lignes/colonnes
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• LinearLayout
• TableLayout
• RelativeLayout
• FrameLayout
Maîtriser Android 5 et Android 4 alphorm.com™©
• GridLayout
Les fragments
Les interfaces utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les fragments
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Définition du fragment
• Intérêt des fragments
Maîtriser Android 5 et Android 4 alphorm.com™©
Définition des fragments
• Un fragment est une partie modulaire d’une activité
• Un fragment a son propre cycle de vie
• Le fragment peut être référencé dans un layout
• Ou bien activé dynamiquement
Maîtriser Android 5 et Android 4 alphorm.com™©
Intérêt du fragment
• Avec un fragment, on peut facilement s’adapter à des surfaces
importantes
Si la surface est faible, lancer une autre activité
Si la surface est suffisante, faire apparaître le fragment
• Le fragment peut être activé dynamiquement
Maîtriser Android 5 et Android 4 alphorm.com™©
• Le fragment peut être activé dynamiquement
Exemple deux activités – deux fragments
• 1 activité charge un fragment • La seconde activité charge …
Maîtriser Android 5 et Android 4 alphorm.com™©
• Le fragment (par exemple index)
invoque une autre activité
• Le second fragment, qui
représente par exemple les détails
Exemple une activité – deux fragments
• 1 activité a les deux fragments dans son layout
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Définition du fragment
• Intérêt des fragments
Maîtriser Android 5 et Android 4 alphorm.com™©
Mettre en place des tests
Faire des tests
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Mettre en place des tests
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le rôle et l’intérêt des tests
• Faire des tests manuels
• Les frameworks de test
Maîtriser Android 5 et Android 4 alphorm.com™©
Le rôle et l’intérêt des tests
• Vérifier que les composants fonctionnent comme attendu
• Rassurer le développeur
• Permettre d’avancer sur les fonctionnalités sans compromettre l’existant
Maîtriser Android 5 et Android 4 alphorm.com™©
Faire des tests manuels
• Simples à mettre en œuvre
• Particulièrement pratique pour les tests d’ihm
• Longs et fastidieux
• Difficiles à systématiser
Maîtriser Android 5 et Android 4 alphorm.com™©
• Nécessite une intervention humaine
Les frameworks de tests
• Propose des méthodes toutes prêtes
Assertions
• Propose une ihm pour visualiser tout de suite les problèmes
• Permet d’automatiser des tests
Maîtriser Android 5 et Android 4 alphorm.com™©
• En Java, la référence est Junit
• Les tests sont typiquement créés par Activité
Ce qu’on a couvert
• Le rôle et l’intérêt des tests
• Faire des tests manuels
• Les frameworks de test
Maîtriser Android 5 et Android 4 alphorm.com™©
Créer des tests unitaires
Faire des tests
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Créer des tests unitaires
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les tests unitaires utilisant les frameworks
• Règles de construction des tests
• Exemple de tests
Maîtriser Android 5 et Android 4 alphorm.com™©
Les tests unitaires utilisant les frameworks
• Pour les tests n’utilisant pas les composants Android, JUnit suffit
• Les composants Android sont testés avec les extensions
• Les classes de tests sont rangées dans des packages Java classiques
Maîtriser Android 5 et Android 4 alphorm.com™©
Règles de construction des tests
• Une classe de test par classe à tester
• Une méthode de test par test
• Basée sur JUnit 3, les méthodes commencent par « test… »
• Commencer par écrire des assertions
Maîtriser Android 5 et Android 4 alphorm.com™©
• Bâtir le test ensuite
Exemple de test unitaire
• Une classe Voyage
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Les tests unitaires utilisant les frameworks
• Règles de construction des tests
• Exemple de tests
Maîtriser Android 5 et Android 4 alphorm.com™©
Tester l’interface
Faire des tests
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Tester l’interface
graphique
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le framework d’instrumentation
• Simuler l’interaction utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Le framework d’instrumentation
• Hériter de classes dérivées de TestCase
ActivityInstrumentationTestCase
• Mettre en place un setUp
• Tester les interactions sur l’ihm
Maîtriser Android 5 et Android 4 alphorm.com™©
Simuler les interactions
• Récupérer les contrôles
• Envoyer des événements
• Attention à ce que l’application soit visible
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Le framework d’instrumentation
• Simuler l’interaction utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Tester avec les mocks
Faire des tests
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Tester avec les mocks
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les classes de android.test.mock
• Utilisations des classes de Mock
Maîtriser Android 5 et Android 4 alphorm.com™©
Les classes de android.test.mock
• MockApplication
• MockContentProvider
• MockContentResolver
• MockContext
Maîtriser Android 5 et Android 4 alphorm.com™©
• MockCursor
• MockDialogInterface
• MockResources
Utilisation des classes de Mock
• Fournir une classe
Pour compiler
Faire fonctionner les services
• Ne propose pas une implémentation réelle
Permet d’avancer sur les tests
Maîtriser Android 5 et Android 4 alphorm.com™©
• Permet d’avancer sur les tests
• Il suffit de redéfinir les méthodes qui le nécessitent
Ce qu’on a couvert
• Les classes de android.test.mock
• Utilisations des classes de Mock
Maîtriser Android 5 et Android 4 alphorm.com™©
Le compte développeur
Monétiser l’application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le compte développeur
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Création du compte développeur
• La console du développeur
Maîtriser Android 5 et Android 4 alphorm.com™©
Création du compte développeur
• Accéder au site :
• Vérification par téléphone
Maîtriser Android 5 et Android 4 alphorm.com™©
Compte développeur
• Contrat à accepter
• Réglement
Maîtriser Android 5 et Android 4 alphorm.com™©
La console du développeur
• Via le site http://developer.android.com/distribute/index.html
• Developer Console
Maîtriser Android 5 et Android 4 alphorm.com™©
La console
• Liste des applications et statistiques
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Création du compte développeur
• La console du développeur
Maîtriser Android 5 et Android 4 alphorm.com™©
La préparation de
Monétiser l’application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
La préparation de
l’application
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Gestion du fichier APK
• Préparation de la fiche Google Play
Maîtriser Android 5 et Android 4 alphorm.com™©
Gestion du fichier APK
• Générer le APK et le signer
• Télécharger le fichier
Maîtriser Android 5 et Android 4 alphorm.com™©
Préparation de la fiche Google Play
• Fournir les infos de description de l’application
• Les captures
Maîtriser Android 5 et Android 4 alphorm.com™©
Captures d’écrans
• Par l’outil Monitor
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Gestion du fichier APK
• Préparation de la fiche Google Play
Maîtriser Android 5 et Android 4 alphorm.com™©
Gérer la publicité
Monétiser l’application
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Gérer la publicité
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le compte AdMob
• Créer une unité publicitaire
• Installer le SDK
Maîtriser Android 5 et Android 4 alphorm.com™©
Le compte AdMob
• Créer le compte , via le compte Google
AdSense
AdWords
Maîtriser Android 5 et Android 4 alphorm.com™©
Créer une unité publicitaire
• Sous le compte AdMob
• Indiquer quelle application est concernée
Maîtriser Android 5 et Android 4 alphorm.com™©
Installer le SDK
• Mettre en place la bibliothèque de service Google Play
Ne pas oublier la balise meta-data
• Déclarer une activité AdActivity
• Autoriser les connexions réseau
Maîtriser Android 5 et Android 4 alphorm.com™©
• Puis créer un objet
de type AdView dans votre ihm
Ce qu’on a couvert
• Le compte AdMob
• Créer une unité publicitaire
• Installer le SDK
Maîtriser Android 5 et Android 4 alphorm.com™©
Les préférences
Stocker les informations
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Les préférences
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• La classe SharedPreferences
• Positionner des valeurs
• Lire les informations de préférence
• Enregistrer une callback
Maîtriser Android 5 et Android 4 alphorm.com™©
La classe SharedPreferences
• Fournit des services pour sauver et récupérer des paires clé-valeur de
primitives et de chaînes
• Pour obtenir un SharedPreferences, utiliser
Soit getSharedPreferences() : chaque fichier est identifié
Soit getPreferences() : un fichier unique pour l’activité
Maîtriser Android 5 et Android 4 alphorm.com™©
Soit getPreferences() : un fichier unique pour l’activité
Positionner des valeurs
• Utiliser la classe SharedPreferences.Editor pour positionner les valeurs
• Méthodes pour positionner des valeurs :
putBoolean(String,boolean), putFloat(String,float), putInt(String,int),
putLong(String,long), putString(String,String),
putStringSet(String,Set<String>)
Maîtriser Android 5 et Android 4 alphorm.com™©
• Méthodes pour supprimer : clear(), remove(String)
• Méthodes pour appliquer les changements : apply(), commit()
Lire les informations de préférence
• Sur la classe SharedPreferences
getBoolean, getFloat, getInt, getLong, getString, getStringSet
Paramètres : la clé et une valeur par défaut
• Récupération de toutes les valeurs : getAll
Obtenir un Editor (pour positionner des valeurs) : edit
Maîtriser Android 5 et Android 4 alphorm.com™©
• Obtenir un Editor (pour positionner des valeurs) : edit
• Vérifier qu’une clé existe : contains
• Enregistrer des callbacks : register….unregister
Enregistrer une callback
• Méthodes registerOnSharedPreferenceChangeListener(….), unregister…
• Un listener doit être fourni, qui sera appelé lorsqu’une modification se
produit sur les préférences
• OnSharedPreferenceChangeListener est l’interface à implémenter
Méthode onSharedPreferenceChanged(SharedPreference, String)
Maîtriser Android 5 et Android 4 alphorm.com™©
Méthode onSharedPreferenceChanged(SharedPreference, String)
Ce qu’on a couvert
• La classe SharedPreferences
• Positionner des valeurs
• Lire les informations de préférence
• Enregistrer une callback
Maîtriser Android 5 et Android 4 alphorm.com™©
Le stockage interne
Stocker les informations
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le stockage interne
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• La méthode openFileOutput
• La méthode openFileInput
• Les fichiers de cache
Maîtriser Android 5 et Android 4 alphorm.com™©
La méthode openFileOutput
• Crée un fichier accessible uniquement de l’application
• Le fichier sera détruit lors de la désinstallation
• Les modes possibles sont
Context.MODE_PRIVATE : création/remplacement
Maîtriser Android 5 et Android 4 alphorm.com™©
Context.MODE_APPEND : ajoute
Context.MODE_WORLD_READABLE : lisible par les autres applications
Context.MODE_WORLD_WRITABLE : inscriptible par les autres
• Ecriture utilisant write
• Fermeture du flux avec close
La méthode openFileInput
• Dans la classe Context
• Retourne un FileInputStream
• Demande le nom du fichier à ouvrir
• Peut lever FileNotFoundException
Maîtriser Android 5 et Android 4 alphorm.com™©
Les fichiers de cache
• Obtenir le répertoire de cache avec getCacheDir() : File
• Ouvrir et manipuler le fichier
• Les fichiers en cache sont privés à l’application
• Peuvent disparaître lorsque le système a besoin
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• La méthode openFileOutput
• La méthode openFileInput
• Les fichiers de cache
Maîtriser Android 5 et Android 4 alphorm.com™©
Le stockage externe
Stocker les informations
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Le stockage externe
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Définition
• Mise en œuvre initiale
• Créer un fichier et sauvegarder
Maîtriser Android 5 et Android 4 alphorm.com™©
Définition
• Le stockage externe consiste à stocker sur un support « externe »
• Cela peut être réellement amovible, mais peut-être non
• Permissions android.permission.READ/WRITE_EXTERNAL_STORAGE
• Données sans protection, accessibles à d’autres applications
Maîtriser Android 5 et Android 4 alphorm.com™©
Mise en œuvre initiale
• Déclarer la permission
• Vérifier la présence d’un stockage externe
Maîtriser Android 5 et Android 4 alphorm.com™©
Environment.getExternalStorageState()
• Vérifier la possibilité d’y accéder en écriture
Environment.MEDIA_MOUNTEDY
• Vérifier la possibilité d’y accéder en lecture
Environment.MEDIA_MOUNTED_READ_ONLY
Créer un fichier et sauvegarder
• Pour un usage privé, utiliser getExternalFilesDir() : File
Possibilité de passer un paramètre
• Pour un accès plus général, utiliser
getExternalStoragePublicDirectory(..)
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Définition
• Mise en œuvre initiale
• Créer un fichier et sauvegarder
Maîtriser Android 5 et Android 4 alphorm.com™©
La base SQLite
Stocker les informations
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
La base SQLite
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• L’intérêt de la base de données
• La création et la mise à jour du schéma
• Ecrire et lire dans la base de données
Maîtriser Android 5 et Android 4 alphorm.com™©
L’intérêt de la base de données
• Un stockage structuré
Tables, colonnes, typées
• Des requêtes utilisant le langage SQL
• Des volumes importants accessibles dans des temps raisonnables
Maîtriser Android 5 et Android 4 alphorm.com™©
La création et la mise à jour du schéma
• Utiliser SQLiteOpenHelper
• Sous classer cette classe, qui contient toute la mécanique
• Redéfinir les méthodes permettant de créer et de mettre à jour
Maîtriser Android 5 et Android 4 alphorm.com™©
Ecrire et lire
• Obtenir une SQLiteDatabase
• Par appel de getWritableDatabase ou de getReadableDatabase
• Executer du SQL : execSQL ou query
• Récupération des données via un Cursor
Maîtriser Android 5 et Android 4 alphorm.com™©
• L’outil sqlite3 permet d’accéder à une base de données via un terminal
Ce qu’on a couvert
• L’intérêt de la base de données
• La création et la mise à jour du schéma
• Ecrire et lire dans la base de données
Maîtriser Android 5 et Android 4 alphorm.com™©
Une interface pour les
Stocker les informations
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Une interface pour les
préférences
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Un type d’activité dédié : PreferenceActivity
• Les écrans de préférence
Maîtriser Android 5 et Android 4 alphorm.com™©
Un type d’activité dédié
• Construire une activité dédiée aux préférences
• Dériver l’activité de PreferenceActivity
• Préparer les fragments correspondants à chaque catégorie de
préférences
• Le stockage est automatique, puis utiliser
Maîtriser Android 5 et Android 4 alphorm.com™©
• Le stockage est automatique, puis utiliser
PreferenceManager.getDefaultSharedPreference() pour le relire
Les écrans de préférence
• Chaque catégorie de préférence correspond à un « PreferenceScreen »
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Un type d’activité dédié : PreferenceActivity
• Les écrans de préférence
Maîtriser Android 5 et Android 4 alphorm.com™©
Prendre des photos
Gérer le multimédia
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Prendre des photos
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• L’accès à l’appareil photo
• Récupérer l’image obtenue
• Stocker l’image dans un fichier
• Contrôler directement l’appareil photo
Maîtriser Android 5 et Android 4 alphorm.com™©
L’accès à l’appareil photo
• Penser à déclarer l’usage de l’appareil photo
Requis ou non
Maîtriser Android 5 et Android 4 alphorm.com™©
• S’il n’est pas requis, il faudra tester la disponibilité de l’appareil photo
Récupérer l’image obtenue
• L’image peut-être récupérée sous la forme d’un bitmap
Maîtriser Android 5 et Android 4 alphorm.com™©
Stocker l’image dans un fichier
• Une image stockée dans un fichier externe
Créer le fichier (File)
• Fournir une Uri l’Intent
• putExtra(MediaStore.EXTRA_OUTPUT,Uri)
Possible aussi de rajouter la photo dans la gallerie
Maîtriser Android 5 et Android 4 alphorm.com™©
• Possible aussi de rajouter la photo dans la gallerie
Contrôler directement l’appareil photo
• Utiliser l’objet Camera, représentant l’appareil photo
• L’appareil photo doit être ouvert en pensant au temps long
La fermeture doit être envisagée aussi
• Possible de gérer une pré-visualisation
Maîtriser Android 5 et Android 4 alphorm.com™©
• Le paramétrage de l’appareil photo est représenté par
Camera.Parameters
Ce qu’on a couvert
• L’accès à l’appareil photo
• Récupérer l’image obtenue
• Stocker l’image dans un fichier
• Contrôler directement l’appareil photo
Maîtriser Android 5 et Android 4 alphorm.com™©
Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau
le fichier. Si le x rouge est toujours affiché, vous devrez peut-être supprimer l'image avant de la réinsérer.
Enregistrer des vidéos
Gérer le multimédia
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Enregistrer des vidéos
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les permissions nécessaires
• L’enregistrement d’une vidéo
• Visualiser la vidéo
Maîtriser Android 5 et Android 4 alphorm.com™©
Les permissions nécessaires
• Dans le manifest, <uses-feature>
• Demander android.hardware.camera2
• Exigence ou non de la vidéo pour l’application
Si non, tester sa présence avant
Maîtriser Android 5 et Android 4 alphorm.com™©
L’enregistrement d’une vidéo
• Passer par une Intent
• Le nom de l’intent est MediaStore.ACTION_VIDEO_CAPTURE
• Lancer la vidéo
Maîtriser Android 5 et Android 4 alphorm.com™©
Visualiser la vidéo
• Avec un contrôle VideoView
• Accéder au résultat de l’Intent
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Les permissions nécessaires
• L’enregistrement d’une vidéo
• Visualiser la vidéo
Maîtriser Android 5 et Android 4 alphorm.com™©
Imprimer des documents
Gérer le multimédia
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Imprimer des documents
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les impressions sous Android
• Imprimer une photo
• Imprimer un document
Maîtriser Android 5 et Android 4 alphorm.com™©
Les impressions sous Android
• Google Cloud Print
Maîtriser Android 5 et Android 4 alphorm.com™©
Impression dans Google Drive possible
• Impression en PDF
• Certaines imprimantes conncectées
Imprimer une photo
• Utiliser PrintHelper
Positionner le layout avec setScaleMode
Maîtriser Android 5 et Android 4 alphorm.com™©
Imprimer un document
• Créer sa propre sous-classe de PrintDocumentHelper et invoquer ce
code
Maîtriser Android 5 et Android 4 alphorm.com™©
Imprimer un document
• Le format du document est complètement défini dans votre classe
héritant de PrintDocumentHelper
Maîtriser Android 5 et Android 4 alphorm.com™©
• Il faut implémenter 2 méthodes au moins
La méthode onLayout, qui rend le nombre de pages
La méthode onWrite, qui gère l’impression elle-même
Ce qu’on a couvert
• Les impressions sous Android
• Imprimer une photo
• Imprimer un document
Maîtriser Android 5 et Android 4 alphorm.com™©
Manipuler un document
XML et HTTP
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Manipuler un document
XML
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• L’interface XmlPullParser
• Exemple de code utilisant XmlPullParser
Maîtriser Android 5 et Android 4 alphorm.com™©
L’interface XmlPullParser
• Permet le parcours d’un document XML
• La méthode next() retourne l’événement rencontré
La valeur XmlPullParser.END_DOCUMENT représente la fin du document
• START_DOCUMENT / END_DOCUMENT
Maîtriser Android 5 et Android 4 alphorm.com™©
• START_TAG / END_TAG
• TEXT
• La méthode nextToken() est plus bas niveau
Exemple de code
• Parcours du document en réagissant sur les événements
• Un buffer
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• L’interface XmlPullParser
• Exemple de code utilisant XmlPullParser
Maîtriser Android 5 et Android 4 alphorm.com™©
Se connecter avec HTTP
XML et HTTP
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Se connecter avec HTTP
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le client HTTP
• L’exécution asynchrone
Maîtriser Android 5 et Android 4 alphorm.com™©
Le client HTTP
• Pour accéder au protocole HTTP
• La classe HttpClient
• Les requêtes sont représentées par des classes
HttpGet, HttpPost, HttpPut…
Maîtriser Android 5 et Android 4 alphorm.com™©
• Ne pas oublier les permissions INTERNET
L’exécution asynchrone
• Ne pas bloquer le thread ihm par l’attente de la réponse web
• Utiliser AsyncTask<Paramètres, Progression, Resultat>
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Le client HTTP
• L’exécution asynchrone
Maîtriser Android 5 et Android 4 alphorm.com™©
Solliciter un WebService
XML et HTTP
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Solliciter un WebService
RESTful
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Définition des services REST
• Lire une entité
Maîtriser Android 5 et Android 4 alphorm.com™©
Définition des services REST
• Les webservices sont soit basés sur SOAP, soient utilisent simplement le
protocole HTTP
• Une service RESTful utilise les commandes HTTP
GET pour récupérer une ressource
DELETE pour supprimer une ressource
Maîtriser Android 5 et Android 4 alphorm.com™©
DELETE pour supprimer une ressource
POST pour créer une ressource
PUT pour mettre à jour une ressource
• Les URL sont choisies pour identifier les ressources
Lire une entité
• Un objet peut être reconstruit à partir des données récupérées
Format XML
Format JSON
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Définition des services REST
• Lire une entité
Maîtriser Android 5 et Android 4 alphorm.com™©
Récupérer les infos de
Gérer les infos utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Récupérer les infos de
contacts
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les permissions
• La liste des contacts
• Le chargement des données
Maîtriser Android 5 et Android 4 alphorm.com™©
Les permissions
• Modifier le manifest
• Ajouter une balise pour accéder aux contacts
Maîtriser Android 5 et Android 4 alphorm.com™©
La liste des contacts
• Une ListView dans le layout
Maîtriser Android 5 et Android 4 alphorm.com™©
• Connexion entre liste et curseur
Le chargement des données
• Implémentation
• Méthode de chargement
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Les permissions
• La liste des contacts
• Le chargement des données
Maîtriser Android 5 et Android 4 alphorm.com™©
Modifier les contacts par
Gérer les infos utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Modifier les contacts par
les Intents
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Accéder aux contacts via les Intents
• Ajouter un contact dans la liste
Maîtriser Android 5 et Android 4 alphorm.com™©
Ajouter via les Intents
• Chercher l’application qui insère dans les contacts
Maîtriser Android 5 et Android 4 alphorm.com™©
• Possibilités de fournir des infos sur le contact en cours d’insertion
Ajouter, Editer
• Pour ajouter, démarrer l’activité simplement après avoir fourni les
informations
• Pour éditer un contact spécifique, positionner setDataAndType(…)
• En fournissant l’URI sur le contact préalablement sélectionné
Maîtriser Android 5 et Android 4 alphorm.com™©
• Il existe une action qui laisse le choix à l’utilisateur
ACTION_INSERT_OR_EDIT
Lancer l’intent correspondant
Ce qu’on a couvert
• Accéder aux contacts via les Intents
• Ajouter un contact dans la liste
Maîtriser Android 5 et Android 4 alphorm.com™©
Utiliser les localisations
Gérer les infos utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Utiliser les localisations
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Les permissions et les installations
• Créer un GoogleApiClient
• Réagir sur les callbacks
Maîtriser Android 5 et Android 4 alphorm.com™©
Les permissions et les installations
• Le plus simple est d’utiliser les services Google
Installer par le DSK manager
Déclarer dans le script Gradle
Déclarer dans le manifest
Maîtriser Android 5 et Android 4 alphorm.com™©
• Permissions
Créer un GoogleApiClient
• GoogleApiClient est un point d’entrée dans les divers services google
• Positionner lors de la création de cet objet les services attendus
Maîtriser Android 5 et Android 4 alphorm.com™©
Réagir sur les callbacks
• Lors de la connexion, les infos sont récupérées
• La connexion doit être démarrée et arrêtée
Maîtriser Android 5 et Android 4 alphorm.com™©
• La callback exploite les données
Ce qu’on a couvert
• Les permissions et les installations
• Créer un GoogleApiClient
• Réagir sur les callbacks
Maîtriser Android 5 et Android 4 alphorm.com™©
Localisation et adresse
Gérer les infos utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Localisation et adresse
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Utilisation de Geocoder
• Préparation d’un receveur
• Lancement d’un service
Maîtriser Android 5 et Android 4 alphorm.com™©
Utilisation d’un Geocoder
• Classe android.location.Geocoder
• Récupère des noms de localisation à partir de coordonnées
Maîtriser Android 5 et Android 4 alphorm.com™©
Préparation d’un receveur
• Un receveur est une classe dont les méthodes seront rappelées
• Il faudra mettre à jour l’ihm dans le thread UI
Maîtriser Android 5 et Android 4 alphorm.com™©
Lancement d’un service
• Un service fonctionne en arrière-plan Idéal pour la connexion à la
récupération des noms d’adresses
Maîtriser Android 5 et Android 4 alphorm.com™©
Lancement d’un service
• Utiliser startService(…)
Maîtriser Android 5 et Android 4 alphorm.com™©
• Déclarer le service dans le manifest
Accéder au thread UI à partir d’un autre
• Il est interdit de modifier l’ihm à partir d’un autre thread
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Utilisation de Geocoder
• Préparation d’un receiver
• Lancement d’un service
Maîtriser Android 5 et Android 4 alphorm.com™©
Créer des notifications
Android wear
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Créer des notifications
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Préparation pour des notifications
• Lancer une notification
Maîtriser Android 5 et Android 4 alphorm.com™©
Préparations pour des notifications
• Modifier le script Gradle
• Rajouter la dépendance à la bibliothèque v4-support
Maîtriser Android 5 et Android 4 alphorm.com™©
Lancer une notification
• Lancement de la notification à la fois sur l’appareil principal et la montre
connectée
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Préparation pour des notifications
• Lancer une notification
Maîtriser Android 5 et Android 4 alphorm.com™©
Créer une application
Android wear
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Créer une application
wearable
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Prérequis
• Exécution dans un AVD spécifique
Maîtriser Android 5 et Android 4 alphorm.com™©
Prérequis
• Une application wearable tourne sur l’appareil connecté, mais
indépendamment du mobile
• Mais il faut une application mobile pour installer l’application wearable
sur la montre connectée
• Mises à jour nécessaires
Maîtriser Android 5 et Android 4 alphorm.com™©
Les SDK Tools ne version 23 mini
SDK Android mini API20
• Un AVD Wear
• Créer un projet Mobile+Wear, soit 2 activités
Exécution dans un AVD spécifique
• Dans un AVD adapté
• Lancement de l’activité par défaut
• Description du layout très semblable aux applications mobiles
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Prérequis
• Exécution dans un AVD spécifique
Maîtriser Android 5 et Android 4 alphorm.com™©
Echanger des données
Android wear
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Echanger des données
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Le client GoogleAPI
• Réceptionner des données
• Emettre des données
Maîtriser Android 5 et Android 4 alphorm.com™©
Le client GoogleAPI
• Créer un client GoogleAPI
• Api Wearable
• Possibilité d’échanger des données
• Ou simplement un message
Maîtriser Android 5 et Android 4 alphorm.com™©
Réceptionner les données
• Soit faire un service qui gère la réception
• Soit créer une classe implémentant DataListener
Maîtriser Android 5 et Android 4 alphorm.com™©
Emettre des données
• Construire une map clé/valeur
• Emettre les données avec DataApi
• Ou bien un message avec MessageApi
Maîtriser Android 5 et Android 4 alphorm.com™©
Ce qu’on a couvert
• Le client GoogleAPI
• Réceptionner des données
• Emettre des données
Maîtriser Android 5 et Android 4 alphorm.com™©
Android 5
Conclusion
Maîtriser Android 5 et Android 4 alphorm.com™©
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Android 5
Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels
Plan
• Généralités
• Utiliser l’environnement
• Réaliser une application
• Les interfaces utilisateur
• Stocker les informations
• Gérer le multimédia
• XML et HTTP
• Gérer les infos utilisateur
Maîtriser Android 5 et Android 4 alphorm.com™©
• Faire des tests
• Monétiser l’application
• Android Wear
Pour continuer …
• La formation Android avancée
Les interactions client-serveur
Mise en œuvre détaillée de Android Wear
Mise en œuvre des services Google
…
Maîtriser Android 5 et Android 4 alphorm.com™©
…
Merci d’avoir suivi cette formation,
Maîtriser Android 5 et Android 4 alphorm.com™©
rendez-vous pour la suite !

Alphorm.com Formation Android 5

  • 1.
    Android 5 Présentation dela formation Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Android 5 Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 2.
    Plan • Généralités • Utiliserl’environnement • Réaliser une application • Les interfaces utilisateur • Stocker les informations • Gérer le multimédia • XML et HTTP • Gérer les infos utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© • Faire des tests • Monétiser l’application • Android Wear
  • 3.
    Présentation du formateur •Fabien Brissonneau • Email : fabien.brissonneau@gmail.com • Consultant Concepteur et Formateur • Missions d’architecture, de conception , de réalisation logicielles • Fondateur de eiXa6 • Actuellement en mission sur un projet de gestion Maîtriser Android 5 et Android 4 alphorm.com™© • Actuellement en mission sur un projet de gestion • Mes références : Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/
  • 4.
    Mes formations suralphorm Maîtriser Android 5 et Android 4 alphorm.com™©
  • 5.
    Les autres formationsdév sur Alphorm Maîtriser Android 5 et Android 4 alphorm.com™©
  • 6.
    Qu’est-ce que Android? • Un système d’exploitation pour mobiles • Une plateforme multi-constructeurs, multi-éditeurs • Un framework riche, cohérent et efficace • Une ensemble d’outils de développement productifs Maîtriser Android 5 et Android 4 alphorm.com™© • Les alternatives sont minoritaires
  • 7.
    Publics concernés • Cetteformation s’adresse à des développeurs • Connaître Java est nécessaire, ne pas être dérouté par sa syntaxe • Nous ne reviendrons pas sur les concepts du langage Maîtriser Android 5 et Android 4 alphorm.com™©
  • 8.
    Présentation des outils •Le SDK Android, framework et outils • L’interface de développement Android Studio • La présentation sera faite sous Windows 8 Maîtriser Android 5 et Android 4 alphorm.com™©
  • 9.
    Are you ready? ☺ Maîtriser Android 5 et Android 4 alphorm.com™©
  • 10.
    Histoire d’Android Généralités surAndroid Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Histoire d’Android Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 11.
    Plan • Les acteurs •Le système • Les outils Maîtriser Android 5 et Android 4 alphorm.com™©
  • 12.
    Les acteurs • Google •Open Handset Alliance, http://www.openhandsetalliance.com/ Maîtriser Android 5 et Android 4 alphorm.com™© • Une mascotte, BugDroid
  • 13.
    Le système • Premièreversion commerciale en Septembre 2008 • Chaque version majeure porte un nom depuis Cupcake • Cupcake,Donut,Eclair,Froyo,Gingerbread,Honeycomb, • IceCreamSandwich (4.0-4.0.4), JellyBean, KitKat (4.4) Maîtriser Android 5 et Android 4 alphorm.com™© • Lollipop (5) • Les versions correspondent plus ou moins à des version de l’API • Lollipop correspond à l’API 21
  • 14.
    Les outils • Unsite : http://developer.android.com/sdk/index.html • La mise à jour des outils du SDK via SDK Manager • Les outils du SDK ont des numéros de versions En décembre 2014 : 24.0.2 Maîtriser Android 5 et Android 4 alphorm.com™© • Les outils spécifiques à la dernière plateforme sont les platform-tools
  • 15.
    Ce qu’on acouvert • Les acteurs • Le système • Les outils Maîtriser Android 5 et Android 4 alphorm.com™©
  • 16.
    Architecture Généralités sur Android MaîtriserAndroid 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Architecture Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 17.
    Plan • Les couchesdu système • L’exécution d’une application Maîtriser Android 5 et Android 4 alphorm.com™©
  • 18.
    Les couches dusystème • Le framework d’applications • Le binder (IPC), couche de liaison vers le système • Les services système, organisé en composants (système ou média) • La couche d’abstraction du matériel (HAL) Maîtriser Android 5 et Android 4 alphorm.com™© • Le noyau Linux et ses pilotes
  • 19.
    L’exécution d’une application •Avant la version 5, Dalvik est le nom de la machine virtuelle La compilation est dite JIT (Just In Time) • Lollipop utilise ART (Android RunTime) Exécution du format Dex (Dalvik Executable) Compilation AOT (Ahead Of Time), qui a lieu à l’installation Maîtriser Android 5 et Android 4 alphorm.com™© Compilation AOT (Ahead Of Time), qui a lieu à l’installation • Un garbage collector gère la mémoire
  • 20.
    Ce qu’on acouvert • Les couches du système • L’exécution d’une application Maîtriser Android 5 et Android 4 alphorm.com™©
  • 21.
    Les packages Généralités surAndroid Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les packages Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 22.
    Plan • L’arborescence despackages • Le package android.app • Les packages android.widget et android.view • Le package android.utils Maîtriser Android 5 et Android 4 alphorm.com™© • Les packages com.google.android.gms.*
  • 23.
    L’arborescence de packages •Les packages sous android.app Le modèle applicatif android, Activity, Service y sont • Les packages sous android.content Les composants ContentProvider et BroadcastReceiver Les packages android.widget et android.view Maîtriser Android 5 et Android 4 alphorm.com™© • Les packages android.widget et android.view Les composants graphiques • … • Les packages java.* Les classes java utilisables pour Android
  • 24.
    Le package android.app •La classe Activity : composant graphique qui permet les interactions avec l’utilisateur • La classe Service : un composant qui réalise des traitements en arrière- plan • La classe Fragment, qui est une partir réutilisable de l’ihm Maîtriser Android 5 et Android 4 alphorm.com™©
  • 25.
    Les packages android.widgetet android.view • Les classes Button, CheckBox, DatePicker… Éléments graphiques chargés dans l’Activité • Les classes LinearLayout, GridLayout… Les composants de disposition des contrôles dans l’activité Les classes Menu, MenuItem Maîtriser Android 5 et Android 4 alphorm.com™© • Les classes Menu, MenuItem Les composants de menu
  • 26.
    Le package android.util •La classe Log Permet de tracer des événements dans LogCat • La classe Xml Utilitaire de traitement de fichiers Xml Maîtriser Android 5 et Android 4 alphorm.com™©
  • 27.
    Les packages com.google.util.gms.* •Les classes Google Play Services Google+ Google Maps Android Wear … Maîtriser Android 5 et Android 4 alphorm.com™© … • Chaque API a son propre package
  • 28.
    Ce qu’on acouvert • L’arborescence des packages • Le package android.app • Les packages android.widget et android.view • Le package android.utils Maîtriser Android 5 et Android 4 alphorm.com™© • Les packages com.google.android.gms.*
  • 29.
    Android Studio Utiliser l’environnement MaîtriserAndroid 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Android Studio Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 30.
    Plan • Installation del’IDE et du JDK • Les ressources dans un projet • Les activités et les tests dans un projet • Les fonctions d’Android Studio Maîtriser Android 5 et Android 4 alphorm.com™©
  • 31.
    Installation de l’IDEet du JDK • Url : http://developer.android.com/sdk/index.html • Possible de ne télécharger que le SDK • JDK • Android SDK Maîtriser Android 5 et Android 4 alphorm.com™© • Images pour AVD
  • 32.
    Les ressources dansun projet • Les ressources jouent un rôle important : Description de l’ihm, codes couleurs, chaînes de caractères, images… • Les ressources sont utilisées grâce à un identifiant • En java, la classe R représente ces ressources Maîtriser Android 5 et Android 4 alphorm.com™© • Certaines ressources sont non structurées : les assets • L’organisation des ressources suit des règles de nommage et d’organisation des répertoires
  • 33.
    Les activités etles tests dans un projet • Une activité est un concept d’interface utilisateur Un simple écran Contient une ou plusieurs vues Plusieurs activités dans une application Maîtriser Android 5 et Android 4 alphorm.com™© • Les fragments sont comme des sous-activités Ils sont prévus pour gérer les potentiels différents selon les tailles d’écrans • Les ressources de « layout » seront liées aux activités • Une activité est une classe Java
  • 34.
    Les fonctions etles tests d’Android Studio • L’éditeur de code • Des modèles prêts à l’emploi • Des applications multi-écrans • Des matériels virtuels divers Maîtriser Android 5 et Android 4 alphorm.com™© • Des scripts de construction évolués
  • 35.
    Ce qu’on acouvert • Installation de l’IDE et du JDK • Les ressources dans un projet • Les activités et les tests dans un projet • Les fonctions d’Android Studio Maîtriser Android 5 et Android 4 alphorm.com™©
  • 36.
    Compilation, exécution et Utiliserl’environnement Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Compilation, exécution et débogage Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 37.
    Plan • La compilationdu projet • L’exécution de l’application • Le débogage de l’application Maîtriser Android 5 et Android 4 alphorm.com™©
  • 38.
    La compilation duprojet • Un projet sous Android Studio est composé de plusieurs modules • Chaque module donne lieu à un fichier zip d’extension .apk • Ce fichier contient : Le code exécutable par la VM (Dalvik ou ART) Maîtriser Android 5 et Android 4 alphorm.com™© Les ressources compilées Un manifest décrivant l’application La signature dans un certificat (la clé privée est conservée par le développeur)
  • 39.
    L’exécution de l’application •Se réalise sur émulateur Choix d’un AVD, ou création d’un nouveau • Ou bien sur un appareil physique Installation des pilotes USB Paramètres « développeur » activé Maîtriser Android 5 et Android 4 alphorm.com™© Paramètres « développeur » activé
  • 40.
    Le débogage del’application • Le certificat est généré automatiquement par Android Studio • Le débogage peut se faire sur matériel virtuel ou réel Maîtriser Android 5 et Android 4 alphorm.com™©
  • 41.
    Ce qu’on acouvert • La compilation du projet • L’exécution de l’application • Le débogage de l’application Maîtriser Android 5 et Android 4 alphorm.com™©
  • 42.
    Le déploiement Utiliser l’environnement MaîtriserAndroid 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le déploiement Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 43.
    Plan • Les modesde livraison • La gestion des versions • Les signatures Maîtriser Android 5 et Android 4 alphorm.com™©
  • 44.
    Les modes delivraison • Différents canaux : Par un marketplace (Google Play), voir les règles spécifiques Par mail Via un site web • Paramétrage de l’installation à partir de « sources inconnues » Maîtriser Android 5 et Android 4 alphorm.com™© • Paramétrage de l’installation à partir de « sources inconnues » • Préparation minimum : Mode release Signer Tester et vérifier l’application et toutes les ressources externes
  • 45.
    La gestion desversions • A noter l’importance des numéros de versions dans ce système ou plusieurs applications vont collaborer • Dans le manifest : La version : versionCode (pour les applications) , versionName (pour les utilisateurs) Maîtriser Android 5 et Android 4 alphorm.com™© Prérequis sur le SDK : minSdkVersion, targetSdkVersion, maxSdkVersion
  • 46.
    Les signatures • Lesapplications sont toutes signées avant qu’elles puissent être installées • Les certificats sont auto-signés, ils servent à identifier l’auteur • En mode debug, le certificat est généré par le Android SDK Mot de passe bien connu, pas besoin de le fournir Maîtriser Android 5 et Android 4 alphorm.com™© Mot de passe bien connu, pas besoin de le fournir • En mode release, il faut disposer d’un magasin de clés privées, d’une clé privée identifiant l’auteur, modifier le fichier de build • Toutes les versions d’une application doivent avoir la même clé
  • 47.
    Ce qu’on acouvert • Les modes de livraison • La gestion des versions • Les signatures Maîtriser Android 5 et Android 4 alphorm.com™©
  • 48.
    Les outils Utiliser l’environnement MaîtriserAndroid 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les outils Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 49.
    Plan • Utiliser AndroidStudio • Les outils en ligne de commande • Les principaux outils Maîtriser Android 5 et Android 4 alphorm.com™©
  • 50.
    Utiliser Android Studio •L’aide à la construction de l’ihm • Un suivi des images correspondant aux variables • Fenêtre de sortie filtrable • Positionnement automatique des parentés d’activités Maîtriser Android 5 et Android 4 alphorm.com™© • Création facilitée des ihms • Edition simple et complète du code : quick fix, navigation facile, région de code, aide rapidement accessible, …
  • 51.
    Les outils enligne de commande • Les outils du SDK : AVD Manager, Android Emulator, mksdcard • Les outils de développement : android, hierachyviewer, lint, sdk manager, sqlite3 • Les outils de debug : adb, uiautomator, ddms, device monitor, monkey, systrace Maîtriser Android 5 et Android 4 alphorm.com™© • Les outils de construction • Les outils d’images • Remarque sur les outils liés à la plateforme
  • 52.
    Les principaux outils •Android Asset Packaging Tool (aapt) : compile les ressources et produit R.java • Les éventuelles interfaces aidl Maîtriser Android 5 et Android 4 alphorm.com™©
  • 53.
    Les principaux outils •Les fichiers .class sont traduits en .dex Maîtriser Android 5 et Android 4 alphorm.com™©
  • 54.
    Les principaux outils •La signature suit Maîtriser Android 5 et Android 4 alphorm.com™©
  • 55.
    Ce qu’on acouvert • Utiliser Android Studio • Les outils en ligne de commande • Les principaux outils Maîtriser Android 5 et Android 4 alphorm.com™©
  • 56.
    Un simple programme Réaliserune application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Un simple programme Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 57.
    Plan • Le périmètrede l’application • L’architecture de l’application • La construction de l’ihm principale • Les menus Maîtriser Android 5 et Android 4 alphorm.com™©
  • 58.
    Le périmètre del’application • Exemple d’application qui permet de garder trace de ses déplacements Saisir un trajet : saisie manuelle, récupération de la localisation, notification wear, stockage Récupérer les trajets et kilomètres par mois ou par an : imprimante, mail, stockage, Paramétrage : localisation, stockage, cloud, imprimante Maîtriser Android 5 et Android 4 alphorm.com™© Paramétrage : localisation, stockage, cloud, imprimante
  • 59.
    Architecture de l’application •Vues de haut niveau entre lesquelles on peut naviguer • Les vues par catégories pour entrer dans le détail • Les vues de détail • Dans un premier temps, saisie d’un trajet : 1 seule vue de haut niveau Maîtriser Android 5 et Android 4 alphorm.com™©
  • 60.
    Construction de l’ihmprincipale • La notion de « view » : les contrôles visuels • La notion de « viewgroup » : tous les layouts • Il est possible de créer l’ihm dans le code, ou bien dans XML Avec l’éditeur graphique, ou bien en éditant le code XML directement Maîtriser Android 5 et Android 4 alphorm.com™© • Ensemble complet de contrôles : Textes, Boutons, Images, Dates • Contrôles complexes : Liste, Grille, Spinner et Gallerie Travaille avec des adaptateurs
  • 61.
    Cas particulier desAdapterView • Séparation de l’accès aux données de leur représentation • Un contrôle de liste (ListView, Spinner,…) contient des items dont le type doit être décrit par un layout • Il est lié par un adaptateur à des données (tableau, …) • Un adaptateur convertit une donnée en une vue enfant de la liste Maîtriser Android 5 et Android 4 alphorm.com™© • Un adaptateur convertit une donnée en une vue enfant de la liste SimpleCursorAdapter • Lorsque le ListView doit représenter une ligne, il fait appel à l’adaptateur en passant la ligne L’adaptateur va alors construire la vue enfant en utilisant le layout référencé
  • 62.
    Utiliser un menu •Le menu peut être décrit dans le fichier XML • Il est créé avec l’activité Maîtriser Android 5 et Android 4 alphorm.com™© • On peut réagir sur les items
  • 63.
    Ce qu’on acouvert • Le périmètre de l’application • L’architecture de l’application • La construction de l’ihm principale • Les menus Maîtriser Android 5 et Android 4 alphorm.com™©
  • 64.
    Sauvegarder les données Réaliserune application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Sauvegarder les données Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 65.
    Plan • Stockage dansles préférences • Stockage interne • Stockage externe • Les bases de données SQLite Maîtriser Android 5 et Android 4 alphorm.com™© • La connexion au réseau
  • 66.
    Le stockage dansles préférences • Stockage de paires clé-valeur • Utiliser la classe android.content.SharedPreferences getSharedPreferences() ou getPreferences() • Stockage de toute variable primitive Maîtriser Android 5 et Android 4 alphorm.com™© • Persistence des données entre sessions • Ecriture : edit() fournit un Editor Appeler putXXX(v), puis commit() • Lecture : utiliser getXXX()
  • 67.
    Stockage interne • Sauvegarderun fichier privé pour l’application Le fichier est enlevé lorsque d’utilisateur désinstalle l’application • Pour ouvrir le fichier La méthode openFileOutput(fichier,mode) de android.content.Context La méthode openFileInput(fichier) Maîtriser Android 5 et Android 4 alphorm.com™© La méthode openFileInput(fichier) Utiliser ensuite FileOutputStream/FileInputStream • Même technique pour les fichiers de cache, avec getCacheDir() • Autres méthodes : getFilesDir(), getDir(), deleteFile(), fileList()
  • 68.
    Stockage externe • Peutêtre une carte SD ou bien interne • Accessibles librement et modifiable par l’utilisateur • Soumis à permission READ/WRITE_EXTERNAL_STORAGE • Vérifier que le stockage externe existe Maîtriser Android 5 et Android 4 alphorm.com™© getExternalStorageState() • Fichiers publics : Environment.getExternalStoragePublicDirectory() • Fichiers « app-private » : getExternalFilesDir()
  • 69.
    Les bases dedonnées SQLite • Base accessible de l’application elle-même • Créer une sous-classe de SQLiteOpenHelper et redéfinir onCreate() Créer les tables nécessaires • Lecture et écriture par getReadableDatabase() et getWritableDatabase() Maîtriser Android 5 et Android 4 alphorm.com™© • Les requêtes sont exécutées avec la méthode SQLiteDatabase.query() • Et les résultats sont parcourus avec un Cursor • Pour déboguer, penser à l’outil sqlite3
  • 70.
    La connexion auréseau • Il est possible de se connecter au réseau s’il est disponible • Ce serait une forme de stockage des données • Les packages java.net.* et android.net.* Maîtriser Android 5 et Android 4 alphorm.com™©
  • 71.
    Ce qu’on acouvert • Stockage dans les préférences • Stockage interne • Stockage externe • Les bases de données SQLite Maîtriser Android 5 et Android 4 alphorm.com™© • La connexion au réseau
  • 72.
    Le cycle devie Réaliser une application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le cycle de vie Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 73.
    Plan • Vue d’ensembledu cycle de vie • La pause et la reprise • L’arrêt et le redémarrage • La re-création de l’activité Maîtriser Android 5 et Android 4 alphorm.com™©
  • 74.
    Vue d’ensemble ducycle de vie • Les fonctions appelées lors du changement d’état : onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() onRestart() • Toutes les fonctions (« de rappel » ou « callback ») n’ont pas à être implémentées Maîtriser Android 5 et Android 4 alphorm.com™© implémentées • Les états stables dans la vie de l’activité sont : Resumed : en avant-plan et l’utilisateur interagit avec Paused : semi-visible, l’utilisateur ne peut plus interagir Stopped : cachée, aucune exécution de code
  • 75.
    Application et activité •L’activité « principale » de l’application est définie dans le manifest • Cette activité reçoit le onCreate() lors du lancement Maîtriser Android 5 et Android 4 alphorm.com™©
  • 76.
    La redéfinition deonCreate() • Peut servir à construire une ihm différente selon la version du SDK • Initialise l’ihm Maîtriser Android 5 et Android 4 alphorm.com™© • Le pendant est onDestroy(), rarement utilisée
  • 77.
    La pause etla reprise • La méthode onPause() est appelée lorsque l’activité devient partiellement invisible Arrêter les actions qui consomment (animations…) Sauvegarder les informations persistantes Libérer les ressources consommatrices (senseurs …) Maîtriser Android 5 et Android 4 alphorm.com™© Libérer les ressources consommatrices (senseurs …) • Le pendant : onResume() Initialiser les senseurs Reprendre les animations
  • 78.
    L’arrêt et leredémarrage • Les cas d’usage de stop/restart : L’utilisateur passe à une autre application par les « applications récentes », stoppe l’appli puis repasse par le même chemin L’application démarre une autre activité, puis back Réception d’un appel téléphonique Maîtriser Android 5 et Android 4 alphorm.com™© Réception d’un appel téléphonique • Méthode onStop() Libérer toutes les ressources • et onRestart() Rarement utile
  • 79.
    La re-création del’activité • Lorsque l’activité est détruite car inutilisée depuis un certain temps Il s’agit pour le système d’économiser des ressources • Le système peut alors reconstruire l’activité dans l’état où elle était lors de sa destruction Pairs clés-valeurs d’état -> bundle Maîtriser Android 5 et Android 4 alphorm.com™© Pairs clés-valeurs d’état -> bundle La re-création de l’ihm est prise en charge par le système • Pour sauver/restaurer des données supplémentaires : onSaveInstanceState / onRestoreInstanceState
  • 80.
    Ce qu’on acouvert • Vue d’ensemble du cycle de vie • La pause et la reprise • L’arrêt et le redémarrage • La re-création de l’activité Maîtriser Android 5 et Android 4 alphorm.com™©
  • 81.
    L’actionbar Réaliser une application MaîtriserAndroid 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum L’actionbar Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 82.
    Plan • Généralités surla barre action • Mettre des boutons dans la barre • Modifier le style de la barre Maîtriser Android 5 et Android 4 alphorm.com™©
  • 83.
    Généralités sur labarre d’actions • La barre d’action sert d’identité visuelle, de repère de navigation, à déclencher les actions importantes, à naviguer dans l’application Maîtriser Android 5 et Android 4 alphorm.com™© à naviguer dans l’application • Selon la version d’Android, la mise en œuvre peut être différente Nous ne supportons ici que Android après 3.0 (API 11)
  • 84.
    Mettre des boutonsdans la barre • Les boutons doivent correspondre aux actions les plus importantes • Si une icône est montrée, on parle de « action button » • Pour ajouter l’icône, ne pas oublier Maîtriser Android 5 et Android 4 alphorm.com™© Projet/…/res/drawable/-> ajouter Image Asset
  • 85.
    Remarque sur lesicônes • Téléchargement d’icônes toutes prêtes Sur developer.android.com/design/downloads/index.html Maîtriser Android 5 et Android 4 alphorm.com™©
  • 86.
    Visualise et réagir •Pour visualiser le menu … Maîtriser Android 5 et Android 4 alphorm.com™© • Et réagir sur les boutons …
  • 87.
    La navigation entreles activités • Les activités peuvent être reliées par parenté • Ici, l’activité SendMailActivity est « fille » de MainActivityMileage Maîtriser Android 5 et Android 4 alphorm.com™© • Et ne pas oublier
  • 88.
    Modifier le stylede la barre • Il y a deux thèmes par défaut : Theme.Holo et Theme.Holo.Light • Choisir le style dans AndroidManifest.Xml • Ou bien dans un fichier de style : styles.xml Maîtriser Android 5 et Android 4 alphorm.com™©
  • 89.
    Ce qu’on acouvert • Généralités sur la barre action • Mettre des boutons dans la barre • Modifier le style de la barre Maîtriser Android 5 et Android 4 alphorm.com™©
  • 90.
    Le support desmatériels Réaliser une application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le support des matériels Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 91.
    Plan • Le supportdes langages • Le support des écrans • Le support des versions de plateformes Maîtriser Android 5 et Android 4 alphorm.com™©
  • 92.
    Le support deslangages • Les chaînes de caractères sont isolées • Chaque « locale » est représentée par un répertoire Maîtriser Android 5 et Android 4 alphorm.com™© • La recherche s’effectue en descendant dans les sous-répertoires
  • 93.
    Le support desécrans • Les écrans ont différentes tailles et différentes densités • Tailles : small, normal, large, xlarge • Densités : ldpi, mdpi, hdpi, xhdpi • L’orientation de l’écran correspond à une variation de taille Maîtriser Android 5 et Android 4 alphorm.com™©
  • 94.
    Le support desversions de plateformes • Les versions sont représentées par des répertoires Maîtriser Android 5 et Android 4 alphorm.com™© • On peut récupérer dans le code la version du SDK
  • 95.
    Ce qu’on acouvert • Le support des langages • Le support des écrans • Le support des versions de plateformes Maîtriser Android 5 et Android 4 alphorm.com™©
  • 96.
    Interagir avec d’autres Réaliserune application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Interagir avec d’autres activités Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 97.
    Plan • Généralités surles « Intent » • Lancer une sous-activité • Les Intents Android Maîtriser Android 5 et Android 4 alphorm.com™©
  • 98.
    Généralités sur les« intents » • Une « intent » définit une action et les données associés • Une « intent » peut être explicite ou implicite Soit démarrer une activité bien précise Soit faire exécuter une action par une activité non spécifiée L’activation est possible grâce au paramétrage de <intent-filter> Maîtriser Android 5 et Android 4 alphorm.com™© • L’activation est possible grâce au paramétrage de <intent-filter>
  • 99.
    Lancer une sous-activité •Pour une action nommée <package>.intent.action.NAME dans le manifest de l’activité • Créer un objet de classe android.content.Intent Maîtriser Android 5 et Android 4 alphorm.com™© • L’activité elle-même peut savoir comment elle a été sollicitée Intent origine = this.getIntent();
  • 100.
    Les Intents Android •Intent.ACTION_VIEW : invocation du navigateur web • Intent.ACTION_MAIN : point d’entrée d’application • Intent.ACTION_WEB_SEARCH : recherche Web • Intent.ACTION_CALL : appel téléphonique Maîtriser Android 5 et Android 4 alphorm.com™© • Catégories standards : CATEGORY_DEFAULT CATEGORY_LAUNCHER CATEGORY_BROWSABLE : accessible par un lien …
  • 101.
    Déclencher l’envoi d’unmail • Suivant l’action choisie, on passe des données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 102.
    Ce qu’on acouvert • Généralités sur les « Intent » • Lancer une sous-activité • Les Intents Android Maîtriser Android 5 et Android 4 alphorm.com™©
  • 103.
    Les composants Les interfacesutilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les composants graphiques Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 104.
    Plan • Les contrôlesText • Les contrôles Button • Les contrôles Date/Time Picker • Les contrôles Clock Maîtriser Android 5 et Android 4 alphorm.com™© • Les contrôles List/Grid/Spinner
  • 105.
    Les contrôles Text •TextView : texte sans édition possible • EditText : champ de texte éditable • AutoCompleteTextView : donne des possibilités de complétion • MultiAutoCompleteTextView : idem mais multiple Maîtriser Android 5 et Android 4 alphorm.com™©
  • 106.
    Les contrôles Button •La classe de base android.widget.Button • Listener abonné soit en code Java soit en attribut de balise Maîtriser Android 5 et Android 4 alphorm.com™©
  • 107.
    Les contrôles Date/TimePicker • DatePicker • TimePicker Maîtriser Android 5 et Android 4 alphorm.com™©
  • 108.
    Les contrôles Clock •TextClock • AnalogClock Maîtriser Android 5 et Android 4 alphorm.com™©
  • 109.
    Les contrôles List/Grid/Spinner •ListView • GridView • Spinner Maîtriser Android 5 et Android 4 alphorm.com™©
  • 110.
    Les containers etles adapters • Les List/Grid/Spinner récupèrent leurs données via des Adapters Maîtriser Android 5 et Android 4 alphorm.com™©
  • 111.
    Ce qu’on acouvert • Les contrôles Text • Les contrôles Button • Les contrôles Date/Time Picker • Les contrôles Clock Maîtriser Android 5 et Android 4 alphorm.com™© • Les contrôles List/Grid/Spinner
  • 112.
    La logique del’interface Les interfaces utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum La logique de l’interface graphique Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 113.
    Plan • Construire uneIHM en Java • Construire une IHM en XML • Construire une IHM en mixant XML et Java Maîtriser Android 5 et Android 4 alphorm.com™©
  • 114.
    Construire une IHMen Java • Les contrôles sont attachés à des ViewGroup, les « layouts » • Chaque « layout » a une orientation • Les ViewGroup sont eux-mêmes attachés en relation parent-enfants Maîtriser Android 5 et Android 4 alphorm.com™©
  • 115.
    Construire une IHMen XML • Utilisant les balises <LinearLayout/> Maîtriser Android 5 et Android 4 alphorm.com™©
  • 116.
    Construire une IHMen mixant Java et XML • La construction peut être faite en XML • Manipulation en Java • Importance des id Maîtriser Android 5 et Android 4 alphorm.com™©
  • 117.
    Ce qu’on acouvert • Construire une IHM en Java • Construire une IHM en XML • Construire une IHM en mixant XML et Java Maîtriser Android 5 et Android 4 alphorm.com™©
  • 118.
    La gestion desmenus Les interfaces utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum La gestion des menus Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 119.
    Plan • Les menusoptions • Les menus contextuels • Les menus popup Maîtriser Android 5 et Android 4 alphorm.com™©
  • 120.
    Les menus options •Ce sont les principaux menus d’une activité • Pour des actions ayant un impact global • Depuis Android 3.0, ils sont dans la barre d’action Maîtriser Android 5 et Android 4 alphorm.com™©
  • 121.
    Les menus contextuels •Un menu flottant qui apparaît suite à un long clic sur un élément • Depuis Android 3.0, il s’agit du mode d’action contextuel de préférence Maîtriser Android 5 et Android 4 alphorm.com™©
  • 122.
    Les menus popup •Une liste d’items qui correspondent à la vue Maîtriser Android 5 et Android 4 alphorm.com™©
  • 123.
    Ce qu’on acouvert • Les menus options • Les menus contextuels • Les menus popup Maîtriser Android 5 et Android 4 alphorm.com™©
  • 124.
    La variété des Lesinterfaces utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum La variété des LayoutManager Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 125.
    Plan • LinearLayout • TableLayout •RelativeLayout • FrameLayout Maîtriser Android 5 et Android 4 alphorm.com™© • GridLayout
  • 126.
    LinearLayout • Les enfantssont organisés verticalement ou horizontalement • La gravité est l’ancrage d’un côté • Le poids est le pourcentage de déformation Maîtriser Android 5 et Android 4 alphorm.com™©
  • 127.
    TableLayout • Extension deLinearLayout • Les enfants sont placés en lignes/colonnes Maîtriser Android 5 et Android 4 alphorm.com™©
  • 128.
    RelativeLayout • Les enfantssont rattachés relativement Au conteneur : android:layout_alignParentTop,… Aux voisins : android:toRightOf,… Maîtriser Android 5 et Android 4 alphorm.com™©
  • 129.
    FrameLayout • Plusieurs enfants,mais un seul visible • Utiliser setVisibility(…) pour faire afficher l’un ou l’autre Maîtriser Android 5 et Android 4 alphorm.com™©
  • 130.
    GridLayout • Positionne lesenfants en lignes/colonnes • Une cellule peut ne pas avoir de contrôle • Un contrôle peut s’étaler sur plusieurs lignes/colonnes Maîtriser Android 5 et Android 4 alphorm.com™©
  • 131.
    Ce qu’on acouvert • LinearLayout • TableLayout • RelativeLayout • FrameLayout Maîtriser Android 5 et Android 4 alphorm.com™© • GridLayout
  • 132.
    Les fragments Les interfacesutilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les fragments Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 133.
    Plan • Définition dufragment • Intérêt des fragments Maîtriser Android 5 et Android 4 alphorm.com™©
  • 134.
    Définition des fragments •Un fragment est une partie modulaire d’une activité • Un fragment a son propre cycle de vie • Le fragment peut être référencé dans un layout • Ou bien activé dynamiquement Maîtriser Android 5 et Android 4 alphorm.com™©
  • 135.
    Intérêt du fragment •Avec un fragment, on peut facilement s’adapter à des surfaces importantes Si la surface est faible, lancer une autre activité Si la surface est suffisante, faire apparaître le fragment • Le fragment peut être activé dynamiquement Maîtriser Android 5 et Android 4 alphorm.com™© • Le fragment peut être activé dynamiquement
  • 136.
    Exemple deux activités– deux fragments • 1 activité charge un fragment • La seconde activité charge … Maîtriser Android 5 et Android 4 alphorm.com™© • Le fragment (par exemple index) invoque une autre activité • Le second fragment, qui représente par exemple les détails
  • 137.
    Exemple une activité– deux fragments • 1 activité a les deux fragments dans son layout Maîtriser Android 5 et Android 4 alphorm.com™©
  • 138.
    Ce qu’on acouvert • Définition du fragment • Intérêt des fragments Maîtriser Android 5 et Android 4 alphorm.com™©
  • 139.
    Mettre en placedes tests Faire des tests Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Mettre en place des tests Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 140.
    Plan • Le rôleet l’intérêt des tests • Faire des tests manuels • Les frameworks de test Maîtriser Android 5 et Android 4 alphorm.com™©
  • 141.
    Le rôle etl’intérêt des tests • Vérifier que les composants fonctionnent comme attendu • Rassurer le développeur • Permettre d’avancer sur les fonctionnalités sans compromettre l’existant Maîtriser Android 5 et Android 4 alphorm.com™©
  • 142.
    Faire des testsmanuels • Simples à mettre en œuvre • Particulièrement pratique pour les tests d’ihm • Longs et fastidieux • Difficiles à systématiser Maîtriser Android 5 et Android 4 alphorm.com™© • Nécessite une intervention humaine
  • 143.
    Les frameworks detests • Propose des méthodes toutes prêtes Assertions • Propose une ihm pour visualiser tout de suite les problèmes • Permet d’automatiser des tests Maîtriser Android 5 et Android 4 alphorm.com™© • En Java, la référence est Junit • Les tests sont typiquement créés par Activité
  • 144.
    Ce qu’on acouvert • Le rôle et l’intérêt des tests • Faire des tests manuels • Les frameworks de test Maîtriser Android 5 et Android 4 alphorm.com™©
  • 145.
    Créer des testsunitaires Faire des tests Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Créer des tests unitaires Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 146.
    Plan • Les testsunitaires utilisant les frameworks • Règles de construction des tests • Exemple de tests Maîtriser Android 5 et Android 4 alphorm.com™©
  • 147.
    Les tests unitairesutilisant les frameworks • Pour les tests n’utilisant pas les composants Android, JUnit suffit • Les composants Android sont testés avec les extensions • Les classes de tests sont rangées dans des packages Java classiques Maîtriser Android 5 et Android 4 alphorm.com™©
  • 148.
    Règles de constructiondes tests • Une classe de test par classe à tester • Une méthode de test par test • Basée sur JUnit 3, les méthodes commencent par « test… » • Commencer par écrire des assertions Maîtriser Android 5 et Android 4 alphorm.com™© • Bâtir le test ensuite
  • 149.
    Exemple de testunitaire • Une classe Voyage Maîtriser Android 5 et Android 4 alphorm.com™©
  • 150.
    Ce qu’on acouvert • Les tests unitaires utilisant les frameworks • Règles de construction des tests • Exemple de tests Maîtriser Android 5 et Android 4 alphorm.com™©
  • 151.
    Tester l’interface Faire destests Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Tester l’interface graphique Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 152.
    Plan • Le frameworkd’instrumentation • Simuler l’interaction utilisateur Maîtriser Android 5 et Android 4 alphorm.com™©
  • 153.
    Le framework d’instrumentation •Hériter de classes dérivées de TestCase ActivityInstrumentationTestCase • Mettre en place un setUp • Tester les interactions sur l’ihm Maîtriser Android 5 et Android 4 alphorm.com™©
  • 154.
    Simuler les interactions •Récupérer les contrôles • Envoyer des événements • Attention à ce que l’application soit visible Maîtriser Android 5 et Android 4 alphorm.com™©
  • 155.
    Ce qu’on acouvert • Le framework d’instrumentation • Simuler l’interaction utilisateur Maîtriser Android 5 et Android 4 alphorm.com™©
  • 156.
    Tester avec lesmocks Faire des tests Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Tester avec les mocks Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 157.
    Plan • Les classesde android.test.mock • Utilisations des classes de Mock Maîtriser Android 5 et Android 4 alphorm.com™©
  • 158.
    Les classes deandroid.test.mock • MockApplication • MockContentProvider • MockContentResolver • MockContext Maîtriser Android 5 et Android 4 alphorm.com™© • MockCursor • MockDialogInterface • MockResources
  • 159.
    Utilisation des classesde Mock • Fournir une classe Pour compiler Faire fonctionner les services • Ne propose pas une implémentation réelle Permet d’avancer sur les tests Maîtriser Android 5 et Android 4 alphorm.com™© • Permet d’avancer sur les tests • Il suffit de redéfinir les méthodes qui le nécessitent
  • 160.
    Ce qu’on acouvert • Les classes de android.test.mock • Utilisations des classes de Mock Maîtriser Android 5 et Android 4 alphorm.com™©
  • 161.
    Le compte développeur Monétiserl’application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le compte développeur Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 162.
    Plan • Création ducompte développeur • La console du développeur Maîtriser Android 5 et Android 4 alphorm.com™©
  • 163.
    Création du comptedéveloppeur • Accéder au site : • Vérification par téléphone Maîtriser Android 5 et Android 4 alphorm.com™©
  • 164.
    Compte développeur • Contratà accepter • Réglement Maîtriser Android 5 et Android 4 alphorm.com™©
  • 165.
    La console dudéveloppeur • Via le site http://developer.android.com/distribute/index.html • Developer Console Maîtriser Android 5 et Android 4 alphorm.com™©
  • 166.
    La console • Listedes applications et statistiques Maîtriser Android 5 et Android 4 alphorm.com™©
  • 167.
    Ce qu’on acouvert • Création du compte développeur • La console du développeur Maîtriser Android 5 et Android 4 alphorm.com™©
  • 168.
    La préparation de Monétiserl’application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum La préparation de l’application Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 169.
    Plan • Gestion dufichier APK • Préparation de la fiche Google Play Maîtriser Android 5 et Android 4 alphorm.com™©
  • 170.
    Gestion du fichierAPK • Générer le APK et le signer • Télécharger le fichier Maîtriser Android 5 et Android 4 alphorm.com™©
  • 171.
    Préparation de lafiche Google Play • Fournir les infos de description de l’application • Les captures Maîtriser Android 5 et Android 4 alphorm.com™©
  • 172.
    Captures d’écrans • Parl’outil Monitor Maîtriser Android 5 et Android 4 alphorm.com™©
  • 173.
    Ce qu’on acouvert • Gestion du fichier APK • Préparation de la fiche Google Play Maîtriser Android 5 et Android 4 alphorm.com™©
  • 174.
    Gérer la publicité Monétiserl’application Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Gérer la publicité Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 175.
    Plan • Le compteAdMob • Créer une unité publicitaire • Installer le SDK Maîtriser Android 5 et Android 4 alphorm.com™©
  • 176.
    Le compte AdMob •Créer le compte , via le compte Google AdSense AdWords Maîtriser Android 5 et Android 4 alphorm.com™©
  • 177.
    Créer une unitépublicitaire • Sous le compte AdMob • Indiquer quelle application est concernée Maîtriser Android 5 et Android 4 alphorm.com™©
  • 178.
    Installer le SDK •Mettre en place la bibliothèque de service Google Play Ne pas oublier la balise meta-data • Déclarer une activité AdActivity • Autoriser les connexions réseau Maîtriser Android 5 et Android 4 alphorm.com™© • Puis créer un objet de type AdView dans votre ihm
  • 179.
    Ce qu’on acouvert • Le compte AdMob • Créer une unité publicitaire • Installer le SDK Maîtriser Android 5 et Android 4 alphorm.com™©
  • 180.
    Les préférences Stocker lesinformations Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Les préférences Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 181.
    Plan • La classeSharedPreferences • Positionner des valeurs • Lire les informations de préférence • Enregistrer une callback Maîtriser Android 5 et Android 4 alphorm.com™©
  • 182.
    La classe SharedPreferences •Fournit des services pour sauver et récupérer des paires clé-valeur de primitives et de chaînes • Pour obtenir un SharedPreferences, utiliser Soit getSharedPreferences() : chaque fichier est identifié Soit getPreferences() : un fichier unique pour l’activité Maîtriser Android 5 et Android 4 alphorm.com™© Soit getPreferences() : un fichier unique pour l’activité
  • 183.
    Positionner des valeurs •Utiliser la classe SharedPreferences.Editor pour positionner les valeurs • Méthodes pour positionner des valeurs : putBoolean(String,boolean), putFloat(String,float), putInt(String,int), putLong(String,long), putString(String,String), putStringSet(String,Set<String>) Maîtriser Android 5 et Android 4 alphorm.com™© • Méthodes pour supprimer : clear(), remove(String) • Méthodes pour appliquer les changements : apply(), commit()
  • 184.
    Lire les informationsde préférence • Sur la classe SharedPreferences getBoolean, getFloat, getInt, getLong, getString, getStringSet Paramètres : la clé et une valeur par défaut • Récupération de toutes les valeurs : getAll Obtenir un Editor (pour positionner des valeurs) : edit Maîtriser Android 5 et Android 4 alphorm.com™© • Obtenir un Editor (pour positionner des valeurs) : edit • Vérifier qu’une clé existe : contains • Enregistrer des callbacks : register….unregister
  • 185.
    Enregistrer une callback •Méthodes registerOnSharedPreferenceChangeListener(….), unregister… • Un listener doit être fourni, qui sera appelé lorsqu’une modification se produit sur les préférences • OnSharedPreferenceChangeListener est l’interface à implémenter Méthode onSharedPreferenceChanged(SharedPreference, String) Maîtriser Android 5 et Android 4 alphorm.com™© Méthode onSharedPreferenceChanged(SharedPreference, String)
  • 186.
    Ce qu’on acouvert • La classe SharedPreferences • Positionner des valeurs • Lire les informations de préférence • Enregistrer une callback Maîtriser Android 5 et Android 4 alphorm.com™©
  • 187.
    Le stockage interne Stockerles informations Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le stockage interne Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 188.
    Plan • La méthodeopenFileOutput • La méthode openFileInput • Les fichiers de cache Maîtriser Android 5 et Android 4 alphorm.com™©
  • 189.
    La méthode openFileOutput •Crée un fichier accessible uniquement de l’application • Le fichier sera détruit lors de la désinstallation • Les modes possibles sont Context.MODE_PRIVATE : création/remplacement Maîtriser Android 5 et Android 4 alphorm.com™© Context.MODE_APPEND : ajoute Context.MODE_WORLD_READABLE : lisible par les autres applications Context.MODE_WORLD_WRITABLE : inscriptible par les autres • Ecriture utilisant write • Fermeture du flux avec close
  • 190.
    La méthode openFileInput •Dans la classe Context • Retourne un FileInputStream • Demande le nom du fichier à ouvrir • Peut lever FileNotFoundException Maîtriser Android 5 et Android 4 alphorm.com™©
  • 191.
    Les fichiers decache • Obtenir le répertoire de cache avec getCacheDir() : File • Ouvrir et manipuler le fichier • Les fichiers en cache sont privés à l’application • Peuvent disparaître lorsque le système a besoin Maîtriser Android 5 et Android 4 alphorm.com™©
  • 192.
    Ce qu’on acouvert • La méthode openFileOutput • La méthode openFileInput • Les fichiers de cache Maîtriser Android 5 et Android 4 alphorm.com™©
  • 193.
    Le stockage externe Stockerles informations Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Le stockage externe Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 194.
    Plan • Définition • Miseen œuvre initiale • Créer un fichier et sauvegarder Maîtriser Android 5 et Android 4 alphorm.com™©
  • 195.
    Définition • Le stockageexterne consiste à stocker sur un support « externe » • Cela peut être réellement amovible, mais peut-être non • Permissions android.permission.READ/WRITE_EXTERNAL_STORAGE • Données sans protection, accessibles à d’autres applications Maîtriser Android 5 et Android 4 alphorm.com™©
  • 196.
    Mise en œuvreinitiale • Déclarer la permission • Vérifier la présence d’un stockage externe Maîtriser Android 5 et Android 4 alphorm.com™© Environment.getExternalStorageState() • Vérifier la possibilité d’y accéder en écriture Environment.MEDIA_MOUNTEDY • Vérifier la possibilité d’y accéder en lecture Environment.MEDIA_MOUNTED_READ_ONLY
  • 197.
    Créer un fichieret sauvegarder • Pour un usage privé, utiliser getExternalFilesDir() : File Possibilité de passer un paramètre • Pour un accès plus général, utiliser getExternalStoragePublicDirectory(..) Maîtriser Android 5 et Android 4 alphorm.com™©
  • 198.
    Ce qu’on acouvert • Définition • Mise en œuvre initiale • Créer un fichier et sauvegarder Maîtriser Android 5 et Android 4 alphorm.com™©
  • 199.
    La base SQLite Stockerles informations Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum La base SQLite Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 200.
    Plan • L’intérêt dela base de données • La création et la mise à jour du schéma • Ecrire et lire dans la base de données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 201.
    L’intérêt de labase de données • Un stockage structuré Tables, colonnes, typées • Des requêtes utilisant le langage SQL • Des volumes importants accessibles dans des temps raisonnables Maîtriser Android 5 et Android 4 alphorm.com™©
  • 202.
    La création etla mise à jour du schéma • Utiliser SQLiteOpenHelper • Sous classer cette classe, qui contient toute la mécanique • Redéfinir les méthodes permettant de créer et de mettre à jour Maîtriser Android 5 et Android 4 alphorm.com™©
  • 203.
    Ecrire et lire •Obtenir une SQLiteDatabase • Par appel de getWritableDatabase ou de getReadableDatabase • Executer du SQL : execSQL ou query • Récupération des données via un Cursor Maîtriser Android 5 et Android 4 alphorm.com™© • L’outil sqlite3 permet d’accéder à une base de données via un terminal
  • 204.
    Ce qu’on acouvert • L’intérêt de la base de données • La création et la mise à jour du schéma • Ecrire et lire dans la base de données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 205.
    Une interface pourles Stocker les informations Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Une interface pour les préférences Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 206.
    Plan • Un typed’activité dédié : PreferenceActivity • Les écrans de préférence Maîtriser Android 5 et Android 4 alphorm.com™©
  • 207.
    Un type d’activitédédié • Construire une activité dédiée aux préférences • Dériver l’activité de PreferenceActivity • Préparer les fragments correspondants à chaque catégorie de préférences • Le stockage est automatique, puis utiliser Maîtriser Android 5 et Android 4 alphorm.com™© • Le stockage est automatique, puis utiliser PreferenceManager.getDefaultSharedPreference() pour le relire
  • 208.
    Les écrans depréférence • Chaque catégorie de préférence correspond à un « PreferenceScreen » Maîtriser Android 5 et Android 4 alphorm.com™©
  • 209.
    Ce qu’on acouvert • Un type d’activité dédié : PreferenceActivity • Les écrans de préférence Maîtriser Android 5 et Android 4 alphorm.com™©
  • 210.
    Prendre des photos Gérerle multimédia Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Prendre des photos Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 211.
    Plan • L’accès àl’appareil photo • Récupérer l’image obtenue • Stocker l’image dans un fichier • Contrôler directement l’appareil photo Maîtriser Android 5 et Android 4 alphorm.com™©
  • 212.
    L’accès à l’appareilphoto • Penser à déclarer l’usage de l’appareil photo Requis ou non Maîtriser Android 5 et Android 4 alphorm.com™© • S’il n’est pas requis, il faudra tester la disponibilité de l’appareil photo
  • 213.
    Récupérer l’image obtenue •L’image peut-être récupérée sous la forme d’un bitmap Maîtriser Android 5 et Android 4 alphorm.com™©
  • 214.
    Stocker l’image dansun fichier • Une image stockée dans un fichier externe Créer le fichier (File) • Fournir une Uri l’Intent • putExtra(MediaStore.EXTRA_OUTPUT,Uri) Possible aussi de rajouter la photo dans la gallerie Maîtriser Android 5 et Android 4 alphorm.com™© • Possible aussi de rajouter la photo dans la gallerie
  • 215.
    Contrôler directement l’appareilphoto • Utiliser l’objet Camera, représentant l’appareil photo • L’appareil photo doit être ouvert en pensant au temps long La fermeture doit être envisagée aussi • Possible de gérer une pré-visualisation Maîtriser Android 5 et Android 4 alphorm.com™© • Le paramétrage de l’appareil photo est représenté par Camera.Parameters
  • 216.
    Ce qu’on acouvert • L’accès à l’appareil photo • Récupérer l’image obtenue • Stocker l’image dans un fichier • Contrôler directement l’appareil photo Maîtriser Android 5 et Android 4 alphorm.com™© Impossible d'afficher l'image. Votre ordinateur manque peut-être de mémoire pour ouvrir l'image ou l'image est endommagée. Redémarrez l'ordinateur, puis ouvrez à nouveau le fichier. Si le x rouge est toujours affiché, vous devrez peut-être supprimer l'image avant de la réinsérer.
  • 217.
    Enregistrer des vidéos Gérerle multimédia Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Enregistrer des vidéos Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 218.
    Plan • Les permissionsnécessaires • L’enregistrement d’une vidéo • Visualiser la vidéo Maîtriser Android 5 et Android 4 alphorm.com™©
  • 219.
    Les permissions nécessaires •Dans le manifest, <uses-feature> • Demander android.hardware.camera2 • Exigence ou non de la vidéo pour l’application Si non, tester sa présence avant Maîtriser Android 5 et Android 4 alphorm.com™©
  • 220.
    L’enregistrement d’une vidéo •Passer par une Intent • Le nom de l’intent est MediaStore.ACTION_VIDEO_CAPTURE • Lancer la vidéo Maîtriser Android 5 et Android 4 alphorm.com™©
  • 221.
    Visualiser la vidéo •Avec un contrôle VideoView • Accéder au résultat de l’Intent Maîtriser Android 5 et Android 4 alphorm.com™©
  • 222.
    Ce qu’on acouvert • Les permissions nécessaires • L’enregistrement d’une vidéo • Visualiser la vidéo Maîtriser Android 5 et Android 4 alphorm.com™©
  • 223.
    Imprimer des documents Gérerle multimédia Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Imprimer des documents Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 224.
    Plan • Les impressionssous Android • Imprimer une photo • Imprimer un document Maîtriser Android 5 et Android 4 alphorm.com™©
  • 225.
    Les impressions sousAndroid • Google Cloud Print Maîtriser Android 5 et Android 4 alphorm.com™© Impression dans Google Drive possible • Impression en PDF • Certaines imprimantes conncectées
  • 226.
    Imprimer une photo •Utiliser PrintHelper Positionner le layout avec setScaleMode Maîtriser Android 5 et Android 4 alphorm.com™©
  • 227.
    Imprimer un document •Créer sa propre sous-classe de PrintDocumentHelper et invoquer ce code Maîtriser Android 5 et Android 4 alphorm.com™©
  • 228.
    Imprimer un document •Le format du document est complètement défini dans votre classe héritant de PrintDocumentHelper Maîtriser Android 5 et Android 4 alphorm.com™© • Il faut implémenter 2 méthodes au moins La méthode onLayout, qui rend le nombre de pages La méthode onWrite, qui gère l’impression elle-même
  • 229.
    Ce qu’on acouvert • Les impressions sous Android • Imprimer une photo • Imprimer un document Maîtriser Android 5 et Android 4 alphorm.com™©
  • 230.
    Manipuler un document XMLet HTTP Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Manipuler un document XML Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 231.
    Plan • L’interface XmlPullParser •Exemple de code utilisant XmlPullParser Maîtriser Android 5 et Android 4 alphorm.com™©
  • 232.
    L’interface XmlPullParser • Permetle parcours d’un document XML • La méthode next() retourne l’événement rencontré La valeur XmlPullParser.END_DOCUMENT représente la fin du document • START_DOCUMENT / END_DOCUMENT Maîtriser Android 5 et Android 4 alphorm.com™© • START_TAG / END_TAG • TEXT • La méthode nextToken() est plus bas niveau
  • 233.
    Exemple de code •Parcours du document en réagissant sur les événements • Un buffer Maîtriser Android 5 et Android 4 alphorm.com™©
  • 234.
    Ce qu’on acouvert • L’interface XmlPullParser • Exemple de code utilisant XmlPullParser Maîtriser Android 5 et Android 4 alphorm.com™©
  • 235.
    Se connecter avecHTTP XML et HTTP Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Se connecter avec HTTP Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 236.
    Plan • Le clientHTTP • L’exécution asynchrone Maîtriser Android 5 et Android 4 alphorm.com™©
  • 237.
    Le client HTTP •Pour accéder au protocole HTTP • La classe HttpClient • Les requêtes sont représentées par des classes HttpGet, HttpPost, HttpPut… Maîtriser Android 5 et Android 4 alphorm.com™© • Ne pas oublier les permissions INTERNET
  • 238.
    L’exécution asynchrone • Nepas bloquer le thread ihm par l’attente de la réponse web • Utiliser AsyncTask<Paramètres, Progression, Resultat> Maîtriser Android 5 et Android 4 alphorm.com™©
  • 239.
    Ce qu’on acouvert • Le client HTTP • L’exécution asynchrone Maîtriser Android 5 et Android 4 alphorm.com™©
  • 240.
    Solliciter un WebService XMLet HTTP Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Solliciter un WebService RESTful Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 241.
    Plan • Définition desservices REST • Lire une entité Maîtriser Android 5 et Android 4 alphorm.com™©
  • 242.
    Définition des servicesREST • Les webservices sont soit basés sur SOAP, soient utilisent simplement le protocole HTTP • Une service RESTful utilise les commandes HTTP GET pour récupérer une ressource DELETE pour supprimer une ressource Maîtriser Android 5 et Android 4 alphorm.com™© DELETE pour supprimer une ressource POST pour créer une ressource PUT pour mettre à jour une ressource • Les URL sont choisies pour identifier les ressources
  • 243.
    Lire une entité •Un objet peut être reconstruit à partir des données récupérées Format XML Format JSON Maîtriser Android 5 et Android 4 alphorm.com™©
  • 244.
    Ce qu’on acouvert • Définition des services REST • Lire une entité Maîtriser Android 5 et Android 4 alphorm.com™©
  • 245.
    Récupérer les infosde Gérer les infos utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Récupérer les infos de contacts Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 246.
    Plan • Les permissions •La liste des contacts • Le chargement des données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 247.
    Les permissions • Modifierle manifest • Ajouter une balise pour accéder aux contacts Maîtriser Android 5 et Android 4 alphorm.com™©
  • 248.
    La liste descontacts • Une ListView dans le layout Maîtriser Android 5 et Android 4 alphorm.com™© • Connexion entre liste et curseur
  • 249.
    Le chargement desdonnées • Implémentation • Méthode de chargement Maîtriser Android 5 et Android 4 alphorm.com™©
  • 250.
    Ce qu’on acouvert • Les permissions • La liste des contacts • Le chargement des données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 251.
    Modifier les contactspar Gérer les infos utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Modifier les contacts par les Intents Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 252.
    Plan • Accéder auxcontacts via les Intents • Ajouter un contact dans la liste Maîtriser Android 5 et Android 4 alphorm.com™©
  • 253.
    Ajouter via lesIntents • Chercher l’application qui insère dans les contacts Maîtriser Android 5 et Android 4 alphorm.com™© • Possibilités de fournir des infos sur le contact en cours d’insertion
  • 254.
    Ajouter, Editer • Pourajouter, démarrer l’activité simplement après avoir fourni les informations • Pour éditer un contact spécifique, positionner setDataAndType(…) • En fournissant l’URI sur le contact préalablement sélectionné Maîtriser Android 5 et Android 4 alphorm.com™© • Il existe une action qui laisse le choix à l’utilisateur ACTION_INSERT_OR_EDIT Lancer l’intent correspondant
  • 255.
    Ce qu’on acouvert • Accéder aux contacts via les Intents • Ajouter un contact dans la liste Maîtriser Android 5 et Android 4 alphorm.com™©
  • 256.
    Utiliser les localisations Gérerles infos utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Utiliser les localisations Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 257.
    Plan • Les permissionset les installations • Créer un GoogleApiClient • Réagir sur les callbacks Maîtriser Android 5 et Android 4 alphorm.com™©
  • 258.
    Les permissions etles installations • Le plus simple est d’utiliser les services Google Installer par le DSK manager Déclarer dans le script Gradle Déclarer dans le manifest Maîtriser Android 5 et Android 4 alphorm.com™© • Permissions
  • 259.
    Créer un GoogleApiClient •GoogleApiClient est un point d’entrée dans les divers services google • Positionner lors de la création de cet objet les services attendus Maîtriser Android 5 et Android 4 alphorm.com™©
  • 260.
    Réagir sur lescallbacks • Lors de la connexion, les infos sont récupérées • La connexion doit être démarrée et arrêtée Maîtriser Android 5 et Android 4 alphorm.com™© • La callback exploite les données
  • 261.
    Ce qu’on acouvert • Les permissions et les installations • Créer un GoogleApiClient • Réagir sur les callbacks Maîtriser Android 5 et Android 4 alphorm.com™©
  • 262.
    Localisation et adresse Gérerles infos utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Localisation et adresse Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 263.
    Plan • Utilisation deGeocoder • Préparation d’un receveur • Lancement d’un service Maîtriser Android 5 et Android 4 alphorm.com™©
  • 264.
    Utilisation d’un Geocoder •Classe android.location.Geocoder • Récupère des noms de localisation à partir de coordonnées Maîtriser Android 5 et Android 4 alphorm.com™©
  • 265.
    Préparation d’un receveur •Un receveur est une classe dont les méthodes seront rappelées • Il faudra mettre à jour l’ihm dans le thread UI Maîtriser Android 5 et Android 4 alphorm.com™©
  • 266.
    Lancement d’un service •Un service fonctionne en arrière-plan Idéal pour la connexion à la récupération des noms d’adresses Maîtriser Android 5 et Android 4 alphorm.com™©
  • 267.
    Lancement d’un service •Utiliser startService(…) Maîtriser Android 5 et Android 4 alphorm.com™© • Déclarer le service dans le manifest
  • 268.
    Accéder au threadUI à partir d’un autre • Il est interdit de modifier l’ihm à partir d’un autre thread Maîtriser Android 5 et Android 4 alphorm.com™©
  • 269.
    Ce qu’on acouvert • Utilisation de Geocoder • Préparation d’un receiver • Lancement d’un service Maîtriser Android 5 et Android 4 alphorm.com™©
  • 270.
    Créer des notifications Androidwear Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Créer des notifications Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 271.
    Plan • Préparation pourdes notifications • Lancer une notification Maîtriser Android 5 et Android 4 alphorm.com™©
  • 272.
    Préparations pour desnotifications • Modifier le script Gradle • Rajouter la dépendance à la bibliothèque v4-support Maîtriser Android 5 et Android 4 alphorm.com™©
  • 273.
    Lancer une notification •Lancement de la notification à la fois sur l’appareil principal et la montre connectée Maîtriser Android 5 et Android 4 alphorm.com™©
  • 274.
    Ce qu’on acouvert • Préparation pour des notifications • Lancer une notification Maîtriser Android 5 et Android 4 alphorm.com™©
  • 275.
    Créer une application Androidwear Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Créer une application wearable Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 276.
    Plan • Prérequis • Exécutiondans un AVD spécifique Maîtriser Android 5 et Android 4 alphorm.com™©
  • 277.
    Prérequis • Une applicationwearable tourne sur l’appareil connecté, mais indépendamment du mobile • Mais il faut une application mobile pour installer l’application wearable sur la montre connectée • Mises à jour nécessaires Maîtriser Android 5 et Android 4 alphorm.com™© Les SDK Tools ne version 23 mini SDK Android mini API20 • Un AVD Wear • Créer un projet Mobile+Wear, soit 2 activités
  • 278.
    Exécution dans unAVD spécifique • Dans un AVD adapté • Lancement de l’activité par défaut • Description du layout très semblable aux applications mobiles Maîtriser Android 5 et Android 4 alphorm.com™©
  • 279.
    Ce qu’on acouvert • Prérequis • Exécution dans un AVD spécifique Maîtriser Android 5 et Android 4 alphorm.com™©
  • 280.
    Echanger des données Androidwear Maîtriser Android 5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Echanger des données Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 281.
    Plan • Le clientGoogleAPI • Réceptionner des données • Emettre des données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 282.
    Le client GoogleAPI •Créer un client GoogleAPI • Api Wearable • Possibilité d’échanger des données • Ou simplement un message Maîtriser Android 5 et Android 4 alphorm.com™©
  • 283.
    Réceptionner les données •Soit faire un service qui gère la réception • Soit créer une classe implémentant DataListener Maîtriser Android 5 et Android 4 alphorm.com™©
  • 284.
    Emettre des données •Construire une map clé/valeur • Emettre les données avec DataApi • Ou bien un message avec MessageApi Maîtriser Android 5 et Android 4 alphorm.com™©
  • 285.
    Ce qu’on acouvert • Le client GoogleAPI • Réceptionner des données • Emettre des données Maîtriser Android 5 et Android 4 alphorm.com™©
  • 286.
    Android 5 Conclusion Maîtriser Android5 et Android 4 alphorm.com™© Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum Android 5 Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels
  • 287.
    Plan • Généralités • Utiliserl’environnement • Réaliser une application • Les interfaces utilisateur • Stocker les informations • Gérer le multimédia • XML et HTTP • Gérer les infos utilisateur Maîtriser Android 5 et Android 4 alphorm.com™© • Faire des tests • Monétiser l’application • Android Wear
  • 288.
    Pour continuer … •La formation Android avancée Les interactions client-serveur Mise en œuvre détaillée de Android Wear Mise en œuvre des services Google … Maîtriser Android 5 et Android 4 alphorm.com™© …
  • 289.
    Merci d’avoir suivicette formation, Maîtriser Android 5 et Android 4 alphorm.com™© rendez-vous pour la suite !