Sie sind auf Seite 1von 23

Chapitre 1 : Initiation au dveloppement dapplications Android

Un priphrique mobile : Pas de disque dur mais une ROM, Fonctionne sur batterie, Moyens
de communication varis , Pas de clavier/souris

Android: un systme d'exploitation open source pour Smartphones, PDA et terminaux


mobiles

Architecture de la plateforme

De quoi on a besoin?

Java , SDK Android

IDE Eclipse + plugin ADT (Android Developement Tools) -> rduit le temps de
dveloppement et test

EMULATEUR : AVD(Android Virtuel Device)

Lmulateur sert excuter le code Java et xml que nous avons dvelopper sans avoir besoin
de brancher un tlphone rel

Concepts fondamentaux
Concepts fondamentaux prciser :
les activits

Une activit peut tre assimile un cran structur par un ensemble de vues et de
contrles composant son interface de faon logique : elle est compose dune
hirarchie de vues contenant elles-mmes dautres vues.
Une application comportant plusieurs crans, possdera donc autant dactivits

les vues et contrles (et leur mise en page)


Les vues sont les lments de linterface graphique que lutilisateur voit et sur
lesquels il pourra agir. Les vues contiennent des composants, organiss selon diverses
mises en page (les uns la suite des autres, en grille).
Les contrles (boutons, champs de saisie, case cocher, etc.) sont eux-mmes un
sous-ensembles des vues. Ils ont besoin daccder aux textes et aux images quils
affichent (par exemple un bouton reprsentant un tlphone aura besoin de limage du
tlphone correspondante). Ces textes et ces images seront puiss dans les fichiers
ressources de lapplication.

les ressources ;
le fichier de configuration appel galement "manifeste"
Le fichier de configuration XML de lapplication. Cest un fichier indispensable
chaque application qui dcrit entre autres :
le point dentre de votre application (quel code doit tre excut au dmarrage de
lapplication) ;
quels composants constituent ce programme ;
les permissions ncessaires lexcution du programme (accs Internet, accs
lappareil photo...).
.
Composantes dune application Android

Composants applicatifs : activits , services , fournisseurs de contenu , gadgets


Activity (Activit):reprsente le bloc de base dune application. Elle correspond
la partie prsentation de lapplication et fonctionne par le biais de vues qui
affichent des interfaces graphiques et rpondent aux actions utilisateur. Une
activit correspond un cran mais elle peut contenir plusieurs vues.
Content providers (fournisseurs de contenus): permet de grer et de partager
des informations. Un mme fournisseur permet daccder des donnes au sein
dune application et entre applications (partage des donnes).
Le service est un composant qui fonctionne en tche de fond, de manire
invisible.Ses principales utilisations sont la mise jour de sources de donnes
ainsi que dactivits visibles et le dclenchement de notifications.
Le gadget est un composant graphique qui sinstalle sur le bureau Android. Le
calendrier qui affiche de linformation ou le lecteur audio qui permet de contrler
la lecture de fichiers sont deux exemples de gadgets que lon trouve souvent sur
un cran daccueil.

lments dinteraction : objets Intent , rcepteurs dIntents , notifications.


Intents (intentions): Les intentions sont des messages systme. Elles sont
mises par le terminal pour prvenir les applications de la survenue de
diffrents vnements, exp: une modification matrielle (comme linsertion
dune carte SD) ou larrive de donnes (telle la rception dun SMS)

Rcepteur dIntents : il permet une application dtre lcoute des autres


afin de rpondre aux objets Intent qui lui sont destins et qui sont envoys
par dautres composants applicatifs
Notification : une notification signale une information lutilisateur sans
interrompre ses actions en cours
Cycle de Vie dune application Android

Une activit possde trois tats :

Active (running) : Quand l'activit est au premier plan


et reoit les actions utilisateur.

Stopped : Quand elle n'est plus visible ( Toujours


vivante Mais sera tue des que des ressources seront
ncessaires. )

Paused : Quand elle est toujours visible mais n'a pas le


focus (autre activit transparente par dessus ou
activit ne prenant pas tout lcran) ( Toujours vivante
Mais peut tre tue en cas de ressources trs limites)

Le systme tue les activits en tat "stopped" (ou


"paused ) de deux manires :
En appelant la mthode finish()
En tuant le processus tout simplement

Quand lactivit sera a nouveau demande :


Doit tre compltement reconstruite
Doit Potentiellement recharger son dernier tat

Une activit est notifie de ses changement dtat par


l'appel ces mthodes :
void onCreate(Bundle savedInstanceState)
void onStart(), void onRestart(), void onResume()
void onPause(), void onStop(), void onDestroy()

Afin de sauvegarder le contexte le systme appelle


"onSaveInstanceState()" avant de rendre l'application
potentiellement tuable (paused...)

Cet appel fournit un bundle "cl/valeurs" pour que le


dveloppeur puisse sauvegarder ltat Au prochain
appel de "onCreate()" ce bundle sera fournit

L'appel a la sauvegarde n'est faite qu'en cas de risque


de terminaison de lactivit par le systme et non si
cela vient d'une action utilisateur (back)

Premire application Android

Package Name : Par convention, le nom du package scrit de cette forme suivante :
extension_de_votre_domaine.nom_du_domaine.nom_du_projet exp: com.LFI3.HelloWorld

Create Activity : c'est l'Activity principale de l'application, on peut la nommer :


HelloWorldActivity , cette Activity est reprsente par une classe Java
HelloWorldActivity.java
gen : dossier qui contiendra le fichier R.java (ce
fichier est gnr automatiquement partir de
vos vues et fichiers de ressource gnr par le SDK
Android chaque prcompilation.).

assets : contient des donnes qui pourront tre


utilises dans votre application (images, vidos,
licence, etc.).

res : c'est le dossier qui contiendra les ressources


de votre application (images, vidos, styles).

drawable-hpdi (mdpi/ldpi): contient toutes les images,


bitmaps dont vous avez besoin pour votre application en
haute(medium/low ) rsolution
Icon.png : l'icne de votre application, cette icne sera
affiche sur le bureau

layout : le SDK Android offre une technique de


cration d'interfaces graphiques l'aide de
fichiers XML. C'est dans ce dossier que vous
inclurez l'ensemble des fichiers dcrivant vos
interfaces

Main.xml : le fichier principal de votre interface.

values : ce dossier contient un ensemble de


fichiers dcrivant les valeurs (pseudovariables)
utilises par votre application. On peut, par
exemple, y mettre des chanes de caractres
(strings.xml), des tableaux (arrays.xml), des
entiers, des couleurs, etc.

Strings.xml : fichier qui contient vos dclarations


de chanes de caractres.

AndroidManifest.xml : dfinit le comportement


de votre application au systme Android. Ce
fichier dfinit par exemple le nom, l'icne, la
version min du SDK, les activits, les services, etc.
Prcise le nom du package java utilisant
l'application. Cela sert d'identifiant unique !

Chapitre 2
AndroidManifest.xml

Fichier XML

Prcise l'architecture de l'application

Chaque application doit en avoir un

AndroidManifest.xml a la racine du projet

Il dcrit les composants de l'application


Liste des activits, services, broadcast receivers
Prcise les classes qui les implmentent
Prcise leurs capacits (a quels intents ils ragissent)

Ceci permet au systme de savoir comment lancer chaque partie de l'application afin de
satisfaire au principe de rutilisabilit.

Dfinit les permissions de l'application


Droit de passer des appels
Droit d'accder a Internet
Droit d'accder au GPS,

Prcise la version d'Android minimum ncessaire

Dclare les librairies utilises

Conventions :

Seuls deux lments sont obligatoire


< manifest > : contient le package, la version... Englobe tout le fichier
< application > : dcrit l'application et contiendra la liste de ses composants.

Les donnes sont passes en tant qu'attribut et non en tant que contenu

Tous les attributs commencent par "android:" (sauf quelques un dans < manifest >)

Les ressources

Au lieu de contenir les donnes en tant que tel, le fichier manifest peut faire appel a des
ressources: < activityandroid : icon ="@drawable=smallPic"::: >

Ces ressources sont dfinies dans le rpertoire "res" de l'application.

Permissions :

Une application ne peux pas utiliser certaines fonctionnalits sauf si cest prcis dans le
fichier Manifest

Il faut donc prciser les permissions ncessaires grce a :< uses - permission >

Il est possible de dfinir ses propres permissions

Il existe des permission standard :


android.permission.CALL EMERGENCY NUMBERS
android.permission.READ OWNER DATA
android.permission.SET WALLPAPER
android.permission.DEVICE POWER

Intent Filter :

Ils informent le systme a quelle intents les composants peuvent ragir

Un composant peut avoir plusieurs filtres

Editeur de texte
Filtre pour diter un document existant
Filtre pour initier un nouveau document

Un filtre doit possder une "action" qui dfinit a quoi il correspond

Dboguer une application Android(Le recherche des bugs...Gnralement un dbogage consiste


rechercher puis corriger les erreurs ayant occasionn l'excution errone ou le plantage d'une
application.Le plus simple, les erreurs de syntaxe... par ex. de banales fautes de frappe ou le non
respect des rgles d'criture d'un programme informatique dans un langage donn.)

Le dbogage est une tape essentielle dans le cycle de vie du dveloppement dune
application.

Communications entre applications


La communication interne du systme Android est base sur ; lenvoi et la rception de messages
exprimant lintention dune action, la description abstraite dune opration effectuer , la
communication entre deux composants de la mme application ou entre deux composants de deux
applications diffrentes.
La communication entre applications est Issu de la classe Intent, ce message permet de vhiculer
toutes les informations ncessaires la ralisation de laction :
informations destination du composant qui le rceptionnera (action effectuer
et les donnes avec lesquelles agir) ;
informations ncessaires au systme pour son traitement (catgorie du composant
cible du message et instructions dexcution de laction).

Deux faons denvoyer des intents:

1. Mode explicite : en ciblant un composant prcis dune application,


2. Mode implicite : en laissant le systme dlguer le traitement (ou non) de cette demande au
composant le plus appropri
Un systme de filtres permet chaque application de filtrer et de grer uniquement les
Intents qui sont pertinents pour celle-ci.
Une application peut ainsi tre dans un tat dinactivit, tout en restant lcoute des
intentions circulant dans le systme
Principe de fonctionnement(des objets Intent)

Les objets Intent ont essentiellement trois utilisations : ils permettent de dmarrer une
activit au sein de lapplication courante((une la fois)utilise pour la navigation entre
crans dune interface graphique et lappel dune bote de dialogue.) ou de solliciter (
rclamer ) dautres applications(Lorsquun besoin ne peut tre satisfait par lapplication ellemme, elle peut solliciter une autre application pour y rpondre ) et denvoyer des
informations.

Autres utilisations (des objets Intent)

dmarrage dun service : Le mcanisme relatif aux objets Intent et leur utilisation sont en
effet indispensables pour les applications fonctionnant en arrire plan telles que les services,

recevoir des actions effectuer ou communiquer avec dautres applications.

Lobjet Intent
Un objet Intent vhicule toutes les informations ncessaires la ralisation dune action (ou la
rception dinformation)

le nom du composant cibl : cette information facultative permet de spcifier de faon non
ambige le nom du composant qui sera utilis pour raliser lopration.

laction : une chane de caractres dfinissant laction raliser ou qui sest produite et pour
laquelle le systme ou lapplication informe toutes les autres ;

les donnes : le type de contenu MIME sous la forme dune chane de caractres et le
contenu cibl sous la forme dun URI
Exemple : ACTION_VIEW et un URI de la forme http://<adresse du site> ;

la catgorie : cette information complmentaire permet de cibler plus prcisment qui devra
grer lIntent mis
Exemple: CATEGORY_BROWSABLE : navigateur

les drapeaux : principalement utiliss pour spcifier comment le systme doit


dmarrer une activit.
Exemple : FLAG_ACTIVITY_NO_ANIMATION
Navigation entre ecrans

Il existe deux mthodes pour dmarrer une activit, en fonction de la logique de linterface

besoin de savoir comment sest droule lactivit (et obtenir un retour lors de son
arrt),

Ou sans retour.

Dmarrer une activit

startActivity :dmarrer une activit sans attendre de retour.

Syntaxe:

Intent intent = new Intent(this,ActiviteADemarrer.class);


startActivity(intent);
Le constructeur de la classe Intent prend les paramtres suivants :

Context PackageContext : le contexte partir duquel lIntent est cr et sera envoy. Ce


paramtre fait rfrence la plupart du temps lactivit en cours pointe par le mot clef this

Class<?> cls : un type de classe Java hritant de la classe Activity et point ici par le mot clef
ActiviteADemarrer.class.

erreur du type ActivityNotFoundException


dclarer lactivit dmarrer dans le fichier de
configuration AndroidManifest.xml de lapplication

Dmarrer une activit et obtenir un retour

startActivityForResult : lorsque lactivit enfant aura termin sa tche, elle en avertira


lactivit parent.

Syntaxe : (cot activit parent )

private static final int CODE_MON_ACTIVITE = 1;...


Intent intent = new Intent(this,activite2.class);
startActivityForResult(intent, CODE_MON_ACTIVITE);

Syntaxe : (cot activit enfant)

public void onClick(View v) {


switch(v.getId()){
case R.id.button1:
setResult(RESULT_OK);
finish();
break;
case R.id.button2:
setResult(RESULT_CANCELED);
finish();
break; }
Rcuprer la valeur de retour

Int requestCode : valeur identifiant quelle activit a appel la mthode

int resultCode : reprsente la valeur de retour envoye par la sous-activit pour signaler
son tat la fin de la transaction. Cest une constante dfinie dans la classe Activity
(RESULT_OK, RESULT_CANCELED, etc.) ou par le dveloppeur ;

Intent data : cet objet permet dchanger des donnes

Remarques:

si lactivit parent est dfinie avec lattribut android:launchMode=singleInstance , la


mthode OnActivityResult de lactivit parent sera appele ds le lancement de la sousactivit et non la fin de lexcution de lactivit enfant ;

Dlguer (Charger ) au systme le choix de lapplication

envoyer une intention et demander au systme de choisir le composant le plus appropri


pour excuter laction transmise.
Exemple:
Uri uri = Uri.parse("tel:0612345678");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent)

Chapitre 3: Interfaces graphiques

Les lements graphiques hritent de la classe View.

On peut regrouper des lments graphiques dans une ViewGroup.

Des ViewGroup particuliers sont prdfinis: ce sont des layouts (gabarits) qui proposent une
prdispositions des objets graphiques:
LinearLayout: dispose les lments de gauche droite ou du haut vers le bas
RelativeLayout: les lments enfants les uns par rapport aux autres
TableLayout: disposition matricielle
FrameLayout: disposition en haut gauche en empilant les lments
Les plus importants sont:

android:layout_width et android:layout_height:

="fill_parent": l'lment remplit tout l'lment parent

="wrap_content": prend la place ncessaire l'affichage

android:orientation: dfinit l'orientation d'empilement

android:gravity: dfinit l'alignement des lments

L'interface comme ressource

Une interface graphique dfinie en XML sera aussi gnre comme une ressource dans la
classe statiqueR.

Le nom du fichier xml, par example accueil.xml permet de retrouver le layout dans le code
java au travers de R.layout.accueil.

Associer la premire vue graphique l'activit principale de l'application :

Le layout reste modifiable au travers du code, comme tous les autres objets graphiques,Pour
cela, il est important de spcifier un id dans la dfinition XML du layout
(android:id="@+id/accueilid") ,Ainsi, on peut accder cet lment par son id et agir dessus
au travers du code Java:

Les lments graphiques de base


Un Layout peut contenir des lments graphiques, ou d'autres Layout.

Les labels de texte

En XML:

Par la programmation

Les images

Par Xml

Par la programmation:

Les Zones textes

Par XML

Par la programmation

Les boutons :

En XML:

La gestion des vnements de click se font par l'intermdiaire d'un listener:

Les listes:

Au sein d'un Layout, on peut implanter une liste que l'on pourra drouler si le nombre
d'lments est important.

pour afficher une liste ditems dans celle-ci, il lui faut un adaptateur de donnes.

Dans notre activit principale, nous allons rcuprer notre ListView et lui affecter un
adaptateur grce la mthode setAdapter,

Ajoutons-y un objet de type ArrayAdapter, contenant une liste de String avec un layout
gnrique ditem que fournit la plateforme par dfaut et enfin la liste des donnes.

Remarque:
Syntaxe : ArrayAdapter<Type de donnes>(le contexte,le style des items,les donnes);
Les onglets: La ralisation d'onglets permet de mieux utiliser l'espace rduit de l'cran.

TabWidget : contiendra les onglets

FrameLayout contiendra le contenu de ses onglets

Main.xml :

Ensuite on va des fichiers XML qui contiendra l'interface du contenu de chaque onglet
Onglet1.xml

Partie JAVA :

On commence par crer notre activit principale TabAndroidActivity.java

On place tout les imports ncessaires :

Lier le premier onglet lactivit principale:

On peut dfinir longlet par dfaut avec : tabHost.setCurrentTab(0);


Cration des classes pour les onglets :

Ne pas oublier de dclarer les activits des onglets dans landroid manifest

Chapitre 4: Les Services


Les applications qui sexcutent frquemment ou continuellement sans ncessiter constamment
une interaction avec lutilisateur peuvent tre implmentes sous la forme dun service. (: Les
applications qui rcuprent des informations (informations, mto, rsultats sportifs, etc.) via des
flux RSS/Atom )
Ils ne disposent pas d'interface utilisateur.
fonctionnent en arrire plan pour une priode de temps indfinie
Il existe deux types de services :
Services locaux (LocalService) :

Services qui sexcutent dans le mme processus que votre application.

Un service Local n'est accessible que par les Activity de l'application.

s'excute dans le processus de l'application et plus particulirement dans le thread


principal.

Services distants (RemoteService)

s'excutent dans un processus totalement diffrent de celui de votre application .

Un RemoteService peut tre sollicit par plusieurs applications diffrentes.

Le Cycle de vie dun service

le service na pas de dure de vie dfinie , fonctionne tant que cest


ncessaire.

Android fournit des services prdfinis aux quels on peut accder via la
mthode getSystemService().

Tout autre service doit tre dclarer dans le fichier AndroidManifest.xml


via <service android:name="yourclasss"> </service>

OnCreate() : cette mthode est appele la cration du service et est en


gnral utilise pour initialiser ce qui sera ncessaire votre service ;

OnStart(Intent i) : le service dmarre. Valable uniquement pour les


versions du SDK infrieur 2.0 ;

OnStartCommand(Intent i, int flags, int startId) : le service dmarre. Valable uniquement


pour les versions du SDK suprieur 2.0 ;

OnDestroy() : appel la fermeture du service.

pour crer un service, il suffit dimplmenter une classe qui hrite de la classe Service

Une activit peut dmarrer un Service via la mthode startService() et le stopper via
stopService()

La mthode onBind sert quand on veut faire communiquer le service avec un autreservice,
ou avec une activit ..etc.

Exemple : Golocalisation du tlphone (Voir Cours 4 : Diapo 11)

requestLocationUpdates(String, long, float, LocationListener).


Cette mthode possde 4 arguments :
Le provider utilis pour recevoir les mises jour des coordonnes utilisateurs (GPS /
NETWORK )
Un intervalle minimum entre deux notifications (en millisecondes)

Un intervalle minimum entre deux notifications (en mtre)


Linstance de votre LocationListener

Chapitre 5 : Intgration de Google Map sous Android (j'ai commenc a partir


du diapo14)

La mthode IsRouteDisplayed sert indiquer si votre application affiche des itinraires


(utilis pour la navigation).

Afin de permettre lutilisateur de zoomer laide de bouton, il faut dutiliser la mthode


setBuiltInZoomControls sous le oncreate() , on met :

Si on souhaite ajuster le niveau de zoom dfini lors de linitialisation de notre carte, on


utilise la mthode setZoom

Pour afficher une vision satellite dune carte, on utilise la mthode setSatellite en
indiquant si on souhaite afficher la vision satellite (true) ou non (false).

nous allons faire en sorte quau moment o lutilisateur appuie sur le bouton VOLUME_UP
(augmenter le volume) la vision satellite sactive. Mme chose pour le
bouton VOLUME_DOWN (vision satellite dsactive).

Mise jour de la position sur la carte

Afficher une boussole

une classe existe dans lAPI Google Map dAndroid qui permet dindiquer la position, il
sagit de MyLocationOverlay
Crer notre variable,Instancier la classe,Affichage dune boussole

Ragir au positionnement de lutilisateur

Chapitre 6 : Application sur les listview et les Broadcast Receivers


Les Broadcast Receivers

Un BroadcastReceiver ne possde quune seule mthode onReceive() que votre classe


devra implmenter.

Un BroadcastReceiver ne vit que le temps de traiter votre onReceive() .

lorsque le BroadcastReceiver est implment sur un composant qui a une dure de vie
assez longue, comme une activit ou un service : dans ce cas, le rcepteur vivra aussi
longtemps que son hte

faut appeler registerReceiver() dans la mthode onResume() ou onCreate() de lactivit


pour annoncer son intrt pour une intention,

Le systme Android envoie lintention tous les BroadCast Receiver abonnes par ordre de
priorit (priorit de votre BroadCast dans le fichierAndroidManifest.xml).

Si un BroadCast souhaite interrompre la rception du Broadcast ceux dun niveau


inferieure de priorit, il faut utiliser la mthode abortBroadcast().

Exemple: Un BR qui coute la rception dun sms

Le Broadcast Receiver doit tre dclarer dans le fichier manifest.xml

Application ( voir cours 6 diapo 9 )

Das könnte Ihnen auch gefallen