Академический Документы
Профессиональный Документы
Культура Документы
pour Android
Les applications
(Activits)
Dveloppement dapplications
pour Android
Production de logiciel
AndroidManifest Constitution de
l'application
Chane de compilation
Code source Binaire Dalvik
java Bytecode Application
.dex
.java .class .apk
Ressources
Tlchargement
Machine
IDE virtuelle
Eclipse SDK Dalvik
ou Android Terminal
Netbeans + API
+ outils Android
plugins
Environnement d'excution
Environnement de dveloppement
Dvelopper pour Android
Les interfaces et les constantes sont dfinies dans des fichiers XML
Facilite la modification
Statique
Les ressources sont tlcharges avec lapplication
Les fonctionnalits sont dans le code
Lien avec ce qui est dfini en XML
Accs aux ressources
LAPI nest pas totalement celle de java (classes redfinies (par
exemple Color), interfaces, couteurs )
La syntaxe des fichiers XML est extensible difficile de savoir ce
qui est prdfini
Les proprits dfinies en XML peuvent tre contradictoires
Linterface ne peut tre utilise que par lactivit qui la cre
Difficile de dvelopper sans un environnement adquat (Eclipse ou
Netbeans) en raison des fichiers gnrs
La pr-visualisation des interfaces par Eclipse nest pas toujours
conforme (ascenseurs, contenu dfini dans le code )
Le SDK Android
Tlchargeable sur :
developper.android.com/sdk
sous la forme dun zip ou dun fichier
dinstallation
Nom
SDK
Paquetage
(au moins 2 niveaux)
Dvelopper avec Eclipse
Paramtrage:
Nom
SDK
Taille carte SD
Format dcran
Matriel
Terminal virtuel ou smartphone
Terminaux connects
Terminaux disponibles
Le terminal virtuel
Contrle du terminal (DDMS)
Processus
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".DemoCoursActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Drawable monImage =
getResources().getDrawable(R.drawable.nom_de_l_image)
Uri (Uniform Resource Identifiers)
Dsigne des ressources locales ou distantes
(plus gnral que les URL car non li un
protocole rseau)
Cration
Ressource locale
Uri.parse("android.resource://nom_du_paquetage_de_l_activit/" +
R.chemin.mon_son);
Ressource distante
Uri.parse("http://domaine.sous_doamine/chemin/nom_du_fichier");
Uri.fromFile(File)
Service (android.app.Service)
Programme qui fonctionne en tche de fond sans interface
Elments dinteraction
Intention (android.content.Intent) : permet une application dindiquer ce
quelle sait faire ou de chercher un savoir-faire
Une application =
Une activit principale
Eventuellement une ou plusieurs activits secondaires
Eventuellement un ou plusieurs services
Eventuellement un ou plusieurs couteurs dintentions diffuses
Eventuellement un ou plusieurs fournisseurs de contenu
Contenu du fichier AndroidManifest
<?xml version="1.0" encoding="utf-8"?> <service>
<manifest> <intent-filter>
Pour chaque service . . .
<uses-sdk />
</intent-filter>
<uses-permission /> Gnral
</service>
<application> <receiver>
<activity> Pour chaque <intent-filter>
<intent-filter> couteur ...
<action /> dintentions </intent-filter>
diffuses </receiver>
<category />
<provider>
<data /> Pour chaque
fournisseur de <grant-uri-
</intent-filter> permission />
contenu
</activity> </provider>
Pour chaque activit <uses-library />
</application>
</manifest>
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)
Le processus
est tu
onResume Active
L'activit passe
en premier plan Aprs lexcution de
L'activit est
en cours onResume
Une autre
activit passe
Suspendue
Aprs lexcution de
en premier plan
une autre
application a besoin
de la mmoire
onPause()
L'activit passe
en premier plan onPause
Arrte
L'activit n'est
plus visible
Aprs lexcution de
onStop()
onStop
Termine
onDestroy() Aprs lexcution de
onDestroy
L'activit est
termine
Les interfaces
Pensez vos interface pour un
smartphone
Ecran tactile de petite taille
Eviter les interfaces trop touffues (on ne peut pas agrandir lcran
comme on agrandit une fentre)
Eviter les lments cliquables trop petits (il faut pouvoir cliquer avec le
doigt mme si on a des gros doigts)
Eviter les lment cliquables trop tasss (il faut pouvoir cliquer sur le
bon lment mme si on vise mal)
interfaces
TableLayout
RadioGroup
RelativeLayout
AdapterView
AbsListView
ListView
GridView View
ViewGroup
AbsSpinner
Spinner
TextView
Gallery
TextView
EditText
AutoCompleteTextView
Button
CompoundButton
CheckBox
ToggleButton Lgende
RadioButton
DigitalClock
Chronometer
Trait double = conteneurs ou groupes
Gris = lments dinteraction (wigets)
ImageView
ImageButton
Progressbar
AbsSeekBar
RattingBar
SeekBar
AnalogClock
Dfinir une interface en XML
Dfinition de linterface Espace de
nommage
<?xml version="1.0" encoding="utf-8"?> dAndroid
<!-- Commentaire
(impos)
-->
<Classe_du_conteneur_principal
xmlns:android="http://schemas.android.com/apk/res/android"
proprits du conteneur principal
>
<Classe de conteneur ou d'lment d'interface Lorsquil sagit
proprits du conteneur ou de l'lment d'interface dun conteneur il
/> doit tre dcrit
avec son contenu
<Classe de conteneur ou d'lment d'interface
proprits du conteneur ou de l'lment d'interface
/>
</Classe_du_conteneur_principal>
Dfinir une interface en XML
Description dun conteneur de linterface
<Classe_de_conteneur
proprits du conteneur Pour chaque
> conteneur
<Classe de conteneur ou d'lment d'interface
proprits du conteneur ou de l'lment d'interface
/>
</Classe_du_conteneur>
Crer une interface partir dun
fichier XML
Dans lactivit principale
setContentView(R.layout.nom_du_fichier_xml)
Ailleurs
LayoutInflater decodeur = LayoutInflater.from(contexte);
View vue = decodeur.inflate(R.layout.nom_du_fichier_xml, parent, false);
Proprits supplmentaires :
android:orientation Pour en dfinir le sens du LinearLayout (vertical ou
horizontal)
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
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
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)
<?xml version="1.0" encoding="utf-8"?>
En XML (texte seulement) <resources>
<string-array name="maliste">
android:entries="@array/maliste" dfinit le
<item>premier lment</item>
contenu de la liste partir du contenu d'un <item>deuxime lment</item>
fichier xml plac dans res/values/ et qui a la
forme : <item>dernier lment</item>
</string-array>
</resources>
Dans le code (lments quelconques)
On utilise un gestionnaire de contenu (Adapter)
setAdater(Adapter) pour associer la ListView
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
Fonctionne comme ListView mais permet une prsentation en plusieurs colonnes
Exemple
Dans le XML dinterface
<GridView 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:numColumns="2"
android:stretchMode="columnWidth"
android:columnWidth="60dp"
android:gravity="fill_horizontal"
android:choiceMode="multipleChoice"
/>
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
Placement des composants d'interface
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
TextView est normalement utilis pour afficher un texte
tandis que EditText lest pour saisir du texte
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
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
Les lments deux tats
Ils ont les mmes paramtres que TextView auxquels
vient sajouter la dfinition de ltat initial :
android:checked="b" o b vaut true ou false Pour dfinir ltat initial
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
Liste de choix (Spinner)
Affiche le choix actuel et affiche un RadioGroup
quand on clique dessus pour le changer
Proprits :
android:prompt Pour dfinir le titre de la fentre qui s'ouvre lorsque l'on fait un choix
android:entries="@array/maliste" dfinit le contenu de la liste partir du contenu d'un
fichier xml plac dans res/values/ qui a la forme suivante :
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"
sinon le curseur ne marche pas et la barre bouge sans arrt.
RatingBar
Paramtres :
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)
Les vnements (interaction)
Traitement des vnements
Tous les lments dinterface (conteneurs et widgets)
possdent les mthodes suivantes :
setOnClickListener(View.OnClickListener) associe un couteur
d'vnements aux clics sur la vue
setOnLongClickListener(View.OnLongClickListener) associe un couteur
d'vnements aux clics longs sur la vue
setOnKeyListener(View.OnKeyListener) associe un couteur
d'vnements aux actions clavier sur la vue
setOnTouchListener(View.OnTouchListener) associe un couteur
d'vnements aux touchs sur la vue
TimePicker
Evnement Association Mthode
de choix
Classe Paramtres
setOnTimeChangedListener onTimeChanged(TimePicker
TimePicker.OnTimeChangedListener , int, int)
Choix
Elment concern
Heure
Minutes
Evnements spcifiques
SeekBar
Evnement Association Mthode
Classe Paramtres
Curseur onProgressChanged(
dplac SeekBar, int, boolean)
Elment concern
setOnSeekBarChangeListener Position du curseur
SeekBar.OnSeekBarChangeListener Action de lutilisateur
Dbut de onStartTrackingTouch(
dplacement SeekBar)
Elment concern
Fin de onStopTrackingTouch(
dplacement SeekBar)
Elment concern
Evnements spcifiques
RatingBar
Evnement Association Mthode
Classe Paramtres
Valeur setOnRatingBarChangeListener onRatingChanged(RatingBar,
modifie RatingBar.OnRatingBarChangeListener float, boolean)
Elment concern
Valeur choisie
Action de lutilisateur
Chronometer
Evnement Association Mthode
Classe Paramtres
Incrmentation 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
Cration d'un Toast
Toast.makeText(Context, String, int) renvoie l'objet de classe Toast cr.
Le premier paramtre est l'activit
Le deuxime paramtre est le message afficher
Le dernier paramtre indique la dure d'affichage les seules valeurs possibles
sont : Toast.LENGTH_SHORT (2 secondes) ou Toast.LENGTH_LONG (5
secondes).
Positionnement d'un Toast
setGravity(int, int, int) appele avant l'affichage par show pour indiquer o
s'affichera le message.
Le premier paramtre sert placer le message par rapport l'cran. Il peut
prendre l'une des valeurs dfinies dans la classe Gravity soit : Gravity. (TOP,
BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL,
CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL).
Les deux paramtres suivants indiquent le dcalage (en pixels).
Affichage d'un Toast
show() affiche le message pour la dure dfinie lors de sa cration.
Menus
Menus
Deux types
Menu gnral de lactivit
Menu contextuel associ un lment dinterface
Contiennent des rubriques sous la forme texte et/ou image
Dcrits par un fichier XML plac dans res/menu (rpertoire
crer) de la forme :
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/nom_du_choix_1"
android:icon="@drawable/image_du_choix_1"
android:title="@string/texte_du_choix_1" />
<item />
</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 :
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)
Ces crations utilisent des options (BitmapFactory.Options)
inSampleSize pour rduire limage
inScaled pour redimensionner limage
inDither pour autoriser ou interdire le tramage
inPugeable pour librer la mmoire occupe par limage
outHeigth, outWidth pour dfinir la taille
Navigation entre activits
Navigation entre activits
Dmarrer une activit
Mode explicite :
On indique la classe de lactivit lancer (par exemple dans une
application multi interfaces)
Cette activit doit tre dclare dans le fichier AndroidManifest.xml
de lapplication par une balise <activity android:name=".classe ">
Mode implicite :
On dcrit lactivit lancer et Android recherche une activit
correspondant cette description (par exemple un navigateur
web)
Activit Intent
Intent Android
Appelante
Filtre Filtre
Filtre
Activit Activit
Activit
choisie
Filtre Filtre
Filtre
Ecouteur Ecouteur
Ecouteur
dintentions dintentions dintentions
diffuses diffuses diffuses
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 />
<category android:name=nom_de_categorie_N />
<data android:mimeType=nom_de_type_mime
android:scheme=protocole://hote:port/chemin />
/>
</intent-filter>
<intent-filter>
</intent-filter>
</activity>
Filtrage dintentions
En mode explicite il ny a aucun filtrage
Lobjet Intent de lappelant est transmis lappel
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)
Lactivit appele place les valeurs de retour dans cet Intent par
putExtra(String, val) comme dj vu pour les paramtres
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, )
Surveiller vos applications
Il est prudent de regarder quelles
permissions demande une application
Appeler directement un n
Uri numero = Uri.parse("tel:0559574320");
Intent appeler = new Intent(Intent.ACTION_CALL, numero);
startActivity(appeler);
Avec type_de_capteur :
Sensor.TYPE_ACCELEROMETER
Sensor.TYPE_GRAVITY
Sensor.TYPE_GYROSCOPE
Sensor.TYPE_LIGHT
Sensor.TYPE_MAGNETIC_FIELD
Sensor.TYPE_ORIENTATION
Sensor.TYPE_PRESSURE
Sensor.TYPE_PROXIMITY
Sensor.TYPE_TEMPERATURE
Mesures par capteurs
Association dun couteur dvnements par :
gestionnaireCapteurs.registerListener(SensorEventListener,
Sensor, int)
Interface SensorEventListener surcharge des mthodes :
void onSensorChanged(SensorEvent) excute chaque fois que le
capteur effectue une nouvelle mesure.
void onAccuracyChanged(Sensor, int) excute si la prcision du
capteur change.
Capteur auquel est associ lcouteur
Rythme des mesures :
SENSOR_DELAY_NORMAL
SENSOR_DELAY_UI (adapt pour interfaces)
SENSOR_DELAY_GAME (adapt pour jeux)
SENSOR_DELAY_FASTEST.
Rcupration des mesures
Par le paramtre de classe SensorEvent de onSensorChanged
SensorEvent a galement :
une proprit timeStamp qui indique linstant de la mesure
une proprit accuracy qui indique la prcision de la mesure :
SENSOR_STATUS_ACCURACY_HIGH
SENSOR_STATUS_ACCURACY_LOW
SENSOR_STATUS_ACCURACY_MEDIUM
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
prepare() initialisation du player
release() libre les ressources du player ( faire dans la mthode onDestroy de l'aactivit)
reset() rinitialisation du player
setDataSource(String) dfinit le mdia par un chemin de fichier ou une URL
setDataSource(Context , Uri) dfinit le mdia par une Uri
setLooping(boolean) met le player en mode boucle
setVolume(float, float) dfinit le volume (le 1er paramtre est la voie gauche, le second la
voie droite)
Controle
pause() met en pause
seekTo(int) dplacement dans le mdia en ms (en + ou en -)
start() lancement
stop() arrt
Etat
getCurrentPosition() renvoie la position actuelle dans le mdia (en ms)
getDuration() renvoie la dure du mdia (en ms)
isPlaying() renvoie true si le media est en cours
isLoopPlaying() renvoie true si le media est en mode boucle
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
Mettre un VideoView dans linterface
<VideoView android:id="@+id/ecran_video"
android:layout_width="fill-parent"
android:layout_height="fill-parent" />
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
Sinon, et de toutes faons, on peut tout contrler par programme :
Configuration
VideoView
setMediaController(MediaController) associe un contrtleur de mdia
setVideoPath(String) dfinit le mdia par un chemin de fichier
setVideoURI(Uri) dfinit le mdia par une Uri
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
canPause() renvoie true si le media peut tre mis en pause
canSeekBackward() renvoie true si le media peut tre recul
canSeekForward() renvoie true si le media peut tre avanc
getBufferPercentage() renvoie le pourcentage d'occupation du buffer de mdia
getCurrentPosition() renvoie la position actuelle dans le mdia (en ms)
getDuration() renvoie la dure du mdia (en ms)
isPlaying() renvoie true si le media est en cours
Evnements
setOnCompletionListener(MediaPlayer.OnCompletionListener) associe un couteur
d'vnements
mthode onCompletion(MediaPlayer) appele lorsque le mdia se termine.
Synthse de parole
Crer un synthtiseur :
parle = new TextToSpeech(activit, new SynthPret());
Synthtiser un texte :
parle.speak(texte a dire, TextToSpeech.QUEUE_FLUSH, null);
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
Golocalisation par service WEB
La classe Geocoder permet de retrouver des adresses (type adresse
postale) partir :
De coordonnes GPS
Dun nom (par exemple : "parc Montaury, Anglet
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.
Toutes ces mthodes renvoient une liste (classe List de java) contenant des objets
de classe Address
Exemple dutilisation du service de
localisation
Le code suivant :
Geocoder localisateur = new Geocoder(this, Locale.FRANCE);
List<Address> liste = localisateur.getFromLocationName("Parc Montaury,
Anglet", 10);
Obtention :
par la mthode getController() de l'objet MapView
Utilisation :
animateTo(GeoPoint) positionne la carte sur le point pass en
paramtre en faisant une animation. La classe GeoPoint possde un
constructeur acceptant en paramtres ses coordonnes
gographiques en millionimes de degrs
setCenter(GeoPoint) positionne la carte sur le point pass en
paramtre sans faire d'animation.
scrollBy(int , int) dplace la carte. Le premier paramtre exprime le
dplacement horizontal (en pixels), le second le dplacement vertical.
setZoom(int) dfinit le niveau de zoom
zoomIn() zoome d'un niveau
zoomOut() d-zoome d'un niveau
Google Maps (projection)
la classe Projection permet de rcuprer les coordonnes gographiques dun
point de la carte affiche :
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)
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