Université de Pau et des Pays de l’Adour Master 2 Technologies de l’Internet TP - Android Youssef RIDENE Trace et Log Pour tracer votre code, utilisez la vue Eclipse Logcat. Il faudra par la suite Utiliser la Classe Log pour afficher des messages dans cette vue. Pour plus d’informations : http ://developer.android.com/reference/android/util/Log.html Exercice 1 : HelloWorld Développer une application qui affiche HelloWorld. 1. Modifier la police du texte 2. Centrer le texte 3. Modifier la couleur de fond 4. Ajouter une image au dessus du texte 5. Ajouter une zone de texte qui décrit l’image Votre application doit fonctionner correctement en mode paysage. Exercice 2 : Shared Preferences Nous allons reprendre l’exercice 1 et utiliser les SharedPreferences (http ://developer.android.com/reference/android/co pour afficher un message uniquement lors de la première utilisation. Inspirez vous du code donné en Annexe. Exercice 3 : Convertisseur L’application contient 2 tabulations. La première pour une conversion Celsius ↔ Fahrenheit et la deuxième pour une conversion Km ↔ Miles. Chaque tabulation contient les éléments suivants – Un titre – 2 boutons radio (C ↔ F) et (F ↔ C) pour la première tabulation et (Km ↔ Miles) et (Miles ↔ Km) pour la deuxième. – Une zone de texte pour saisir la valeur à convertir – Un bouton pour calculer la valeur – Une TextView pour afficher le résultat La touche retour permet de quitter l’application. Ajouter une AlertDialog pour confirmer le choix de l’utilisateur (cf. annexe). Exercice 4 : Lecteur multimédia basique L’application contient : – 3 boutons radio avec 3 titres différents – Un bouton Play pour jouer la piste sélectionnée – Un bouton Stop – Un bouton Help qui affiche une Alert avec votre nom et des informations sur l’application – Un bouton About qui affiche dans une nouvelle fenetre des informations sur le chanteur (la piste...) 1 Université de Pau et des Pays de l’Adour Master 2 Technologies de l’Internet Exercice 5 : Handler, gestion des langues et menu Reprendre l’application de l’exercice 2 pour la modifier et avoir les écrans suivants : Splash Screen (3s) → Choisir la langue (fr/en) → Convertisseur En appuyant sur le bouton « Menu » du simulateur, 2 icones apparaissent : – Icône About : affiche une nouvelle Activity en expliquant l’application et les formules utilisées... – Icône Support : affiche une alerte avec votre nom, email cliquable et votre numero de téléphone (En cliquant dessus, on pourra vous appeler directement). Exercice 6 : Google Maps Faire le tutrial disponible à cette adresse : http ://mobiforge.com/developing/story/using-google-mapsandroid Annexe // S h a r e d P r e f e r e n c e s SharedPreferences prefs ; /∗ r e t u r n s t r u e , i f t h i s i s t h e f i r s t run ∗/ public boolean getFirstRun () { r e t u r n mPrefs . g e t B o o l e a n ( " i s F i r s t " , t r u e ) ; } /∗ s t o r e t h e f i r s t run ∗/ p u b l i c v o i d setRunned ( ) { SharedPreferences . Editor edit = p r e f s . edit ( ) ; e d i t . putBoolean ( " i s F i r s t " , f a l s e ) ; e d i t . commit ( ) ; } /∗ s e t t i n g up p r e f e r e n c e s s t o r a g e ∗/ public void f i r s t R u n P r e f e r e n c e s ( ) { Context mContext = t h i s . g e t A p p l i c a t i o n C o n t e x t ( ) ; p r e f s = mContext . g e t S h a r e d P r e f e r e n c e s ( " myAppPrefs " , 0 ) ; //0 = mode p r i v a t e . o n l y t h i } // C o n t r o l e r l a t o u c h e Back pour ne pas s o r t i r de l ’ a p p l i c a t i o n /∗ Avant l a v e r s i o n 2 . 0 ∗ / @Override p u b l i c b o o l e a n onKeyDown ( i n t keyCode , KeyEvent e v e n t ) { i f ( keyCode == KeyEvent .KEYCODE_BACK && e v e n t . getRepeatCount ( ) == 0 ) { // do something on back . return true ; } r e t u r n s u p e r . onKeyDown ( keyCode , e v e n t ) ; } 2 Université de Pau et des Pays de l’Adour Master 2 Technologies de l’Internet /∗ Depuis l a v e r s i o n 2 . 0 ∗ / @Override p u b l i c v o i d onBackPressed ( ) { // do something on back . return ; } //La t o u c h e Back pemrmettra de q u i t t e r l ’ a p p l i c a t i o n : I n t e n t i n t e n t = new I n t e n t ( ) ; i n t e n t . s e t C l a s s (A. t h i s , B . c l a s s ) ; startActivity ( intent ); finish (); //La t o u c h e Back p e r m e t t r a de r e v e n i r à A: I n t e n t m a i n I n t e n t = new I n t e n t (A. t h i s , B . c l a s s ) ; s t a r t A c t i v i t y ( mainIntent ) ; // A l e r t A l e r t D i a l o g . B u i l d e r d l g A l e r t = new A l e r t D i a l o g . B u i l d e r ( t h i s ) ; d l g A l e r t . s e t M e s s a g e ( g e t R e s o u r c e s ( ) . g e t S t r i n g (R. s t r i n g . t i t l e ) ) ; d l g A l e r t . s e t T i t l e ( g e t R e s o u r c e s ( ) . g e t S t r i n g (R. s t r i n g . i n f o ) ) ; // Media p l a y e r MediaPlayer mp = MediaPlayer . c r e a t e ( Audio . t h i s , R. raw . p i s t e 1 ) ; mp. s t a r t ( ) ; mp. s t o p ( ) ; // S p l a s h s c r e e n new Handler ( ) . p o s t D e l a y e d ( new Runnable ( ) { @Override p u b l i c v o i d run ( ) { I n t e n t m a i n I n t e n t = new I n t e n t ( S p l a s h . t h i s , Dest . c l a s s ) ; Splash . t h i s . s t a r t A c t i v i t y ( mainIntent ) ; Splash . t h i s . f i n i s h ( ) ; } } , SPLASH_DISPLAY_LENGTH ) ; //Menu p u b l i c b o o l e a n onCreateOptionsMenu (Menu menu ) { s u p e r . onCreateOptionsMenu ( menu ) ; MenuItem item = menu . add ( " About " ) ; item . s e t I c o n (R. drawable . about ) ; item . s e t I n t e n t ( new I n t e n t (A. t h i s , B . c l a s s ) ) ; item = menu . add ( " S e t t i n g s " ) ; item . s e t I c o n (R. drawable . s e t t i n g s ) ; item . s e t I n t e n t ( new I n t e n t (A. t h i s , C . c l a s s ) ) ; return true ; } 3 Université de Pau et des Pays de l’Adour Master 2 Technologies de l’Internet p u b l i c b o o l e a n o n O p t i o n s I t e m S e l e c t e d ( MenuItem item ) { i f ( item . hasSubMenu ( ) == f a l s e ) { I n t e n t i = item . g e t I n t e n t ( ) ; startActivity ( i ); } return true ; } 4