Bouton retour Gestionnaire de sons
Transcription
Bouton retour Gestionnaire de sons
Développement mobile - Android Bouton retour Les smartphones possèdent en général un bouton « retour » qui va permettre à l’utilisateur de retourner sur la dernière activité qu’il a utilisé. Comme vu précédemment il est possible de l’empêcher en « terminant l’activité » suite au changement d’activité à l’aide de : finish(); Cependant il est possible de capter cet évènement en java (pression du bouton retour) pour effectuer l’action désirée : public void onBackPressed() { //code voulu } Gestionnaire de sons Il est possible de jouer/stopper/modifier le volume de sons et musiques, cependant on se retrouve vite limité à cause de l’encapsulation du langage. En effet si une musique est lancée à l’aide d’un objet MediaPlayer dans une activité et que celle-ci est « terminée » il n’est alors plus possible d’accéder à cet objet (le plus problématique est que la musique continue à être jouée). Pour contourner ce problème il est conseillé de créer une classe statique qui servira de gestionnaire de sons, exemple : public class GestionnaireOptions { private static Context context; private static SoundPool soundPOOL = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); private static MediaPlayer mediaPlayer; private static float volume; private static HashMap<String, Integer> hSons = new HashMap<>(); private static HashMap<String, Integer> hMusiques = new HashMap<>(); private static boolean musiqueJouees; private static boolean sonsJoues; public static void initGestionnaireOptions(Context cont){ musiqueJouees = true; sonsJoues = true; context = cont; volume = 0.5f; initialiserSons(); initialiserMusiques(); } private static void initialiserSons(){ hSons.put("juste", soundPOOL.load(context, R.raw.juste, 1)); hSons.put("faux", soundPOOL.load(context, R.raw.faux, 1)); } private static void initialiserMusiques(){ hMusiques.put("musique", R.raw.musique); } public static void setMusicVolume(float valeur){ volume = valeur; mediaPlayer.setVolume(volume, volume); } public static float getMusicVolume(){ return volume; } public static void jouerSon(String name){ soundPOOL.play(hSons.get(name), volume, volume, 0, 0, 1.0f); } public static void jouerMusique(String name, boolean loop){ if(mediaPlayer != null)mediaPlayer.stop(); mediaPlayer = MediaPlayer.create(context, hMusiques.get(name)); mediaPlayer.setVolume(volume, volume); mediaPlayer.setLooping(loop); mediaPlayer.start(); } public static void arreterMusique(){ mediaPlayer.stop(); } public static boolean getMusique() { return musiqueJouees; } public static void setMusique(boolean bool) { musiqueJouees = bool; } public static boolean getSons() { return sonsJoues; } public static void setSons(boolean bool) { sonsJoues = bool; } public static void pauseMusic(){ mediaPlayer.pause(); } public static void continueMusic(){ mediaPlayer.start(); } } Lors du lancement de l’application (dans le « onCreate » de la première activité) : final Context context = this; GestionnaireOptions.initGestionnaireOptions(context); GestionnaireOptions.jouerMusique("musique", true); Cette instruction ne doit être appelée qu’une fois, si pour n’importe quelle raison elle est appelée plusieurs fois l’application va créer autant de gestionnaires (soit de musiques en parallèles) que d’appels. Exemple possible : passage multiple dans le « onCreate » à cause d’une rotation de l’écran. Changer la police d’un texte Il existe de nombreuses manières de personnaliser une application. Il est très fréquent de changer la police d’un ou plusieurs (voir tout) les libellés d’une application. Il est possible d’effectuer ce changement de diverses manières. Exemple avec le code java : public void setFont(TextView textView, String fontName) { if(fontName != null){ try { Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/" + fontName); textView.setTypeface(typeface); } catch (Exception e) { Log.e("FONT", fontName + " non trouvée.", e); } } } Utilisation: final TextView tv = (TextView) findViewById(R.id.comme); setFont(tv,"nomPolice.ttf"); //Placé dans assets>fonts>nomPolice.ttf Il est conseillé de faire de « setFont » une méthode statique si elle est souvent utilisée.