Développement Android Jean-Francois Lalande - November 2016 - Version 2.5 Le bu
Développement Android Jean-Francois Lalande - November 2016 - Version 2.5 Le but de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur smartphone. Les grandes notions abordées dans ce cours sont: • Bâtir l'interface d'une application • Naviguer et faire communiquer des applications • Manipuler des données (préférences, fichiers, ...) • Services, threads et programmation concurrente • Les capteurs, le réseau • La sécurité dans Android • Android Wear Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage à l'Identique 3.0 non transposé. 1 Plan du module Plan du module 1 Plan du module 2 1.1 Ressources 3 2 Le SDK Android 4 2.1 Introduction 4 2.2 Android 5 2.3 Les ressources 7 2.4 Les activités 9 3 Interfaces graphiques 11 3.1 Vues et gabarits 12 3.2 Inclusions de gabarits 15 3.3 Positionnement avancé 16 3.4 Les listes 17 3.5 Les Fragments 20 3.6 Action bar 26 3.7 Animations et helpers 27 4 Les Intents 31 4.1 Principe des Intents 31 4.2 Intents pour une nouvelle activité 31 4.3 Ajouter des informations 33 4.4 Types d'Intent: actions 33 4.5 Broadcaster des informations 34 4.6 Recevoir et filtrer les Intents 34 5 Persistance des données 38 5.1 Différentes persistances 38 5.2 Préférences partagées 38 5.3 Les fichiers 41 5.4 BDD SQLite 41 5.5 XML 42 6 Programmation concurrente 44 6.1 Composants d'une application 44 6.2 Processus 45 6.3 Threads 45 6.4 Services 46 6.5 Tâches concurrentes 48 6.6 Bilan: processus et threads 51 6.7 Coopération service/activité 52 6.8 Etude de cas 54 7 Connectivité 57 1 Plan du module INSA Centre Val de Loire Développement Android - J.-F. Lalande 2 / 99 7.1 Téléphonie 57 7.2 Réseau 58 7.3 Bluetooth 59 7.4 Localisation 60 7.5 Capteurs 62 7.6 Caméra 64 7.7 Secure element et NFC 64 8 Développement client serveur 66 8.1 Architectures 66 8.2 Applications Natives 67 8.3 Applications Hybrides 67 8.4 Architectures REST 68 9 Android Wear 71 9.1 Philosophie 71 9.2 UI Design 72 9.3 Faire communiquer Handheld et Wearable 78 9.4 Watchfaces 81 10 Google Cloud Messaging 82 10.1 GCM: Google Cloud Messaging 82 10.2 Etape 1: Developer Console 82 10.3 Etape 2: créer un serveur de démo 84 10.4 Etape 3: développer l'application 84 11 Divers 90 11.1 Librairies natives: JNI 90 12 Annexes: outils 93 12.1 Outils à télécharger 93 12.2 L'émulateur Android 93 12.3 ADB: Android Debug Bridge 94 12.4 Simuler des sensors 95 12.5 HierarchyViewer 96 1.1 Ressources Les ressources de ce cours sont disponibles en ligne à l'adresse: http://www.univ-orleans.fr/lifo/Members/Jean-Francois.Lalande/teaching.html. On y trouve deux versions du même contenu: • Slides du cours • Support de cours 1.1 Ressources INSA Centre Val de Loire Développement Android - J.-F. Lalande 3 / 99 2 Le SDK Android 2.1 Introduction 4 Historique des versions 4 2.2 Android 5 L'Operating System 5 Dalvik et ART 5 Le plugin de développement d'Eclipse: ADT 6 Les éléments d'une application 6 Le Manifest de l'application 6 2.3 Les ressources 7 Les chaines 7 Internationalisation 8 Autres valeurs simples 8 Autres ressources 9 2.4 Les activités 9 Cycle de vie d'une activité 9 Sauvegarde des interfaces d'activité 9 Démonstration 10 2.1 Introduction Il est important de prendre la mesure des choses. A l'heure actuelle (November 2016): • juillet 2011: 550 000 activations par jour • décembre 2011: 700 000 activations par jour • sept. 2012: 1.3 millions d'activations par jour (Wikipedia) • avril 2013: 1.5 millions d'activations par jour (Wikipedia) Il y aurait donc un parc de 400 millions d'appareils Android. Vous pouvez visionner de la propagande ici et là. Historique des versions Le nombre de release est impressionnant (Version): Nom Version Date Android 1.0 09/2008 Petit Four 1.1 02/2009 Cupcake 1.5 04/2009 Donut 1.6 09/2009 Gingerbread 2.3 12/2010 Honeycomb 3.0 02/2011 Ice Cream Sandwich 4.0.1 10/2011 Jelly Bean 4.1 07/2012 KitKat 4.4 10/2013 Lollipop 5.0 10/2014 2 Le SDK Android INSA Centre Val de Loire Développement Android - J.-F. Lalande 4 / 99 Marshmallow 6.0 05/2015 Nougat 7.0 09/2016 CC BY - Google Inc. 2.2 Android L'ecosystème d'Android s'appuie sur deux piliers: • le langage Java • le SDK qui permet d'avoir un environnement de développement facilitant la tâche du développeur Le kit de développement donne accès à des exemples, de la documentation mais surtout à l'API de programmation du système et à un émulateur pour tester ses applications. Stratégiquement, Google utilise la licence Apache pour Android ce qui permet la redistribution du code sous forme libre ou non et d'en faire un usage commercial. Le plugin Android Development Tool permet d'intégrer les fonctionnalités du SDK à Eclipse. Il faut l'installer comme un plugin classique en précisant l'URL du plugin. Ensuite, il faut renseigner l'emplacement du SDK (préalablement téléchargé et décompressé) dans les préférences du plugin ADT. L'Operating System Android est en fait un système de la famille des Linux, pour une fois sans les outils GNU. L'OS s'appuie sur: • un noyau Linux (et ses drivers) • un couche d'abstraction pour l'accès aux capteurs (HAL) • une machine virtuelle: Dalvik Virtual Machine (avant Lollipop) • un compilateur de bytecode vers le natif Android Runtime (pour Lollipop) • des applications (navigateur, gestion des contacts, application de téléphonie...) • des bibliothèques (SSL, SQLite, OpenGL ES, etc...) • des API d'accès aux services Google Anatomie d'un déploiement: Dalvik et ART 2.2 Android INSA Centre Val de Loire Développement Android - J.-F. Lalande 5 / 99 [Dalvik] est le nom de la machine virtuelle open-source utilisée sur les systèmes Android. Cette machine virtuelle exécute des fichiers .dex, plus ramassés que les .class classiques. Ce format évite par exemple la duplication des String constantes. La machine virtuelle utilise elle-même moins d'espace mémoire et l'adressage des constantes se fait par un pointeur de 32 bits. [Dalvik] n'est pas compatible avec une JVM du type Java SE ou même Java ME. La librairie d'accès est donc redéfinie entièrement par Google. A partir de Lollipop, Android dispose d'ART qui compile l'application au moment du déploiement (Ahead-of-time compilation). Le plugin de développement d'Eclipse: ADT Un projet basé sur le plugin ADT est décomposé de la manière suivante: • src/: les sources Java du projet • libs/: bibliothèques tierces • res/: • res/drawable: ressources images • res/layout: description des IHMs en XML • res/values: chaines de caractères et dimensions • gen/: les ressources auto générées par ADT • assets/: ressources brutes (raw bytes) • bin/: • bin/classes: les classes compilées en .class • bin/classes.dex: exécutable pour la JVM Dalvik • bin/myapp.zip: les ressources de l'application • bin/myapp.apk: application empaquetée avec ses ressource et prête pour le déploiement Les éléments d'une application Une application Android peut être composée des éléments suivants: • des activités (android.app.Activity): il s'agit d'une partie de l'application présentant une vue à l'utilisateur • des services (android.app.Service): il s'agit d'une activité tâche de fond sans vue associée • des fournisseurs de contenus (android.content.ContentProvider): permet le partage d'informations au sein ou entre applications • des widgets (android.appwidget.*): une vue accrochée au Bureau d'Android • des Intents (android.content.Intent): permet d'envoyer un message pour un composant externe sans le nommer explicitement • des récepteurs d'Intents (android.content.BroadcastReceiver): permet de déclarer être capable de répondre à des Intents • des notifications (android.app.Notifications): permet de notifier l'utilisateur de la survenue d'événements Le Manifest de l'application Le fichier AndroidManifest.xml déclare l'ensemble des éléments de l'application. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="andro.jf" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> 2.2 Android INSA Centre Val de Loire Développement Android - J.-F. Lalande 6 / 99 <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service>...</service> <receiver>...</receiver> <provider>...</provider> </application> </manifest> 2.3 Les ressources Les ressources de l'applications sont utilisées dans le code au travers de la classe statique R. ADT re-génère automatiquement la classe statique R à chaque changement dans le projet. Toutes les ressources sont accessibles au travers de R, dés qu'elles sont déclarées dans le fichier XML ou que le fichier associé est déposé dans le répertoire adéquat. Les ressources sont utilisées de la manière suivante: android.R.type_ressource.nom_ressource qui est de type int. Il s'agit en fait de l'identifiant de la ressource. On peut alors utiliser cet identifiant ou récupérer l'instance de la ressource en utilisant la classe Resources: Resources res = getResources(); String hw = res.getString(R.string.hello); XXX o = res.getXXX(id); Une méthode spécifique pour les objets graphiques permet de les récupérer à partir de leur id, ce qui permet d'agir sur ces instances même si elles ont été créées via leur définition XML: TextView texte = (TextView)findViewById(R.id.le_texte); texte.setText("Here we go !"); Les chaines Les chaines constantes de l'application sont situées dans res/values/strings.xml. L'externalisation des chaines permettra de réaliser l'internationalisation de l'application. Voici un exemple: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello Hello JFL !</string> <string name="app_name">AndroJF</string> </resources> La récupération de la chaine se fait via le code: Resources res = getResources(); String hw = res.getString(R.string.hello); 2.3 Les ressources INSA Centre Val de Loire Développement Android - J.-F. Lalande 7 uploads/Litterature/ cours-android-pdf.pdf
Documents similaires










-
36
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jul 16, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 3.9276MB