Académique Documents
Professionnel Documents
Culture Documents
pour Android
Positionnement dAndroid
LiPhone (Apple)
Nokia (Symbian OS)
Window Mobile (Microsoft)
BlackBerry
Palm (WebOS)
Google (Android)
Architecture dAndroid
Architecture dAndroid
Un noyau linux 2.6
Gestion de le mmoire
Gestion des processus
Gestion du matriel (cran clavier )
Gestion des capteurs (appareil photo, GPS, acclromtre )
Architecture dAndroid
Des bibliothques (C et C++)
Graphisme
Mdias
Web
Architecture dAndroid
Architecture dAndroid
Architecture dAndroid
Les applications
(Activits)
Dveloppement dapplications
pour Android
Production de logiciel
AndroidManifest
Chane de compilation
Code source
java
.java
Bytecode
.class
Binaire Dalvik
.dex
Ressources
IDE
Eclipse
ou
Netbeans
+
plugins
SDK
Android
+
outils
Machine
virtuelle
Dalvik
Constitution de
l'application
Application
.apk
Tlchargement
Terminal
API
Android
Environnement d'excution
Environnement de dveloppement
Le SDK Android
Tlchargeable sur :
developper.android.com/sdk
sous la forme dun zip ou dun fichier
dinstallation
Propose le SDKManager qui
permet de tlcharger les
plateformes et outils :
Android versions xx
Google API versions xx
Outils (tools et platform-tools)
Eclipse
Tlchargeable sur www.eclipse.org
Ne ncessite pas dinstallation (simple copie)
Le plugin pour Android est tlcharg et install
depuis Eclipse (Menu Help Install New Software) sur
https://dl-ssl.google.com/android/eclipse
Il suffit ensuite dindiquer Eclipse o se trouve le
SDK Android (Menu Windows Preferences Android)
Nom
SDK
Paquetage
(au moins 2 niveaux)
Zone ddition
Explorateur
Vues
Hirarchie
Dclarations
Paramtrage:
Nom
SDK
Taille carte SD
Format dcran
Matriel
Terminaux connects
Terminaux disponibles
Le terminal virtuel
...
Le fichier AndroidManifest
Le Fichier AndroidManifest
Modifiable directement ou par des formulaires
Rubriques du fichier
AndroidManifest
Manifest
Nom du paquetage
Versions
SDK
Application
Nom
Icne
Elments constituant lapplication (activits, services, )
Permissions
Les ressources
Les ressources
Application embarque tout doit tre dans le fichier
.apk tlcharg
Le rpertoire res contient toutes les ressources qui
seront mises dans le apk :
Type
Nom
Valeur
La classe R
Cest une classe gnre par Eclipse qui permet
lapplication daccder aux ressources
Elle contient des classes internes dont les noms
correspondent aux types de ressources (id, drawable,
layout )
Elle est constitue partir des fichiers placs dans les
sous rpertoires du rpertoire res
Une proprit est cre pour :
Chaque image plac dans drawable-xxxx
Chaque identificateur dfini dans des fichiers XML
(objets dinterface, constantes)
Chaque fichier plac dans les rpertoires xml , raw
</resources>
La classe Resources
Permet laccs aux ressources rpertories dans R
On obtient une instance de cette classe par getResources() de lactivit
Principales mthodes de la classe Resources (le paramtre est un
identifiant dfini dans R de la forme R.type.nom) :
boolean getBoolean(int)
int getInteger(int)
int[] getArray(int)
String getString(int)
String[] getStringArray(int)
int getColor(int)
float getDimension(int)
Drawable getDrawable(int)
Ressource distante
Uri.parse("http://domaine.sous_doamine/chemin/nom_du_fichier");
Uri.fromFile(File)
Les applications
Service (android.app.Service)
Elments dinteraction
Intention (android.content.Intent) : permet une application dindiquer ce
quelle sait faire ou de chercher un savoir-faire
Filtre dintentions (<intent-filter> : permet de choisir la meilleure application
pour assurer un savoir-faire
Service
<service>
<intent-filter>
les savoir-faire
</intent-filter>
</service>
Ecouteur dintention
diffuse
<receiver>
<intent-filter>
les savoir-faire
</intent-filter>
</receiver>
Fournisseur de contenu
<provider>
<grant-uri-permission />
<path-permission />
</provider>
Application Android
Une activit = un programme + une interface
Un service = un programme sans interface
Une application =
Activit Android
Classe qui hrite de Activity ou dune classe drive de
Activity (par exemple de MapActivity pour utiliser Google
maps, ListActivity ou TabActivity pour des interfaces
particulires)
On surcharge certaines mthodes qui sont appeles par
Android pour dfinir le comportement (mme principe que
les applets) :
onCreate
onDestroy
onStart
onPause
onResume
onStop
onRestart
lors de la cration
lorsque lactivit se termine
lorsque lactivit dmarre ou redmarre
lorsque lactivit nest plus en premier plan
lorsque lactivit revient en premier plan
lorsque lactivit nest plus visible
lorsque lactivit redevient visible
L'activit
dmarre
onCreate()
L'utilisateur
revient sur
l'activit
onStart()
Le processus
est tu
on Restart()
Active
onResume
L'activit passe
en premier plan
L'activit est
en cours
onPause()
Aprs lexcution de
onResume
Suspendue
Une autre
activit passe
en premier plan
une autre
application a besoin
de la mmoire
Etats principaux :
L'activit passe
en premier plan
Aprs lexcution de
onPause
Arrte
L'activit n'est
plus visible
onStop()
onDestroy()
L'activit est
termine
Aprs lexcution de
onStop
Termine
Aprs lexcution de
onDestroy
Les interfaces
Cration dinterfaces
Par programme (comparable java swing) mais avec
des classes propres Android
Dfinition de conteneurs (un conteneur = un conteneur + un
mode de placement JPanel + Layout)
Dfinition dlments dinteraction (widgets) + placement et
ajout dans les conteneurs
View
ViewGroup
Hirarchie partielle
de classes pour les
interfaces
FrameLayout
DatePicker
TimePicker
ScrollView
HorizontalScrollView
LinearLayout
TableLayout
RadioGroup
RelativeLayout
AdapterView
AbsListView
ListView
GridView
AbsSpinner
Spinner
Gallery
TextView
View
ViewGroup
TextView
EditText
AutoCompleteTextView
Button
CompoundButton
CheckBox
ToggleButton
Lgende
RadioButton
DigitalClock
Chronometer
ImageView
ImageButton
Progressbar
AbsSeekBar
RattingBar
SeekBar
AnalogClock
Espace de
nommage
dAndroid
(impos)
Ailleurs
LayoutInflater decodeur = LayoutInflater.from(contexte);
View vue = decodeur.inflate(R.layout.nom_du_fichier_xml, parent, false);
contexte est lactivit qui gre cette interface
parent est le contenant dans lequel doit se placer la vue constitue
partir du fichier XML
Il ne reste plus qu ajouter cette vue dans le conteneur.
Pixels (px)
Pouces (in)
Millimtres (mm)
Points (pt) = 1/72 pouce
Pixel densit indpendante (dp) 1 dp = 1 pixel pour un cran
de 160 dpi
Pixel taille indpendante (sp) relatif la taille des polices de
caractres
Les conteneurs
FrameLayout (un seul lment)
AbsoluteLayout (plusieurs lments placs par leur
coordonnes)
LinearLayout (plusieurs lments placs
horizontalement ou verticalement sans ascenseurs)
TableLayout (plusieurs lments en tableau sans
ascenseurs)
RelativeLayout (plusieurs lments placs relativement
les uns aux autres)
ScrollView (un seul lment avec ascenseur vertical)
HorizontalScrollView (un seul lment avec ascenseur
horizontal)
Les groupes
Regrouper des lments participant un choix
ListView (plusieurs lments organiss en liste verticale avec
sparateurs). Souvent utilis pour des listes de mots (type menu).
GridView (plusieurs lments organiss en table). Souvent utilis
pour des tables de mots (type menu).
RadioGroup (groupe de boutons radio dont un seul peut tre coch
la fois)
Gallery (plusieurs lments organises horizontalement avec
dfilement). Souvent utilis pour des images
Fond
android:background couleur ou une image de fond
Taille
android:minHeight et android:minWidth dimensions minimales
</LinearLayout>
Les Contenants
FrameLayout
Ne contient quun seul lment (si on en met
plusieurs ils se superposent)
Proprits supplmentaires :
Contenu
android:foreground Pour dfinir une couleur ou une
image.
android:foregroundGravity Pour positionner limage
LinearLayout
Pour placer plusieurs lments en ligne ou en colonne sans
ascenseur (utiliser ScrollView et/ou HorizontalScrollView).
Proprits supplmentaires :
android:orientation Pour en dfinir le sens du LinearLayout (vertical ou
horizontal)
android:layout_weightSum Un paramtre de type : android:layout_weight
peut tre associ chacun des lments placs dans le LinearLayout
pour indiquer leur poids de redimensionnement relatif la valeur de
layout_weightSum.
Par exemple : android:layout_weightSum= "100" permettra de placer 2
lments ayant android:layout_weight = "60"
et android:layout_weight = "40"
AbsoluteLayout
Pour placer les lments par positions fixes.
Chaque lment ajout dans un AbsoluteLayout
indiquera sa position en mettant dans ses
proprits :
android:layout_x="unit"
android:layout_y="unit"
TableLayout
Pour placer des lments en tableau sans ascenseurs (pour en avoir
le mettre dans un ScrollView et/ou un HorizontalScrollView).
Proprits supplmentaires :
android:collapseColumns Pour dfinir les numros de colonnes cacher
android:shrinkColumns Pour dfinir les numros de colonnes qui peuvent
tre rtrcies en fonction de la place disponible
android:stretchColumns Pour dfinir les numros de colonnes qui peuvent
tre agrandies en fonction de leur contenu
/>
<EditText android:id="@+id/nom"
/>
<Button android:id="@+id/envoyer"
/>
</TableRow>
<TableRow>
<ProgressBar android:id="@+id/attente"
android:layout_span="2"
/>
<Button android:id="@+id/annuler"
android:text="Abandonner"
/>
</TableRow>
</TableLayout>
RelativeLayout
Permet de placer des lments les uns relativement aux autres
Placement par rapport au conteneur
android:layout_alignParentBottom="b" (o b vaut true ou false)
android:layout_alignParentLeft="b" (o b vaut true ou false)
android:layout_alignParentRight="b" (o b vaut true ou false)
android:layout_alignParentTop="b" (o b vaut true ou false)
android:layout_centerHorizontal="b" (o b vaut true ou false)
android:layout_centerInParent="b" (o b vaut true ou false)
android:layout_centerVertical="b" (o b vaut true ou false)
/>
<ProgressBar android:id="@+id/attente"
android:layout_below="@+id/nom"
/>
<Button android:id="@+id/annuler"
android:layout_toRightOf="@+id/attente"
android:layout_below="@+id/nom"
/>
</RelativeLayout>
ScrollView et HorizontalScrollView
En gnral utiliss pour ajouter des ascenseurs un
conteneur.
Ne peuvent contenir quun seul lment (le plus souvent
un conteneur).
Proprits supplmentaires :
android:fillViewport="b" (o b vaut true ou false) indique si le
contenu doit tre tir pour occuper la place disponible ou pas
Les Groupes
ListView
Place les lments en liste verticale et ajoute un ascenseur
si ncessaire
Sparateurs
android:divider Pour dfinir la couleur des sparateurs ou pour utiliser
une image comme sparateur.
android:dividerHeight="unit" Pour dfinir la hauteur des sparateurs
(mme sils contiennent une image)
Type de choix
android:choiceMode="c" (o c peut prendre les valeurs : none,
singlechoice, multipleChoice) pour indiquer le mode de choix dans la
liste (aucun, un seul, plusieurs).
ListView (contenu)
En XML (texte seulement)
android:entries="@array/maliste" dfinit le
contenu de la liste partir du contenu d'un
fichier xml plac dans res/values/ et qui a la
forme :
<item>dernier lment</item>
</string-array>
</resources>
Exemple de ListView
En XML
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/liste_de_planetes
android:entries ="@array/planetes"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@drawable/separateur"
android:dividerHeight="25px"
android:choiceMode="multipleChoice"
/>
<string-array name="planetes">
<item>Mercure</item>
<item>Neptune</item>
</string-array>
Dans le code
ListView liste = (ListView) findViewById(R.id.liste_de_planetes);
String[] elements = getResources().getStringArray(R.array.planetes);
ArrayAdapter<String> adaptateur = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice);
for (int i=0; i<elements.length; i++) adaptateur.add(elements[i]);
liste.setAdapter(adaptateur);
GridView
RadioGroup
Pour grouper des boutons radio (ajoute un ascenseur si ncessaire)
Un seul bouton peut tre coch la fois (attention ltat initial qui
nest pris en compte par le RadioGroup que sil est fait par la
mthode check du RadioGroup)
Exemple de fichier XML :
<RadioGroup
android:id="@+id/groupe_de_boutons"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<RadioButton
/>
<RadioButton
/>
</RadioGroup>
Gallery
Normalement utilis pour faire des galeries dimages avec
dfilement horizontal
Proprits supplmentaires
android:animationDuration Pour dfinir la dure de la transition (en ms)
lorsque l'on passe d'un lment l'autre
android:unselectedAlpha Pour dfinir la transparence des lments non
slectionns
Pour remplir une galerie il faut un Adapter (comme pour ListView) mais
que lon doit crire par hritage de la classe BaseAdapter puis
lassocier la galerie par la mthode setAdapter
Exemple de fichier XML :
<Gallery android:id="@+id/magalerie"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:unselectedAlpha="0.5"
/>
Taille
android:layout_height="t" (o t peut tre une unit ou prendre les valeurs
FILL_PARENT ou WRAP_CONTENT)
android:layout_width="t" (o t peut tre une unit ou prendre les valeurs FILL_PARENT ou
WRAP_CONTENT)
Marges externes
android:layout_marginBottom="unit" marge externe en bas
android:layout_marginLeft="unit" marge externe gauche
android:layout_marginRight="unit" marge externe droite
android:layout_marginTop="unit" marge externe en haut
ImageView
Permet dafficher des images
Proprits :
Contenu
android:src Pour dfinir une couleur ou une image.
android:tint Pour dfinir une couleur qui teinte l'image
Taille
android:maxHeight Pour dfinir la hauteur maximale
android:maxWidth Pour dfinir la largeur maximale
ImageView Exemples
<ImageView android:id="@+id/image"
android:src="@drawable/keithwembley"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxHeight="200px"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
/>
<ImageView android:id="@+id/image"
android:src="@drawable/keithwembley"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxHeight="200px"
android:adjustViewBounds="true"
android:scaleType="fitXY"
/>
TextView et EditText
Proprits :
Dimensions de texte
android:ems Pour dfinir la taille du texte en caractres
android:maxems Pour dfinir le nombre de caractres des lignes du texte
android:height="unit"
android:maxheight="unit"
android:minheight="unit"
android:width="unit"
android:maxwidth="unit"
android:minwidth="unit"
TextView et EditText
Contenu
android:text="texte a afficher"
android:hint="initial" dfinit le texte afficher quand la zone est vide
TextView et EditText
Comportement du texte
android:autoLink="a" (o a peut tre : none, web, email, phone, map ou all) indique
si les liens de ce type apparaissant dans le texte sont automatiquement rendus
cliquables.
android:autoText Pour valider ou pas le mode correction du texte
android:capitalize="c" (o c peut tre : none, sentences, words, characters) indique
le type de saisies que le texte mmorise et peut re-proposer.
android:digits Pour indiquer si la saisie n'accepte que du numrique ou pas
android:numerics="x" (o x peut tre integer, signed, decimal) dfinit le mode de
saisie numrique
android:password pour cacher ou pas le texte lors d la saisie
android:phonenumber Pour indiquer si la saisie n'accepte que des n0s de tlphone
android:inputType Pour dfinir le mode de saisie (none, text, textCapCharacters,
textCapWords, textCapSentences, textAutoCorrect, textAutoComplete,
textMultiLine, textUri, textEmailAddress, textEmailSubject, textShortMessage,
textLongMessage, textPersonName, textPostalAddress, textPassword,
textVisiblePassword, textWebEditText, textFilter, textPhonetic,
textWebEmailAddress, textWebPassword, number, numberDecimal,
numberPassword, phone, datetime, date ou time)
TextView et EditText
Affichage
android:cursorVisible Pour rendre visible ou non le curseur
android:editable Pour autoriser ou pas la modification du texte
android:ellipsize="e" (o e peut tre : none, start, middle, end, marquee)
dfinit le mode de csure du texte
android:linksClickable Pour rendre ou pas les liens cliquables
android:textIsSelectable pour autoriser/interdire la slection de texte
Couleurs et images
android:textColor Pour dfinir une couleur au texte
android:textColorHighlight Pour dfinir une couleur de surlignage du texte
android:textColorHint Pour dfinir une couleur au texte par dfaut
android:textColorLink Pour dfinir une couleur aux liens du texte
android:drawableBottom Pour dfinir une couleur ou une image de fond au
texte
AutoCompleteTextView
Cest une spcialisation de EditText pour apporter lauto
compltion
Proprits supplmentaires:
android:completionHint="texte" texte affich en titre du menu droulant
android:completionThreshold Pour dfinir le nombre de caractres taper avant
que la compltion n'entre en action.
android:dropDownHeight="unit" on peut aussi utiliser les constantes fill_parent et
wrap_content, dfinit la hauteur du menu droulant
android:dropDownWidth="unit" on peut aussi utiliser les constantes fill_parent et
wrap_content, dfinit la hauteur du menu droulant
android:dropDownHorizontalOffset Pour dfinir le dcalage horizontal du menu
droulant
android:dropDownVerticalOffset Pour dfinir le dcalage vertical du menu droulant
Les boutons
Button
Mmes paramtres que TextView
ImageButton
Mmes paramtres que ImageView cd :
android:src="couleur" pour dfinir une couleur ou une image
android:adjustViewBounds Pour indiquer si la taille du bouton doit ou pas tre
ajuste celle de l'image
android:baselineAlignBottom Pour indiquer que l'image est place ou pas en
bas de la zone
android:cropToPadding Pour indiquer si l'image sera coupe ou pas si elle est
plus grande que la taille disponible
android:scaleType="s" (o s peut prendre les valeurs : matrix, fitXY, fitStart,
fitCenter, fitEnd, center, centerCrop, centerInside) permet de
redimensionner ou pas l'image la taille disponible et/ou de la dformer.
android:maxHeight Pour dfinir la hauteur disponible
android:maxWidth Pour dfinir la largeur disponible
android:tint Pour dfinir une couleur qui teinte l'image
CheckBox
RadioButton
ToggleButton
android:disabledAlpha pour dfinir la transparence applique lorsque le bouton est inactif
android:textOff Pour dfinir le texte quand le bouton n'est pas allum
android:textOn Pour dfinir le texte quand le bouton n'est pas allum
<item>Neptune</item>
</string-array>
</resources>
TimePicker
ProgressBar
Deux comportements selon que lon connat ou pas la valeur
maximale
android:indeterminate Pour dfinir le type de progressBar (true=indtermin,
false=dtermin).
Dimensions
android:maxHeight="unit"
android:minHeight="unit"
android:maxWidth="unit"
android:minWidth="unit"
SeekBar
C'est un ProgressBar sous forme de barre horizontale dote d'un
curseur permettant de modifier la valeur si on a choisi
android:indeterminate="false"
RatingBar
Paramtres :
android:isIndicator Pour indiquer si l'utilisateur peut modifier la
valeur ou pas (true= non modifiable)
android:numStars Pour dfinir le nombre d'toiles affiches
android:rating Pour dfinir la position initiale
android:stepSize Pour dfinir le pas de progression (on peut
colorier des dtoiles par exemple)
Horloges et Chronomtres
AnalogClock
DigitalClock
Chronometer
android:format="f" (o f est une chane dans laquelle la premire
occurrence de %s sera remplace par la valeur du chronomtre
sous la forme MM:SS ou H:MM:SS)
Evnements gnraux
Evnement
Association
Classe
Mthode
Paramtres
Clic
setOnClickListener
View.OnClickListener
Clic long
setOnLongClickListener
onLongClick(View)
View.OnLongClickListener lment concern
Clavier
setOnKeyListener
View.OnKeyListener
Touch
setOnTouchListener
View.OnTouchListener
onClick(View)
lment concern
Evnements spcifiques
ListView , GridView et Gallery
Evnement
sur un
lment
Clic
Association
Classe
setOnItemClickListener
AdapterView.OnItemClickListener
Clic long
setOnItemLongClickListener
AdapterView.OnItemLongClickListener
Slection
setOnItemSelectedListener
AdapterView.OnItemSelectedListener
Mthode
Paramtres
onItemClick(AdapterView, View,
int, long)
Gestionnaire de contenu
lment concern
Rang de llment
Identifiant de llment
onItemLongClick(AdapterView,
View, int, long)
Idem
onItemSelected (AdapterView,
View, int, long)
Idem
onNothingSelected(AdapterView)
Evnements spcifiques
Spinner et AutoCompleteTextView
Evnement
sur un
lment
Slection
Association
Classe
setOnItemSelectedListener
AdapterView.OnItemSelectedListener
Mthode
Paramtres
onItemSelected (AdapterView,
View, int, long)
Elment permettant le choix
lment concern
Rang de llment
Identifiant de llment
onNothingSelected(AdapterView)
Evnements spcifiques
TextView et EditText
Evnement
Association
Classe
Modification
Saisie
addTextChangedListener
TextChangedListener
setKeyListener
KeyListener
Mthode
Paramtres
onEditorAction(TextView, int, KeyEvent)
Elment concern
EditorInfo.IME_NULL (si touche Entre)
Evnement clavier (si touche Entre)
Evnements spcifiques
DatePicker
Evnement
de choix
Choix
Association
Classe
init
DatePicker.OnDateChangedListener
Mthode
Paramtres
onDateChanged(DatePicker,
int, int, int)
Elment concern
Anne
Mois
Jour
TimePicker
Evnement
de choix
Choix
Association
Classe
setOnTimeChangedListener
TimePicker.OnTimeChangedListener
Mthode
Paramtres
onTimeChanged(TimePicker
, int, int)
Elment concern
Heure
Minutes
Evnements spcifiques
SeekBar
Evnement
Association
Classe
Curseur
dplac
setOnSeekBarChangeListener
SeekBar.OnSeekBarChangeListener
Mthode
Paramtres
onProgressChanged(
SeekBar, int, boolean)
Elment concern
Position du curseur
Action de lutilisateur
Dbut de
dplacement
onStartTrackingTouch(
SeekBar)
Fin de
dplacement
onStopTrackingTouch(
SeekBar)
Elment concern
Elment concern
Evnements spcifiques
RatingBar
Evnement
Valeur
modifie
Mthode
Paramtres
onRatingChanged(RatingBar,
setOnRatingBarChangeListener
RatingBar.OnRatingBarChangeListener float, boolean)
Elment concern
Association
Classe
Valeur choisie
Action de lutilisateur
Chronometer
Evnement
Incrmentation
Association
Classe
Mthode
Paramtres
onChronometerTick(
setOnChronometerTickListener
Chronometer)
Chronometer.OnChronometerTickListener Elment concern
Notifications
La classe Toast
Texte qui apparat en premier plan puis disparat au bout
d'un temps donn
Menus
Menus
Deux types
Menu gnral de lactivit
Menu contextuel associ un lment dinterface
</menu>
Sous menus
Chaque lment dun menu peut proposer des sous
menus
Dcrits dans le fichier XML sous la forme :
<item android:id="@+id/nom_du_choix_N"
android:icon="@drawable/image_du_choix_N"
android:title="@string/texte_du_choix_N">
<menu>
<item android:id="@+id/nom_du_sous_choix_1"
android:title="texte_du_sous_choix_1" />
</menu>
</item>
Menu gnral
Apparat par appui de la touche Menu
Cration dans la mthode
onCreateOptionMenu de l'activit partir
du fichier xml de description du menu sous
la forme :
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.nom_du_fichier_xml_du_menu, menu);
return true;
}
Menu gnral
Ractions aux choix
Dans la mthode onOptionsItemSelected de l'activit qui est
appele lorsque l'utilisateur fait un choix dans un menu ou un sous
menu gnral :
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.nom_du_choix_1:
// traitement du choix 1
return true;
case R.id.nom_du_sous_choix_1:
// traitement du sous choix 1
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Menu contextuel
Apparat par appui long sur llment dinterface
Associ llment dinterface par la mthode :
registerForContexMenu(element_associe_au_menu_contextuel);
Menu contextuel
Ractions aux choix
Dans la mthode onContextItemSelected de l'activit qui est
appele lorsque l'utilisateur fait un choix dans un menu ou un sous
menu contextuel :
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.nom_du_choix_1:
// traitement du choix 1
return true;
case R.id.nom_du_sous_choix_1:
// traitement du sous choix 1
return true;
Couleurs et images
La classe Color
Diffrente de celle de java
argb(int, int, int, int) renvoie le code de la couleur dfinie par les 4
paramtres (transparence, rouge, vert, bleu). Le 1er paramtre peut
tre omis pour obtenir une couleur opaque.
alpha(int) renvoie la transparence de la couleur dont le code est pass
en paramtre
red(int) renvoie la composante rouge de la couleur dont le code est
pass en paramtre
green(int) renvoie la composante verte de la couleur dont le code est
pass en paramtre
blue(int) renvoie la composante bleue de la couleur dont le code est
pass en paramtre
Couleurs prdfinies
Color.BLACK, Color.WHITE
Color.LTGRAY, Color.GRAY, Color.DKGRAY
Color.RED, Color.GREEN, Color.BLUE
Color.CYAN, Color.MAGENTA, Color.YELLOW
Color.TRANSPARENT
La classe Drawable
Classe de tout ce qui peut se dessiner (dont les
images)
Quelques types :
Bitmap : image PNG ou JPEG
Nine Patch : extension de PNG permettant dindiquer comment
la dformer. Le SDK propose un utilitaire draw9path plac dans
le rpertoire tools
Shape : dessin
Layers : calques
States : image ayant plusieurs tats (aspects) par exemple pour
avoir un aspect diffrent quand slectionn, actif
La classe BitmapDrawable
Spcialisation de Drawable pour les images
La classe BitmapFactory
Permet de crer des images depuis diverses sources
Un tableau doctets (decodeByteArray)
Un fichier (decodeFile)
Une ressource (decodeResource)
Un flux (decodeStream)
Mode implicite :
On dcrit lactivit lancer et Android recherche une activit
correspondant cette description (par exemple un navigateur
web)
Invocation implicite
Activit
Intent
Intent
Android
Appelante
Filtre
Filtre
Activit
Activit
Filtre
Activit
choisie
Intention diffuse
Intent
Filtre
Filtre
Ecouteur
dintentions
diffuses
Ecouteur
dintentions
diffuses
Android
Filtre
Ecouteur
dintentions
diffuses
LIntent
Informe sur les intentions de lactivit ou du service
recherch par 3 lments :
Action
Chane de caractres qui indique le type daction recherch (par
exemple appel tlphonique)
Catgorie
Chane de caractres qui indique la catgorie de lactivit recherche
(par exemple CATEGORY_LAUNCHER indique une activit
propose comme excutable par Android (icne de lancement))
Donne ou Type
Chane de caractres et Uri qui indiquent la donne transmise
lactivit lance (par exemple le nde tlphone) ou le type de
rponse attendu
Construction
Intent(String) : avec action
Intent(String, Uri) :avec action et Uri
Ajout de catgorie
addCategory(String) ajoute une catgorie
setDataAndType(Uri, String) dfinit lUri et le type mime des donnes
Comparaison
filterEquals(Intent) renvoie true si le paramtre correspond au mme filtre
Contenu
Paramtres
putExtra(nom, valeur) ajoute un paramtre associ un nom
getxxxExtra(nom) renvoie le paramtres correspondant au nom (xxx dpend du
type de paramtre : Int, String, StringArray )
Filtres dintentions
Forme gnrale :
<activity android:name=".Nom_De_La_Classe_De_L_Activit"
>
<intent-filter>
<action android:name=nom_d_action_1 />
.
<action android:name=nom_d_action_N />
<category android:name=nom_de_categorie_1 />
<intent-filter>
</intent-filter>
</activity>
Filtrage dintentions
En mode explicite il ny a aucun filtrage
Lobjet Intent de lappelant est transmis lappel
Actions
Catgories
android.intent.category.DEFAULT activit pouvant tre lance explicitement
android.intent.category.BROWSABLE peut afficher une information dsigne par
un lien
android.intent.category.LAUNCHER activit propose au lancement par
Android
android.intent.category.TAB activit associe dans un onglet dinterface
(TabHost)
Exemple
}
}
getBoolean(String)
getInt(String)
getBooleanArray(String)
getBooleanExtra(String)
getIntExtra(String)
getBooleanArrayExtra(String)
Permissions
Elles concernent :
La golocalisation (GPS)
Les accs aux contacts et l'agenda du tlphone
Les modifications de paramtres (orientation, fond dcran )
Les appels tlphoniques
Lenvoi et rception de SMS/MMS
Laudio
Le rseau (dont laccs Internet)
Le matriel (bluetooth, appareil photo, )
Tlphonie (appel)
Permettre lutilisateur dappeler un ncompos
Uri numero = Uri.parse("tel:0559574320");
Intent composer = new Intent(Intent.ACTION_DIAL, numero);
startActivity(composer);
Appeler directement un n
Uri numero = Uri.parse("tel:0559574320");
Intent appeler = new Intent(Intent.ACTION_CALL, numero);
startActivity(appeler);
</intent-filter>
</receiver>
2.
Le rythme
La distance minimale
3.
4.
Appareil photo
La classe Camera permet la prise de photo par takePicture en
associant un couteur dvnement pour rcuprer la photo en raw
ou JPEG. La mthode onPictureTaken de cet couteur est appel
quand la photo est faite, limage est reue en tableau doctets.
Ncessite une prvisualisation par un objet de classe SurfaceView
dans linterface auquel on associe un couteur dvnements pour :
Dmarrer/arrter lappareil photo (mthodes open et release de la
classe Camera)
Lancer/arrter la prvisualisation (mthodes startPreview et
stopPreview de la classe Camera)
Capteurs
Les types de capteurs disponibles sont les
suivants (selon le modle certains capteurs
peuvent ne pas tre disponibles) :
Acclromtre (acclration du priph sur 3 axes)
Gravit (composante de la gravit selon les 3 axes)
Gyroscope (vitesse angulaire de rotation du priph
sur 3 axes)
Lumire (luminosit ambiante)
Champ magntique (champ magntique ambiant
sur 3 axes)
Orientation (angles du priph par rapport aux 3
axes)
Pression (pression exerce sur lcran tactile)
Proximit (dtection de proximit souvent binaire)
Temprature (temprature ambiante)
SENSOR_DELAY_NORMAL
SENSOR_DELAY_UI (adapt pour interfaces)
SENSOR_DELAY_GAME (adapt pour jeux)
SENSOR_DELAY_FASTEST.
Multimdia
Audio
Crer un MediaPlayer :
MediaPlayer lecteur = MediaPlayer.create(Context, int)
Le premier paramtre est l'activit elle-mme
Le second paramtre est l'identificateur du fichier son obtenu par :
R.raw.nom_du_fichier_son
Utiliser le MediaPlayer :
lecteur.start() pour jouer le son
lecteur.pause() pour suspendre le son, il sera repris par start()
lecteur.stop() pour arrter le son, il sera repris par :
lecteur.reset();
lecteur.prepare();
lecteur.start();
MediaPlayer (utilisation)
Configuration
Controle
Etat
MediaPlayer (vnements)
Evnements
setOnCompletionListener(MediaPlayer.OnCompletionListener) associe un
couteur d'vnements
onCompletion(MediaPlayer) appele lorsque le mdia se termine
setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener)
associe un couteur d'vnements
onBufferingUpdate(MediaPlayer, int) appele lors de la mise jour du buffer.
Le second paramtre est le pourcentage de remplissage du buffer.
setOnPreparedListener(MediaPlayer.OnPreparedListener) associe un
couteur d'vnements
onPrepared(MediaPlayer) appele lorsque le MediaPlayer est prt.
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener)
associe un couteur d'vnements
onSeekComplete(MediaPlayer) appele lorsque dplacement dans le mdia
est termin.
Vido
Si on a mis setMediaController, lors dun clic long sur la vue une fentre de
contrle apparat avec :
Un bouton Play/pause
Un bouton Avance rapide
Un bouton Recul rapide
Un curseur indiquant la position courante et permettant de se dplacer
VideoView
Configuration
Controle
start() lancement
pause() mise en pause, reprise par start()
seekTo(int) dplacemant dans le mdia, le paramtre est un temps en ms partir du dbut
stopPlayback() arrt dfinitif ne sera pas relanc par start()
Etat
Evnements
Synthse de parole
Crer un synthtiseur :
parle = new TextToSpeech(activit, new SynthPret());
Synthtiser un texte :
parle.speak(texte a dire, TextToSpeech.QUEUE_FLUSH, null);
TextToSpeech
Rglages :
setSpeechRate(float) permet de rgler la vitesse de synthse (1 normal,
<1 plus lent, >1 plus rapide)
setPitch(float) permet de rgler la tonalit (1 normal, <1 plus grave, >1
plus aigu)
Internet
Vido :
La seule chose qui change cest lUri qui dsigne le mdia
Uri chemin = Uri.parse("http://domaine. sous_domaine /rep1/nom_video.3gp");
Services WEB
De coordonnes GPS
Dun nom (par exemple : "parc Montaury, Anglet
Coordonnes GPS
Nom de pays
Nom de ville
Code postal
Adresse complte (n, rue, )
Localisation
Cration
Geocoder(activit, Locale) le second paramtre indique la zone gographique
concerne, il peut prendre les valeurs (Locale.FRANCE, Locale.CANADA,
Locale.UK, Locale.US ). Omis si l'on ne souhaite pas limiter la localisation.
Recherches
getFromLocation(double, double, int) renvoie les adresses connues proches du
point dfini par ses coordonnes gographiques (latitude et longitude exprimes
en degrs). Le dernier paramtre permet de limiter la taille de la liste.
getFromLocationName(String, int) renvoie les adresses connues proches dun
point dfini par un nom (chane du type "parc Montaury, 64600, Anglet"). Le
second paramtre permet de limiter la taille de cette liste.
getFromLocationName(String, int, double, double, double, double) fonctionne
comme la prcdente mais permet de limiter la zone de recherche un rectangle.
longitude et latitude du coin infrieur gauche de ce rectangle et longitude et
latitude du coin suprieur droit.
Toutes ces mthodes renvoient une liste (classe List de java) contenant des objets
de classe Address
La classe Address
Construction
Address(Locale) le paramtre indique la zone gographique concerne, il
peut prendre les valeurs (Locale.FRANCE, Locale.CANADA,
Locale.UK, Locale.US ). Ce dernier paramtre peut tre omis si l'on
ne souhaite pas limiter la localisation.
Contenu
Obtention :
par la mthode getController() de l'objet MapView
Utilisation :
Obtention :
par la mthode getProjection() de l'objet MapView
Utilisation :
fromPixels(int, int) renvoie un GeoPoint avec les coordonnes du point dsign
par sa position en pixels dur la carte affich (x et y)
Formatage du texte
SpannableStringBuilder
Les widgets contenant du texte hritent de TextView
Les mthodes dajout de texte (setText et append) prennent en
paramtre un CharSequence
String hrite de CharSequence mais le format est alors celui associ
au widget (dans le XML par exemple)
Pour formater le texte on utilise SpannableStringBuilder qui hrite
de CharSequence mais permet de dfinir zone par zone :
La police
La taille
Ltirement horizontal
La couleur du fond et du texte
Le style (gras, italique )
Le soulignement
Texte format
Et le reste ?
Beaucoup de choses ont t vues mais beaucoup ne lont pas t :
Ecriture de services
Ecriture de fournisseurs de contenu
Ecriture dcouteurs dintensions diffuses
Interfaces onglets ou liste (une activit est associe chaque onglet
ou lment de la liste)
Cration de composants dinterface personnaliss
Ecriture de pilotes permettant de modifier linterface depuis lextrieur
de lactivit
Animations des vues
Persistance des donnes (SQLite)
Communication par rseau (sockets , HTTP, SOAP, REST )
Srialisation (Parcelable , JSON)
Graphisme en 2D et 3D (openGL)
Utilisation du Bluetooth
Internationalisation des applications