2. Android ?
• Android est un système d’exploitation de la
famille Linux pour smartphone racheté par
Google en 2007.
• Plus de 30 société y participent (google, intel,
motorola …) www.openaliance.com
• Plusieurs types d’appareilles.
• Permettre aux développeurs de bénéficier de
tout ce qu’un appareil lui offre. (envoyer des
email appel telephonique, utiliser le bleutooth, la
camera, le GPS)
2
3. Android ?
• Open source. Alors il peut intégré des
nouvelles technologies dès leurs sorties.
• Basé sur le noyaux linux et possède une
machine virtuelle personnalisé conçue pour
optimisé la mémoire et les ressources.
3
5. Android ?
Android est défini comme étant une pile de logiciels.
Constitué de 5 couches :
1) Le noyau Linux avec les pilotes ;
2) Des bibliothèques logicielles telles que WebKit, OpenGL,
SQLite ou FreeType ;
3) Une machine virtuelle et des bibliothèques permettant
d'exécuter des programmes prévus pour la plate-forme
Java ;
4) Un framework - kit de développement d'applications ;
5) Un lot d'applications standard parmi lesquelles il y a un
environnement de bureau, un carnet d'adresses, un
navigateur web et un téléphone.
5
6. Android ?
• Utilsé sur différents appareils :
– SmartPhones.
– Montres.
– Téléviseurs.
– Automobiles.
• Les applications sont publiées sur Google
Play.
6
7. Application Android
• Une application Android est composée d’un
ensemble de 4 éléments qui interagissent
entre eux.
• Ces éléments sont :
1- Activité
2 -Service
3 - Broadcast Reciever
4 - Content Provider
7
8. 1- Activité Android
• Généralement les fenêtres sont appelées
activités.
• Même interface graphique = même activité.
• Une seule activité par écran.
• L’activité contient des informations sur l'état
actuel de l'application = CONTEXT
• Une activité = interface graphique + contexte.
8
9. Etat de l’activité
• A tout moment une activité doit laisser ca
place pour une autre application qui a une
priorité plus haute.
• Si l’activité utilise trop de ressources système,
Android l’arrêtera.
• Quand une application ce lance elle ce met en
haut de la pile d’activités.
9
12. 1- Activité
• Dans «Java» chaque activité est une classe qui étend par
héritage la classe «Activity».
• Lors du démarrage d’une activité, 3 méthodes sont
appelées automatiquement : « onCreate», «onStart» et
«onResume».
• Lorsque l’on quitte l’activité, 3 méthodes sont appelées
automatiquement:«onPause», «onStop» et «onDestroy».
• Ces méthodes sont définies dans la classe «Activity» et
devront être redéfinies si c'est nécessaire.
12
13. 1- Activité
• L’ensemble du code «Java» est généralement
écrit dans la méthode «onCreate».
• La sauvegarde des données importantes quant
à elle est effectuée dans la méthode
«onPause».
13
14. 1- Activité
• État «start»: quand l’activité n’est pas
encore référencée en mémoire, elle est
dans un état «start».
• État «Resume» / «Running»: une activité
qui a le focus, est dans un état «Running»
à un instant «t». Cette activité se trouve
au sommet de la pile.
14
15. 1- Activité
• État «Pause»: une activité qui n’a pas le focus
(donc n’interagit pas avec l’utilisateur) mais
reste visible à l’écran, est dans un état
«Pause».
• État «Stopped»: une activité qui n’est pas
visible à l’écran mais existe quand même en
mémoire, est dans un état «Stopped».
• État «Destroyed»: quand l’activité n’est plus
en mémoire, elle est détruite. Ce phénomène
arrive, car le gestionnaire d’activités décide
qu’une telle activité n’est plus utilisée.
15
16. 2 - Service
• Un service est une composante qui fonctionne en arrière-
plan (tâche de fond). (jouer de la musique, accéder à un
réseau, position GPS, …)
• Un service n’est pas un composant graphique.
• Ce fonctionnement lui permet de réaliser une tâche d’une
très longue durée sans une interaction avec l’utilisateur :
écouter de la musique en arrière-plan, sauvegarder des
données sur le réseau.
• Un service s’exécutant en arrière-plan est prioritaire qu’une
application exécutée dans le même plan.
16
17. 2 - Service
• Un service peut avoir deux états:
1- Started (Démarré) : quand une composante d’une application, par exemple
une activité, a démarré le service en faisant appel à la méthode
«startService()».
Quand un service est démarré, il peut fonctionner en arrière-plan
indéfiniment même si la composante qui s’est chargée de le démarrer, a
été détruite.
2- Bound (Lié) : un service est dans cet état, quand un composant d’une
application s’est liée à lui en appelant la méthode «bindService()».
Cet état offre une interface client-serveur permettant aux composantes
d’interagir avec le service, envoyer des requêtes, obtenir des résultats, etc.
17
18. 2 - Service
• onStartCommand(): cette méthode est appelée par le système
quand une activité a démarré le service en faisant appel à
«startService()».
• onBind() : cette méthode est appelée par le système quand une
autre composante veut se lier à ce service en faisant appel à
«bindService()». Si cette méthode est implémentée,
• vous devez prévoir pour le client une interface lui permettant de
communiquer avec le service en retournant un objet «IBinder».
Vous pouvez retourner une valeur «null» si vous voulez refuser
toute liaison possible.
18
19. 2 - Service
• onUnbind() : cette méthode est appelée quand un client
s’est déconnecté de l’interface fournie par le service.
• onRebind() : cette méthode est appelée quand un nouveau
client s’est connecté au service après que ce dernier ait
reçu l’information comme quoi tous les clients se sont
déconnectés de lui en utilisant la méthode «onUnbind()».
• onCreate() : cette méthode est appelée quand un service
est créé ou qu’une liaison a été établie avec le service, pour
la première fois. Cet appel permet d’exécuter une seule fois
une série de commandes.
19
20. 2 - Service
• onDestroy() : cette méthode est appelée
quand un service n’est plus utilisé. Cette
méthode doit-être implémentée pour faire le
ménage correctement (threads, écouteurs,
etc.).
20
21. 3-Broadcat Receiver
• C’est un récepteur spécialisé dont la tâche est d’écouter les
messages (en cas d’événements système )
• Il va écouter certaines intentions en particulier (grâce à des filtres
d’intention).
• Il est conçu pour recevoir des intentions afin d’effectuer une action.
• La tablette a une batterie faible. Android va envoyer un message
«interne» pour informer les «BroadcastReceiver» associés à
diverses applications de cet état. À eux d’effectuer les tâches
nécessaires suite à ce message.
• Un «BroadcastReceiver» n’est pas un composant graphique.
21
22. 3-Broadcat Receiver
• Pour qu’un «BroadcastReceiver» puisse fonctionner, vous devez
d’abord le créer puis l’enregistrer.
• Création:
– Un «BroadcastReceiver» que vous allez définir doit-être implémenté
comme une sous-classe de «BroadcastReceiver».
– Vous devez redéfinir la seule méthode disponible dans cette classe, il
s’agit de «onReceive».
– Cette méthode est appelée en cas de réception d’une intention.
• Enregistrement :
– Un récepteur est déclaré par l’ajout d’un élément «receiver» dans le
fichier «AndroidManifest.xml».
– Les principaux «broadcast» sont définis dans la classe «intent». Parmi
eux «android.intent.action.airplane_mode».
22
23. 4- Les Content Providers
(fournisseurs de contenu)
• Une base de données «SQLite» est embarquée dans Android.
• La notion de fournisseurs de contenu est un concept évolué sur la
gestion de données communes basée sur le principe de permissions
d’accès.
• Une application peut créer une base de données pour regrouper un
ensemble d’informations (exemple les contacts, une banque de
photos, etc.).
• Si cette application veut rendre ses données accessibles, elle le fait
à travers un mécanisme bien défini.
• Elle utilise pour cela un «fournisseur de contenu» en précisant le
mode d’accès «lecture/écriture».
• Les fournisseurs de contenu gèrent les données partagées par une
ou plusieurs applications.
23
24. 4- Les Content Providers
• Ils ont la charge de fournir ces informations ou bien de les
modifier à la demande.
• C’est le seul moyen disponible pour partager des données
entre différentes applications.
• Ainsi donc, Android a créé une séparation claire entre votre
application et les données exposées.
• Exemple : vous installez une application sur Android et, ce
dernier vous informe les accès réclamés par cette
application et, si vous êtes d’accord pour les accorder.
24
25. Développement Android
• Pour le développement :
– Eclipse avec ADT (Android Developer Tool).
– Android Studio. (IntelliJ IDEA)
– Offrir un environnement de développement des
applications Android avec un émulateur
d’équipements.
25
26. Développement Android
– Android SDK (Software Development Kit)
– Il apporte les différentes API qui sont disponible
selon la version d’Android pour laquelle on
programme.
– SDK par défaut ne contient pas tous les outils
nécessaires pour commencer.
26
27. Développement Android
• Démarrer SDKmanager.exe
• Ouvrir le répertoire des outils et sélectionner:
– Android SDK Tools
– Android SDK Platform-tools
– Android SDK Build-tools (version la plus récente)
• Ouvrir le répertoire de cette dernière version et
sélectionner :
– SDK Platform
– Une image system pour l’émulation, exemple
ARM EABI v7a System Image
27
28. • Dans le répertoire Extras , on sélectionne :
– Android Support Repository
– Android Support Library
Qui fournissent des API compatibles avec la plus
parts des version Android.
28
29. Développement Android
• Utilisation d’équipement pour l’exécution.
– Déclaré l’application débogable dans le Manifest
– Activation du mode débogage sur USB dans
l’équipement.
– Installer les drivers appropriés pour que les
système détecte correctement l’équipement.
29
30. Développement Android
• Android Virtual Device "AVD Manager.exe" :
nous permet de créer virtuellement des
équipements qui utilisent Android.
30
31. Projet Android
• Le projet représente un conteneur pour les
fichiers utilisés comme les codes les images et
les fichiers xml et autres.
• Un dossier projet doit respecter une certaine
architecture pour que le SDK puisse compiler
l’application.
31
32. Développement Android
• src/ Répertoire qui contient les fichiers
sources de l’application.
• bin/ répertoire de sortie application.apk
• jni/ contient le code native dévelopé avec NDK
• gen/ les fichiers java générés par ADT.
• assets/ Stocker des ressources brutes.
32
33. Développement Android
• res/ Répertoire contiens plusieurs sous
répertoires des ressources de l’application.
– anim/ fichiers xml compilés comme objets
d’animation.
– color/
– drawable/ les fichiers images avec différents etats
et pour différents résolutions d’affichage.
• drawable-hdpi/ destinées pour des écrans haute
densité (hdpi
– layout/
33
34. Développement Android
• res/
– menu/ fichiers qui déffinissent les menus
– raw/ ressources brutes.
– values/ xml pour des ressources simples string-
color-integer
– xml/ pour divers fichiers xml de configuration de
l’application.
34
35. Développement Android
• libs/
• AndroidManifest.xml : fichier qui décrit les
caractéristiques fondamentales de
l’application et définie chacun de ces
composants. On trouve par exemple :
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="19" />
35
36. Gradel
• Est un outil pour la gestion et l'automatisation de production
des projets logiciels. Basé sur Ant et Apache Maven
• Il fournie des outils déclarative pour la construction
d’application et la gestion automatisé de l’heritage.
• Ant permet la compilation, la génération de pages HTML de
document (Javadoc), la génération de rapports, l'exécution
d'outils annexes (checkstyle, FindBugs etc), l'archivage sous
forme distribuable (JAR etc.)
• Maven fournit des moyens de configuration plus simples, eux
aussi basés sur le format XML. Et en suivant une structure de
repertoire vu précedment /src /ressources.
• Gradle utilise le langage Groovy
36