Maintenant on peut lire de la musique et jouer des bruitages.
Mais, c'est du code qui date, mais par chance, pas obsolète.
La seule chose que j'ai changée, c'est que j'ai encapsulé la priorité et fixé le nombre maximal de bruitages simultanés.(32)
Voici le code :
Spoiler :Code : Tout sélectionner
package com.niviz; import android.content.Context; import android.media.AudioAttributes; import android.media.MediaPlayer; import android.media.SoundPool; public class SoundPlayer { private final SoundPool soundPool; private final Context context; private float effectsVolume; private static MediaPlayer mediaPlayer; public SoundPlayer(Context context) { this.context = context; AudioAttributes attributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); soundPool = new SoundPool.Builder() .setAudioAttributes(attributes) .setMaxStreams(32) .build(); effectsVolume = 1.0f; } public int loadEffect(int resourceId) { return soundPool.load(context, resourceId, 1); } public void setMusicVolume(float volume) { if (mediaPlayer != null) mediaPlayer.setVolume(volume, volume); } public void setEffectsVolume(float effectsVolume) { this.effectsVolume = effectsVolume; } public void playEffect(int id, float volume, float pitch) { soundPool.play(id, volume * effectsVolume, volume * effectsVolume, 1, 0, pitch); } public void playMusic(int resourceId, float volume, boolean isLooping) { if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); } mediaPlayer = MediaPlayer.create(context, resourceId); mediaPlayer.setVolume(volume, volume); mediaPlayer.setLooping(isLooping); mediaPlayer.start(); } public void stopMusic() { if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null; } } public void pauseEffects() { soundPool.autoPause(); } public void resumeEffects() { soundPool.autoResume(); } public void stopEffect(int id) { soundPool.stop(id); } public void unloadEffect(int id) { soundPool.unload(id); } public void releaseEffects() { soundPool.release(); } }