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.