Vous êtes sur la page 1sur 118

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Cours Android
Dveloppement et API e

Romain Raveaux1
1 Laboratoire

L3I IUT de La Rochelle romain.raveaux01 at univ-lr.fr

Octobre 29-01, 2011

1 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Sommaire

Organisation du module

Generalite

Le Syst`me e

Fonctionnement des Applications

2 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Romain Raveaux

Doctorat en informatique 2 Masters: Rseaux et Tlcommunications et Maths e ee appliques e Recherche (Laboratoire L3i)
Scurit documentaire e e Analyse de graphes (Rseaux informatiques ou sociaux) e

Enseignements (Master Icne+IUT info) o


Web Smantique e Rseau e

3 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Module Android

Module PM4 : 2 semaines Gnralit Android e e e Organisation du syst`me e Android SDK Application

4 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Module Android

Module PM4 : 2 semaines Gnralit Android e e e Organisation du syst`me e Android SDK Application

4 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Module Android

Module PM4 : 2 semaines Gnralit Android e e e Organisation du syst`me e Android SDK Application

4 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Module Android

Module PM4 : 2 semaines Gnralit Android e e e Organisation du syst`me e Android SDK Application

4 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Plan des TPs

Getting started (Dbugger, helloworld) e Projets : Golocalisation des Stations Ylo e e

5 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Plan des TPs

Getting started (Dbugger, helloworld) e Projets : Golocalisation des Stations Ylo e e

5 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les r`gles e

Ne pas perturber le cours:


Silence Rendre les comptes rendus de TP ` temps. a

6 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les r`gles e

Ne pas perturber le cours:


Silence Rendre les comptes rendus de TP ` temps. a

6 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

http://developer.android.com/index.html http://www.tutomobile.fr/category/tutorial-android/ http://android.developpez.com/cours/ http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-aureseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/ http://www.androidcompetencycenter.com/2009/06/startservice-at-boot/ Linux Mag

7 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

http://developer.android.com/index.html http://www.tutomobile.fr/category/tutorial-android/ http://android.developpez.com/cours/ http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-aureseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/ http://www.androidcompetencycenter.com/2009/06/startservice-at-boot/ Linux Mag

7 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

http://developer.android.com/index.html http://www.tutomobile.fr/category/tutorial-android/ http://android.developpez.com/cours/ http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-aureseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/ http://www.androidcompetencycenter.com/2009/06/startservice-at-boot/ Linux Mag

7 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

http://developer.android.com/index.html http://www.tutomobile.fr/category/tutorial-android/ http://android.developpez.com/cours/ http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-aureseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/ http://www.androidcompetencycenter.com/2009/06/startservice-at-boot/ Linux Mag

7 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

http://developer.android.com/index.html http://www.tutomobile.fr/category/tutorial-android/ http://android.developpez.com/cours/ http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-aureseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/ http://www.androidcompetencycenter.com/2009/06/startservice-at-boot/ Linux Mag

7 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

http://developer.android.com/index.html http://www.tutomobile.fr/category/tutorial-android/ http://android.developpez.com/cours/ http://www.tutomobile.fr/geolocalisation-grace-au-gps-ou-aureseau-mobile-tutoriel-android-n%C2%B015/13/08/2010/ http://www.androidcompetencycenter.com/2009/06/startservice-at-boot/ Linux Mag

7 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Bibliographie

Ce cours/TP utilise tr`s largement larticle de Yann e DISANTO publi sur Developpez.com ainsi que de la e prsentation de Lenn Angel. e

8 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Prsentation Gnrale e e e

9 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Quest-ce que cest ?

Souvent prsent comme laternative de Google ` liPhone e e a Syst`me dexploitation pour terminaux mobiles e Bas sur Linux e Open Source (licence Apache)

10 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Fonctionnalits 1/2 e
Framework applicatif avec rutilisation et remplacement e possible des composants DVM : Dalvik Virtual Machine (machine virtuelle optimise e pour les priphriques mobiles) e e Navigateur intgr bas sur le moteur WebKit (OpenSource) e e e Librairie 2D ddie e e Gestion de la 3D base sur une implmentation dOpenGL ES e e 1.0 (avec support de laccelration matrielle) e e Base de donnes SQLite e Gestion des crans tactiles et du Multitouch e

11 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Fonctionnalits 2/2 e
Multimdia : support de la plupart des formats classiques e dimages, de videos et audios (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) Tlphonie GSM (selon hardware) ee Bluetooth, EDGE, 3G et WiFi (selon hardware) Camra, GPS, compas et accelrom`tre (selon hardware) e e e Environnement de dveloppement riche incluant : e
Un emulateur (avec une interface de controle) Des outils de deboggage Outils de proling memoire et performance Un plugin pour lIDE Eclipse

12 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Historique

Dvelopp par la startup Android Inc. e e Juillet 2005 : Rachat par Google Novembre 2007 : Open Handset Alliance
- Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile - Dcembre 2008 : ARM Holdings, Atheros Communications, e Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, Vodafone

13 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Terminaux Viss e

Tlphones portables (HTC, Samsung, Motorola...) ee Netbook/Smartbook (HP Airlife 100, Acer Aspire D250...) Tablette Multimedia (Archos, Samsung Galaxy Tab, ...) Automobile (Continental AutoLinq : Tesla, Ford...) Mais aussi : GPS, Rfrigerateur, Machine ` laver... e a

14 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Et ca ressemble ` quoi ? a

15 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Mobiles Disponibles
En 2008 : HTC Dream / G1

16 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Mobiles Disponibles
En 2009 : Une quizaine (HTC, LG, Samsung, Motorola...)

17 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Mobiles Disponibles
En 2010 : De tr`s nombreux mobiles e

18 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Concurrents

Apple iPhone OS : leader en tlphonie, ferm... ee e Windows Mobile : vieillissant, va til revenir avec v7 ? Palm : prcurseur, en perte de vitesse, PalmPr ? e e Blackberry : plutot ddi entreprise mais se dmocratise e e e Symbian : passage en open source octobre 2009 Mais la plupart de ces concurrents nont pas la exibilit dAndroid e qui ne se destine pas quaux tlphones mobiles ! ee

19 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Parts de March e

20 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les versions...
Versions dAndroid : 1.5 : Cupcake (avril 2009) 1.6 : Donut (septembre 2009) 2.0/2.1 : Eclair (Octobre 2009) 2.2 : FroYo (Mai 2010) 2.3 : Gingerbread (Novembre 2010) 3.0 : Honeycomb (Fvrier 2011) e Remarques :
Evolution tr`s rapide ! e Problmatique de dploiement e e

21 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Cupcake 1.5
Support du Bluetooth A2DP et AVRCP Possibilit de se connecter e automatiquement ` un kit a bluetooth Ajouts de widget Ajout des dossiers sur le Home Transition dcrans animes e e

30 Avril 2009 Linux Kernel 2.6.27 Possibilit denregistrer et de e regarder des vidos e Upload de vidos vers Youtube et e dimages vers picasa directement depuis le tlphone ee Un nouveau clavier avec saisie prdictive e

22 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Donut 1.6
Amlioration des recherches pour e intgrer les bookmarks, e lhistorique, les contacts et le web depuis lcran de dmarrage e e 15 Septembre 2009 Linux Kernel 2.6.29 Nouvelle version du market Refonte de la camera et de la galerie (suppression multiple...) Mise ` jour de la recherche a vocale. Rponses plus rapides et e meilleure intgration (appel de e contacts..) Support de nouveaux protocoles de communication Support des crans en WVGA e Amlioration des performances e Framework Gesture disponible Navigation Google Gratuite

23 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Eclair 2.1
Support de Microsoft Exchange Support du ash intgr pour e e lappareil photo 26 Octobre 2009 Linux Kernel 2.6.29 Optimisation des performance Support des ecrans de taille et de rsolution direntes e e Interface revue Nouvelle interface pour le navigateur et support d HTML5 Nouvelle liste des contacts Intgration de Google Maps 3.1.2 e Zoom digital Amlioration du Multitouch e Amlioration du clavier virtuel e Bluetooth 2.1 Live Wallpapers

24 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Froyo 2.2

Mise ` jour du Launcher a Support du Hotspot Wi-Fi 20 Mai 2010 Linux Kernel 2.6.32 Amlioration gnrale de lOS e e e (vitesse, memoire...) Mise en place de JIT Integration du moteur JavaScript V8 de chrome dans le navigateur Amelioration du support de Microsoft Exchange Mise ` jour du Market et mise ` a a jour automatiques Passage rapide dun clavier dune langue ` une autre a

25 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Gingerbread 2.3

Novembre 2010 Linux Kernel 2.6.xxx Support des technologies NFC (Near Field Communication) Client SIP amior e e

26 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

HoneyComb 3.0

Fvrier 2011 e Orient Tablette e Prise en charge du multi-coeurs

27 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Evolution des Versions

Au 1er Novembre 2010

28 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Rpartition des Versions e


Au 1er Novembre 2010

29 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Evolution des crans e


Au 1er Novembre 2010

30 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Rpartition des crans e e


Au 1er Novembre 2010

31 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Android Market
Syst`me standard de tlchargement dapplications e ee Pas de vrications des applications e Navigation laborieuse :
Par catgorie e Recherche par mots cls e Par gratuit / payant

Classement enfant, adolescent, adulte... Ncessite un terminal certi (camera, 3G, compas...) e e Gestion des autorisations avant linstallation Possibilit de rendre payant les app. e Des centaines de milliers dapp.
32 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Android Market

25$ pour sinscrire en tant que developpeur 70% du prix revient au developpeur, 30% a Google Revenus via Google CheckOut Achat & vente possible selon les pays 57% dapplications gratuites App Store : 28% Idem Blackberry App World, Nokia Ovi Store...

33 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Markets Alternatifs

AppsLib (Archos) : http://appslib.com AndroLib : http://www.androlib.com Market Samsung ... Tout a fait autoris par Google e Libre de fonctionnement Acces aux terminaux non certis e

34 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Sans Market

Via les outils du SDK Via des applications disponibles sur le market et la carte SD

35 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Environnement de dveloppement e

Outils :
Eclipse SDK Android ADT : Android Development Tools (plugin eclipse) AVD : Android Virtual Device ADB : Android Debug Bridge

36 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Architecture Gnrale e e

37 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Noyau Linux

38 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Noyau Linux

Android repose sur un noyau Linux version 2.6 Gestion de la securit e Gestion de la mmoire e Gestion des processus Gestion rseau e Drivers ... Ce noyaux agit comme une couche dabstraction entre le matriel et le restes des couches applicatives. e

39 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Compatibilit Linux e
Noyau driv de Linux mais a t modi par Google : e e ee e Pas de systeme X-Window nativement Ne supporte pas toutes les libraires GNU standards Dicult de porter toutes les applications (ou librairies) e compatibles linux. Mais le support de X-Window reste nanmoins possible e Le Code de google nest pas revers dans le noyau linux car e Android forme un nouvel arbre de developpement. En Avril 2010 Google a annonc quil allaient employer une e quipe pour travailler sur le systeme Linux. e

40 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Android Runtime

41 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Android Runtime

Code Natif : Codage via le Android NDK JNI permet le pont entre le natif et Dalvik Peu utilis sauf pour les jeux (habitude de programmeurs) e Permet des gains de performance parfois. Cela dpend de e lapplication.

42 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Android Runtime
DVM : Dalvik Virtual Machine
- Ecrite par Dan Bornstein - Dalvik : village de pcheurs en islande e - Une sorte de JVM optimise pour les syst`mes limits en e e e mmoire et en puissance. e - Excute les applications .dex compils depuis le code e e automatiquement par le SDK avec loutil dx - Utilise du ByteCode spcique et non du ByteCode Java e - Optimise galement pour tre multi-instance sur un seul e e e terminal.

Aout 2010 : Oracle (Java) porte plainte envers Google pour leur implmentation de Dalvik qui serait bas sur le code e e source de java...

43 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Android Runtime

Android inclus un ensemble de librairies de base proposant ainsi la quasi totalit des fonctionnalits disponibles dans le e e language de programmation Java. Chaque application sous Android utilise sa propre instance dune DVM.
Pas de probl`me dinteraction entres les applications e Espace protg e e Pas de risque de plantage gnral e e Dou la necessit dune VM optimise ! e e

44 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Librairies

45 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Librairies

Android inclus un ensemble de librairies C/C++ Utilises par les applications Android e Accessibles au dveloppeur via le SDK e Quelques unes de ces librairies
- Librairie Syst`me C : une implmentatition driv de e e e e limplmentation BSC des librairies standard C (libc) e - LibWebCore : Un moteur de navigateur internet moderne utilis autant pour navigateur android que pour les vues web e intgrables e - SQLite : un systeme de gestion de base de donnes relationnel e lger et puissant disponible pour toutes les applications. e

46 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Librairies
...
- Librairies MultiMedia : bases sur PacketVideos e OpenCORE. Intgre le support de la lecture et de e lenregistrement de nombreux formats audio, vido et image e (MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG...) - Surface Manager : g`re lacc`s et lachage des direntes e e e vues (2D ou 3D) composant les applications - SGL : Le moteur de rendu pour limagerie 2D - Librairie 3D : Une implmentation base sur lAPI OpenGL ES e e 1.0. Intgrant ` la fois laccelration matrielle (si disponible) e a e e et laccleration logicielle. e - FreeType : Librairie de rendu de police bitmap et vectorielles.

47 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Framework Applicatif

48 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Framework Applicatif

Plateforme de developpement Ouverte


Permet des application riches et varies e Acces au matriel e Acces aux informations de localisation Lancement de services de fond Mise en place dalarmes, de notications ...

49 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Framework Applicatif

Plateforme de developpement Ouverte Architecture concue pour simplier la rutilisation des e composants Publication des capacits des applications e Les autres applications peuvent utiliser ces capacits e Charg facilement les apps. e

50 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Framework Applicatif
Une application est compose dun ensemble de services et de e syst`mes incluant : e Un ensemble de vues Views utilises pour construire e lapplication (listes, grilles, zone de saisies, boutons ou encore navigateur web intgrable) e Content Provider permettant aux applications daccder e aux donnes dautres applications (Contacts...) ou de partager e leur propres donnes. e Resource Manager permettant dacceder a des ressources tel que des chaines de caract`res, des images ou des layout e (le tout paramtrable selon de multiples crit`res : taille de e e lcran, internationalisation...) e
51 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Framework Applicatif

Mais aussi : Notication Manager permettant ` chaque application a dutliser la barre de statut gnrale pour y intgrer ses propres e e e informations. Activity Manager : composant qui gere le cycle de vie dune application et fournit les outils de navigation applicative.

52 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Applications

53 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Framework Applicatif
Derni`re couche sur Android e Plusieurs sont intgres dans le syst`me : e e e Ecran Home Gestion des Emails Gestion des SMS/MMS Gestion de la tlphonie ee Google Maps... Application supplmentaires installables e Toutes les applications sont crites via le mme SDK ! e e

54 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Gnralits e e e

Les applications sont crites en Java e Le code compil dex ainsi que les ressources (images, e layout...) sont regroups dans une archive au format apk e par les outils du SDK Cette archive apk est un tout permettant la distribution et linstallation de lapplication sur nimporte quelle plateforme android.

55 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Indpendance e
Chaque application Android est isol des autres ` plusieurs e a niveaux :
- Chaque application tourne sur son propre process Linux. Ce processus est lanc par Android d`s quune partie du code e e ncessite une xcution et inversement tue les processus dont il e e e na plus dutilit. e - De plus chaque process utilise sa propre machine virtuelle Dalvik. Ainsi chaque application poss`de son propre e environnement. - Chaque application est associ ` un unique Linux User Id. ea Ainsi les chiers dune application ne sont pas visibles par les autres applications. (mais il existe des moyens de partager ces ressources, par exemple via les Content Provider) - Il est possible de forcer deux application de partager le mme e user ID (et donc de partager des chiers nativement). Il est egalement possible donc dutiliser la mme VM et le mme e e processus Linux.
56 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Indpendance e
Un des aspect les plus important dAndroid est la rutilisabilit e e
- Chaque application peut utiliser des morceaux dautres applications (si elle le permettent) - Par exemple si votre application permet de retoucher des photos et que vous dsirez publier cette photo vous pouvez e utiliser toutes les applications dj` prsentes pour raliser cette ea e e tche (facebook, picasa, mail ...). Et sans utiliser le code de a cette application tierce juste en appeler la partie interessante.

Ainsi le systeme doit etre capable :


- De lancer nimporte quelle partie expose dune application e sans en lancer la totalit e - Donc les application Andoid nont pas de point dentre global e (mthode main()). Mais sont composs dlments e e ee indpendants ou chacun peut tre lanc individuellement. e e e
57 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Elements Fondamentaux

Activity Service BroadcastReceiver ContentProvider Intent

58 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les Activity
Une activit (Activity) = une IHM pour une action e utilisateur prcise : e
- Liste dlments parmis lesquels lutilisateur peut choisir ee - Achage dune image avec un titre - Achage dun calendrier pour choisir une date

Exemple dune application de SMS :


- Une activit pour choisir un contact e - Une autre pour crire le message e - Une autre pour acher un historique dchanges. e

Chaque activit est indpendante des autres e e Une activit doit heriter de la classe : android.app.Activity e

59 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les Activity

Une application est donc un ensemble dactivits e On doit dnir quelle est la premi`re activit ` excuter lors e e ea e du lancement de lapplication Pour naviguer dans lapplication chaque activit doit e elle-mme lancer lactivit suivante. e e

60 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les Activity

Chaque activit est assigne ` une fentre e e a e - Plein cran e - Fenetre ottante Une activit peux aussi possder des sous fenetres e e - Pop-up ...

61 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les Activity
Le rendu dune activit est dnit par : e e Une ou un ensemble de vues Les vues hritent de la classe android.view.View e Chaque vue controle une zone rectangulaire de lactivit e Lorganisation est dnit par un arbre de Layout ou chaque e feuille est une vue. Un grand nombre de vues standards sont proposes e (combobox, zone de texte, bouton...) Possibilit de dnir des vues personnalises e e e

62 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les Activity

Les layouts :
- Agents de placement - Plusieurs layouts sont proposs en standard e

Possibilit de dnir ses propres Layout e e Les layout sont utilisable via des chier XML ou via le code Java

63 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Les Activity
Pour rsumer : e Une fois larbre de vues dni on utilise la mthode suivante : e e - Activity.setContentView()

64 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Service

Un service ne poss`de pas dinterface e Tourne en arri`re plan en continue (ou presque) e Exemple :
Lecture de musique Collecte de donnes achables dans une activit e e Suivi GPS Vrication de mise ` jour e a ...

65 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Service

Lancement dune application musicale


Dmarrage de lactivit de choix de chanson e e Lutilisateur lance la musique Le service diuse cette musique Lutilisateur peut quitter l application en fermant lactivit e La musique continue ` tre diuse ! ae e

66 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Service

Pour communiquer avec un service il faut :


- Sy connecter (il se lance si il tait arret) e e - Utiliser linterface que prsente ce service e - - Exemple : Play(), Pause(), next() ...

Un service sexcute dans un Thread et donc ne bloque pas le e reste du terminal quand il tourne en fond.

67 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Broadcast Receiver

Les broadcast receiver sont :


Des lements inactifs qui attendent un v`nement e e e Il y a des v`nements syst`me : e e e Batterie faible Changement de langue du syst`me e Lutilisateur a pris une photo ...

Il est possible de dnir ses propres v`nements e e e Hritent de la classe android.content.BroadcastReceiver e

68 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Broadcast Receiver

Une application peux contenir plusieur receiver : un par v`ment important e e Les receiver nont videmment pas dinterface e Ils peuvent lancer des activits en cas de besoin e Ils peuvent galement utiliser le NoticationManager pour e signaler quelque chose ` lutilisateur (prfrable) a ee
- Icone, vibration, alerte sonore, clignotement diode...

69 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Content Provider

Les content provider permettent de partager du contenu entre les applications Une application sen sert pour rendre public certaines de ses donnes e Le donnes sont donc exposes dans une classe hritant de e e e android.content.ContentProvider
Methode query() Insert() Update() delete()...

70 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Content Provider

Les autres applications nacc`dent pas directement ` la classe e a de ContentProvider Utilisation dun ContentResolver qui va rediriger les requetes vers le provider voulu Si lon tente dacceder ` une resouce dune application ntant a e pas en cours dexcution le syst`me Android se charge de la e e lancer avant.

71 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent

Les content providers sont activs par une requte dun e e content resolver Mais les 3 autres systemes (Activity, Service, BroadCast Receiver) sont activs par des messages asynchrone appells e e Intent Un intent drive de android.content.Intent e Un intent poss`de une action et un contenu particulier e

72 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent

Pour les activits et les services il nomme laction dsire et e e e prcise lURI des donnes sur lesquelles agir. e e
- Acher / image - Editer / texte - ...

Pour les broadcast receivers il se contente de nommer laction ` annoncer a


- Batterie faible - ...

73 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent

Les Intents et les activits : e


- Lancement en passant un Intent en param`tre ` une des e a mthodes suivantes : e
* Context.startActivity() * Activity.startActivityForResult()

- Lactivity peut accder ` celui ci avec : e a


* getIntent()

- Si le syst`me doit envoyer des nouveaux intent : e


* Appel de onNewIntent() sur lactivit e

- En cas de resultat attendu


* Appel de onActivityResult() sur lactivit appelante e

74 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent

Les Intents et les services :


- Lancement en passant un Intent en param`tre ` la mthode e a e suivante :
* Context.startService() * Le systeme applera ensuite la mthode onStart() en prcisant e e cet Intent en param`tre e

- Connexion en passant un Intent en param`tre ` la mthode e a e suivante :


* Context.bindService() * Le Systeme appelera ensuite la mthod onBind() en prcisant e e cet Intent en param`tre e

75 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent

Les Intents et les Broadcast receiver :


- Une application voulant envoyer un v`nement va utiliser une e e des mthodes suivantes : e
* Context.sendBroadcast() * Context.sendOrderedBroadcast() * Context.sendStickyBroadcast()

- Le syst`me va alors appeler la mthode onReceive() sur tous e e les broadcast receivers intrsss en passant en param`tre ee e e lIntent.

76 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent

La catgorie e
- Une chaine de caract`re prcisant quel type de composant e e peut g`rer lintent. e - Plusieurs catgories peuvent tre prcises. e e e e - Exemples :
e e * CATEGORY BROWSABLE : Le contenu peut tre ach dans le navigateur * CATEGORY HOME : Lactivit est de type Home e * CATEGORY LAUNCHER : Lactivit est lancable par le e launcher et donc doit y tre prsente e e * CATEGORY PREFERENCE : lactivit est un panneau de e prfrences ee

77 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Intent
Quelques exemples :
- ACTION VIEW content://contacts/people/1 Ache les information sur le contact 1 - ACTION DIAL content://contacts/people/1 Ache le mode dappel rempli avec les informations du contact 1 - ACTION VIEW tel:123 Ache le mode dappel rempli avec 123. (ACTION VIEW sadapte donc au contenu) - ACTION DIAL tel:123 Idem - ACTION EDIT content://contacts/people/1 Permet de modier les informations du contact 1 - ACTION VIEW content://contacts/people/ Ache la liste des contacts (le choix dun de ces contact gnrera un Intent e e pour acher ce contact)

78 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Fichier XML Prcise larchitecture de lapplication e Chaque application doit en avoir un AndroidManifest.xml ` la racine du projet a

79 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Contenu :
- Prcise le nom du package java utilisant lapplication. Cela e sert didentiant unique ! - Il dcrit les composants de lapplication e - - Liste des activits, services, broadcast receivers e - - Prcise les classes qui les implmentent e e - - Prcise leurs capacits (` quels intents ils ragissent) e e a e - - Ceci permet au syst`me de savoir comment lancer chaque e partie de lapplication an de satisfaire au principe de rutilisabilit. e e

80 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Contenu suite :
Dnit les permissions de lapplication e Droit de passer des appels Droit dacceder ` Internet a Droit dacceder au GPS ... Prcise la version dAndroid minimum ncessaire e e Dclare les librairies utilises e e Dclare des outils dInstrumentation (uniquement pour le e dveloppement) e

81 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Conventions :
- Seuls deux lments sont obligatoire ee - - < manifest > : contient le package, la version... Englobe tout le chier - - < application > : dcrit lapplication et contiendra la liste de e ses composants. - Les donnes sont passes en tant quattribut et non en tant e e que contenu - Tous les attributs commencent par android: (sauf quelques un dans < manifest >)

82 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Les ressources
- Au lieu de contenir les donnes en tant que tel le chier e manifest peut faire appel ` des ressources a - < activityandroid : icon = @drawable/smallPic... > - Ces ressources sont dnies dans le rpertoire res de e e lapplication.

83 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Permissions
- Une application ne peux pas utiliser certaines fonctionnalits e sauf si il le prcise dans le chier Manifest e - Il faut donc prciser les permissions ncessaires grace ` : e e a < uses permission > - Il existe des permission standard : - android.permission.CALL EMERGENCY NUMBERS - android.permission.READ OWNER DATA - android.permission.SET WALLPAPER - android.permission.DEVICE POWER

Il est possible de dnir ses propres permissions e

84 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Intent Filter - Ils informent le systeme ` quelle intent les composants a peuvent ragir e - Un composant peut avoir plusieurs ltres - Editeur de texte - - Filtre pour editer un document existant - - Filtre pour initier un nouveau document - Un ltre doit posseder une action qui dnit ` quoi il e a correspond

85 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Manifest

Exemple

86 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Activity & Task

Rsum : e e - Lapplication A doit acher une carte - A prpare lintent avec les donnes necessaires e e - A appele startActivity() avec cet intent - Le systeme trouve lapplication B qui sait gerer cet Intent - Lapplication B ache la carte - Lutilisateur ferme cette carte (bouton back) - Lapplication A reprends la main

87 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Activity & Task

Du point de vue de lutilisateur : - 1 seule application (A et B sont confondues) Du point de vue du syst`me : e - 2 applications - 2 DVM - 2 process - 1 Tche = 1 Application au sens utilisateur. a

88 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Activity & Task

Une tche : a - Est une pile dactivits e - La premi`re est celle qui a t initie par lutilisateur e ee e - Les activits peuvent provenir de direntes applications e e - Lensemble forme un tout - - Mis en arriere plan en mme temps e - - Remise au premier plan dans son ensemble Comportement par dfaut modiable via le manifest et le tag e < activity > et ses ags

89 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Processus & Threads

Quand le premier composant dune application ncessite une e excution Android demarre un nouveau processus Linux pour e gerer ce composant Chaque composant peut prciser dans la Manifest (via e lattribut process) si il doit sexcuter dans un nouveau e processus ou si il doit partager un processus existant Deux composant de deux applications peuvent aussi partager le mme processus si : e - Elle utilisent le mme Linux User ID e - Elles sont signes par la mme autorit e e e

90 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Processus & Threads

Attentions pour les composant utilis dans le mme processus e e - Ne pas faire de longues oprations lors des appels par le e Systeme ( View.onKeyDown() ) sinon cela bloquera tout le reste des composants. - Penser ` utiliser des Threads pour les traitements longs. a - Utiliser la classe classique Java de Threads - Android fournit aussi des classes utilitaires pour simplier lutilisation des Threads

91 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Cycle de Vie
Une activit poss`de trois tats : e e e - Active (running) : Quand lactivit est au premier plan et e recoit les actions utilisateur. - Paused : Quand elle est toujours visible mais na pas le focus (autre activit transparente par dessus ou activit ne prenant e e pas tout lcran) e - - Toujours vivante - - Mais peut etre tue en cas de resources tr`s limites e e e - Stopped : Quand elle nest plus visible - - Toujours vivante - - Mais sera tue d`s que des resources seront ncssaires. e e e e
92 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Cycle de Vie

Le syst`me tue les activits en etat stopped (ou paused) e e de deux mani`res : e - En appelant la mthode nish() e - En tuant le processus tout simplement Quand lactivit sera a nouveau demande : e e - Doit tre compltement reconstruite e e - Doit Potentiellement recharger son dernier tat e

93 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Cycle de Vie

Une activit est notie de ses changement dtat par lappel e e e ` ses mthodes : a e - void onCreate(Bundle savedInstanceState) - void onStart() - void onRestart() - void onResume() - void onPause() - void onStop() - void onDestroy()

94 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Cycle de Vie
An de sauvegarder le contexte le syst`me appele e onSaveInstanceState() avant de rendre lapplication potentiellement tuable (paused...) Cet appel fournit un bundle cl/valeurs pour que le e dveloppeur puisse sauvegarder ltat e e Au prochain appel de onCreate() ce bundle sera fournit Il est galement fournit via un appel ` e a onRestoreInstanceState() Lappel ` la sauvegarde nest faite quen cas de risque de a terminaison de lactivit par le syst`me et non si cela vient e e dune action utilisateur (back)

95 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Hello World
Crer un nouveau projet : e

96 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Hello World

Organisation des dossiers : src : sources gen : code gnr e ee res : ressources drawable : images layout : layout values : constantes Manifest

97 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Hello World

Manifest :

98 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Hello World
Ressources (Layout, String, Images) On y acc`de par @dossier/nom ou R.dossier.nom e Ressources alternatives : selon la langue, le sdk, lecran...

99 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Hello World

Ativity

100 / 100

Organisation du module Generalite Le Syst`me e Fonctionnement des Applications

Hello World

Excution de lapplication : e Sur un mulateur e Sur un terminal

101 / 100

Vous aimerez peut-être aussi