Uploaded by Youssef Fadili

Programmation mobile Android

advertisement
Programmation
mobile sous
Android
INSEA- 2018/2019
Chaimae ANIBOU
Mohamed Nabil SAIDI
Plan
1. Plate forme et environnement de
développement
2. Première application Android
3. Interfaces graphiques
4. Communication entre les applications
5. Persistance des données
6. Programmation concurrente & Connectivité
7. Services web
2
Application mobile (Caractéristiques)
•
Cible : appareil électronique mobile (smartphone, tablette, etc.)
•
Contexte logiciel :
•
o
non connecté : agenda, baladeur, . . .
o
localisé : navigation GPS, travaux géolocalisés
o
connecté : tout Internet … avec un contexte mobile !
Contexte matériel :
o
ressources plus faibles : CPU / RAM / DD / ROM
o
la consommation des ressources doit être minimale
o
GUI adaptée
3
Application mobile (Principaux OS)
•
Android (Google) : Linux
•
BlackBerry OS, QNX : Unix
•
iOS (Apple) noyau hybride XNU : Mach(libre) + BSD (Unix)
•
Ubuntu Touch (Canonical) : Linux
•
Windows Phone, Windows 8 (Microsoft)
•
Tizen (Linux Foundation), supporté par Samsung / Intel
•
Firefox OS (Mozilla Corporation) : Linux
•
Arrêtés : HP webOS (Linux), Symbian_OS (Nokia), etc.
4
OS/smartphone dans le monde
5
Android (Origine)
•
Initialement un OS pour appareil photo
•
Acheté par Google en 2005
•
Objectif du rachat : créer une plateforme mobile
o Flexible,
o Accessible à tous les intégrateurs et développeurs,
o Profiter de la convergence web / mobile.
Android : système complet, ouvert et gratuit dans le monde du
6
mobile
Stratégie Google
•
Concept OpenSource
Plateforme mobile ouverte
Plus de revenus
Plus
d’utilisateurs
•
•
Plus de
développeurs
Android Market / Google Checkout
Publicité mobile
7
Android pour qui ?
•
•
•
•
Constructeurs de matériels (téléphones, GPS, netbook, ebook,
lecteur multimédia, bornes internet...),
Opérateurs,
Éditeurs de solutions logicielles.
Points forts:
o Constructeurs :
 Open Source, pas de coût de licence, Adaptabilité.
o Développeurs :
 Langage Java, Modularité, Kit de développement gratuit,
SDK complet, Android Market.
o Utilisateurs :
 Multitâches, Nouvelles applications, Nombreuses
applications par défaut.
8
Historique des versions d’Android
Code Name
API Level
Version
Date
Android
1
1.0
09/2008
Petit Four
2
1.1
02/2009
Cupcake
3
1.5
04/2009
…
…
…
…
Oreo
28
8.0
08/2017
9
Architecture d’Android
•
Une architecture autour du noyau Linux
•
Android est conçue pour des appareils mobiles au sens large
(téléphones, tablettes, ordinateurs portables, TV, des
baladeurs…)
•
La plate-forme Android est composée de différentes couches :
o
o
o
o
o
un noyau Linux qui lui confère notamment des
caractéristiques multitâches ;
des bibliothèques graphiques, multimédias ;
une machine virtuelle Java adaptée : la Dalvik Virtual
Machine ;
un framework applicatif proposant des fonctionnalités de
gestion de fenêtres, de téléphonie, de gestion de
contenu...
des applications, dont un navigateur web, une gestion
10
des contacts, un calendrier…
Composants d’Android
11
Composant : Noyau Linux
•
Couche basse de la plateforme pour la gestion des services du
système
•
o Gestion de la mémoire
o Gestion des processus
o Pilotes matériels
o Gestion réseau
o Sécurité
Première abstraction entre matériel et couche applicative
•
Gestion du Power Management
•
Binder pour faciliter la communication inter processus
12
Composant : Librairies natives
•
Librairie système C : libc
o
•
Dérivée de BSD (UNIX - Berkeley Software
Distribution) optimisée pour les systèmes embarqués
o rapides
Stockage, Rendu graphique, multimédia
o
•
SQLite : un SGBD simple et puissant accessible pour
toutes les
o API Média basée sur OpenCore de PacketVidéo (mpeg4,
o SGL/OpenGL ES, librairies 2D et 3D
o LibWebCore (moteur de navigation web utilisé)
Gestionnaire de surfaces (Surface Manager) : Pour créer des
interfaces visuelles
13
Composant : Framework Applicatif
•
Architecture conçue pour faciliter la réutilisation
•
Il fournit des API permettant aux développeurs de créer des
applications riches.
•
Chaque application est basée sur des services et systèmes :
o
o
o
o
o
Gestionnaire d’activités (Activity Manager) : gère le
cycle de vie des applis et l'enchaînement des vues
Gestionnaire des ressources (Ressources Manager) :
accès aux ressources statiques (images, fichiers, …)
Gestionnaire de fenêtres (Window Manager) : gère
les fenêtres des applications; quelle fenêtre doit être
afficher devant une autre à l'écran.
Mécanisme des vues (View System) : fournit tous les
composants graphiques.
…
14
Composant : Android Runtime
•
•
DALVIK Virtual Machine (avant Lollipop)
o Dalvik : ville en islande
o VM optimisée pour les systèmes embarqués
o VM à registres avec un jeu important d'instructions
o Conversion du bytecode : .class → .dex
o Exécute un fichier .dex généré par dx tool
o Une instance par processus
Un compilateur (ART) de bytecode vers le natif Android
Runtime (à partir de Lollipop).
15
Architecture Android
•
Android est conçu par des développeurs pour des
développeurs.
•
Android nécessite aucune certification pour devenir
développeur.
•
Avec Android, on peut distribuer et monétiser des
applications.
•
Puissant et intuitif, Android facilite le développement mobile.
•
Ouvert, un SDK simple et puissant. L’absence de coût de
licence attire plus de développeur.
•
Facilité d’accès au matériel de bas niveau avec une série
d’API.
•
Android fonctionne sur plusieurs marques de Smartphones.
16
Android et JAVA
•
Android ressemble à JAVA mais l’en est pas. Les applications
sont écrites par JAVA mais ne sont pas interprétés par la
machine virtuelle Java ME.
•
Les applications Java ne fonctionnent pas nativement sous
Android.
•
Les applications Android sont exécutées par une machine
virtuelle spécifique Dalvik (ART) et non par une JVM
classique.
•
Android inclus une implémentation Open source spécifique de
java basée non pas sur OpenJdk, mais sur le projet Harmony
(implémentation java 5 de la fondation apache).
•
Google a adapté Harmony et supprimé certains packages non
nécessaires en environnement mobile.
17
Android et JAVA
18
Créer une application Android
•
Connaissances Techniques
o
•
Android (runtime + framework) → POO + Java
Outils logiciels
o
Java Runtime Environment (JRE) pour exécuter les
outils Android
o
Android SDK
o
Android Virtual Device Manager (AVD), contenu dans
le Android SDK
o
un éditeur de texte
19
Android SDK
•
Le kit de développement Android (SDK) fournit
l’environnement de travail pour développer, tester et déboguer
des applications Android.
•
Dans le SDK on trouve:
o
Composés de bibliothèques d’API Android, les API
Android qui sont le cœur du SDK.
o
Des outils de développement qui permettent de compiler et
déboguer vos applications.
o
Le Virtual Device Manager et l’Emulateur qui fournit un
meilleur environnement de test.
o
Des exemples de code et un support en ligne.
20
Développer sous Android
•
Application Android, en pratique on utilise deux solutions :
o
Android SDK + Eclipse
o
Android Studio
https://developer.android.com/studio/index.html
21
Android Studio
22
Lancement et configuration
23
SDK Manager (Tools > Android)
•
Gère les versions du SDK d’Android installés
•
Gère les images des virtuals devices
o
Pour ARM, pour INTEL, pour chaque version d’Android
•
Gère les sources des différents SDK
•
Gère les sources des exemples
24
Création Projet
25
Choix version cible
26
Ajout d’une Activity
27
Configuration de l’Activity
28
Arborescence du projet
29
Arborescence du projet
Ressources JAVA
30
Arborescence du projet
Ressources images
31
Arborescence du projet
Interface Homme/Machine
pour l’interaction (interface
graphique) en XML.
32
Arborescence du projet
chaines de caractères et
dimensions
33
Palette de création
34
Palette de création
35
Android Virtual Devices
36
Android Virtual Devices
37
Android Virtual Devices
38
Émulateur Android
39
Première Application
My Application
Hello World!
40
Les applications Android
41
Structure d'une application Android
Une application Android est composée de deux
parties :
•
Une série de fichier XML décrivant
o l'application (version de l'API utilisée, activité
principale, etc.)
o les ressources (texte, image, layout, etc.)
•
du code Java pour spécifier la partie dynamique de
l'application
Les fichiers XML sont plus ou moins obligatoire
42
Structure d'un projet
• AndroidManifest.xml : décrit
les propriétés de l’application
• java/ : contient les fichiers
source
• res/ : contient les ressources
(images, descriptions d’interfaces,
valeurs) . Organisé en sous
dossiers par types (drawable,
layout, mipmap, values, …)
• Gradle Scripts : Scripts de
compilation
43
Application Android : Composition
44
Application Android : Fichier de configuration
C’est un fichier indispensable à chaque application
qui décrit entre autres :
•
Le point d’entrée de votre application (quel code doit
être exécuté au démarrage de l’application);
•
Quels composants constituent ce programme ;
•
Les permissions nécessaires à l’exécution du
programme (accès à Internet, accès à l’appareil
photo...).
45
Exemple : AndroidManifest.xml
46
Application Android : Les vues
Définition
Les éléments de l’interface graphique que l’utilisateur voit
et sur lesquels il pourra agir.
Les vues contiennent des composants, organisés
selon diverses mises en page :
•
•
•
les uns à la suite des autres,
en grille,
…
47
Application Android : Les contrôles
Définition
Les contrôles sont eux-mêmes un sous-ensemble
des vues :
• boutons,
• champs de saisie,
• case à cocher,
• …
Ils ont besoin d’accéder aux textes et aux images qu’ils
affichent (par exemple un bouton représentant un téléphone
aura besoin de l’image du téléphone correspondante). Ces
textes et ces images seront puisés dans les fichiers
ressources de l’application.
48
Les activités
49
Développer une application Android
•
Contrairement à une application classique, une
application Android est découpé en écran
o Chaque écran est géré par une activité (Activity)
o Une activité est une classe qui hérite de Activity
ou d’une classe dérivée de Activity
o Aucune méthode main dans un programme
Android
•
Le système Android contrôle les activités, pas le
développeur
o Le code d'une activité réagit à des évènements du
système Android
50
État d'une activité
•
Une seule activité visible à l'écran au premier plan
•
Une activité peut se trouver dans 3 états qui se différencient
surtout par leur visibilité :
o Active (resumed) : elle est visible en totalité.
o Suspendue (paused) : elle est partiellement visible à
l'écran (c'est le cas quand vous recevez un SMS).
o Arrêtée (stopped) : elle est tout simplement oblitérée par
une autre activité, on ne peut plus la voir du tout.
•
Passage de l'état visible à invisible :
o En lançant une nouvelle activité masquant l'activité
courante
51
o En détruisant l'activité courante (finish(), bouton "retour")
Cycle de vie d'une activité
L'activité réagie au demande du système Android (qui lui
même réagi au demande de l'utilisateur)
52
Activity.onXXX()
Les méthodes appelées lors des changements d'état :
• onCreate(Bundle savedInstanceState) : appelée à la création. Le
paramètre permet de récupérer un état sauvegardé lors de l'arrêt de
l'activité (si on a fait une sauvegarde)
• onStart() : appelée quand l'activité démarre
• onRestart() : appelée quand l'activité redémarre
• onResume() : appelée quand l'activité vient en premier plan
• onPause() : appelée quand l'activité n'est plus en premier plan
• onStop() : appelée quand l'activité n'est plus visible
• onDestroy() : appelée quand l'activité se termine
On redéfinie les méthodes que l'on veut et on oublie pas d'appeler en
premier super.onXXX()
53
Les Ressources
54
Répertoires des ressources
Le répertoire res/ contient toutes les ressources qui seront mises
dans le fichier application (apk). Il est constitué de sous répertoires :
• drawable (images)
• layout (description en XML des interfaces)
• values (définitions en XML de constantes (avec i18n) : string,
color, dim, style…)
• anim (description en XML d’animations)
• menus (description en XML de menus pour l’application)
• xml (fichiers XML utilisés directement par l’application)
• raw (tous les autres types de ressources : sons, vidéos, …)
• …
On peut ajouter d’autres sous répertoires
55
Exemple : internationalization (i18n)
56
La classe R
• C’est une classe générée par Android Studio qui permet à
l’application d’accéder aux ressources
• Elle contient des classes internes dont les noms correspondent
aux types de ressources (id, drawable, layout …)
• Elle est constituée à partir des fichiers placés dans les sous
répertoires du répertoire res/
• Une propriété est créée pour :
o
o
o
Chaque image placé dans drawable
Chaque identificateur défini dans des fichiers XML (objets
d’interface, constantes)
Chaque fichier placé dans les répertoires xml , raw …
57
Référence aux resources
58
Les composants graphiques
59
Vues et gabarits
Les éléments graphiques héritent de la classe View. On peut regrouper des
éléments graphiques dans une ViewGroup. Des ViewGroup particuliers
sont prédéfinis: ce sont des gabarits (layout) qui proposent une
prédispositions des objets graphiques:
• LinearLayout : dispose les éléments de gauche à droite ou du haut
vers le bas
• RelativeLayout : les éléments enfants sont placés les uns par rapport
aux autres
• TableLayout : disposition matricielle
• FrameLayout : disposition en haut à gauche en empilant les éléments
• GridLayout : disposition matricielle avec N colonnes et un nombre
infini de lignes
Les déclarations se font principalement en XML, ce qui évite de passer par
les instanciations Java.
60
Attributs des gabarits
Les attributs des gabarits permettent de spécifier des attributs
supplémentaires. Les plus importants sont:
• android:layout_width et android:layout_height :
o ="match_parent" : l'élément remplit tout l'élément parent
o ="wrap_content" : prend la place minimum nécessaire à
l'affichage
o ="fill_parent" : comme match_parent (deprecated, API<8)
• android:orientation : définit l'orientation d'empilement
• android:gravity : définit l'alignement des éléments
61
Exemple : LinearLayout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:id="@+id/accueilid"
>
</LinearLayout>
62
Exemples : ViewGroup
Un ViewGroup contient des éléments graphiques. Pour
construire un gabarit linéaire on fera :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:id="@+id/accueilid"
>
<TextView
android:id="@+id/le_texte" android:text="@string/hello"
/>
<TextView
android:id="@+id/le_texte2" android:text="@string/hello2"
/>
63
</LinearLayout>
View en Java
64
View basique
65
EditText
66
Download