Удобное проигрывание звуков и музыки

  1. public class Music {
  2.  
  3.     private static final HashMap<Object, HashMap<Integer, MediaPlayer>> soundsMap = new HashMap<Object, HashMap<Integer, MediaPlayer>>();
  4.     private static Context context;
  5.  
  6.     public static void init(Context context) {
  7.         Music.context = context;
  8.     }
  9.  
  10.     private static MediaPlayer getSound(Object key, int rawID) {
  11.         HashMap<Integer, MediaPlayer> sounds = soundsMap.get(key);
  12.         if (sounds == null) {
  13.             sounds = new HashMap<Integer, MediaPlayer>();
  14.             soundsMap.put(key, sounds);
  15.         }
  16.         MediaPlayer sound = sounds.get(rawID);
  17.         if (sound == null) {
  18.             sound = MediaPlayer.create(context, rawID);
  19.             sounds.put(rawID, sound);
  20.         }
  21.         return sound;
  22.     }
  23.  
  24.     public static void play(Object key, int rawID, boolean loop) {
  25.         MediaPlayer sound = getSound(key, rawID);
  26.         if (loop) {
  27.             if (!sound.isPlaying()) {
  28.                 sound.setLooping(true);
  29.                 sound.start();
  30.             }
  31.         } else {
  32.             sound.start();
  33.         }
  34.     }
  35.  
  36.     public static void play(Object key, int rawID, float volume, boolean loop) {
  37.         MediaPlayer sound = getSound(key, rawID);
  38.         sound.setVolume(volume, volume);
  39.         if (loop) {
  40.             if (!sound.isPlaying()) {
  41.                 sound.setLooping(true);
  42.                 sound.start();
  43.             }
  44.         } else {
  45.             sound.start();
  46.         }
  47.     }
  48.  
  49.     public static void stop(Object key, int rawID) {
  50.         MediaPlayer sound = getSound(key, rawID);
  51.         sound.stop();
  52.     }
  53.  
  54.     public static void stopAll() {
  55.         for (HashMap<Integer, MediaPlayer> sounds : soundsMap.values()) {
  56.             for (MediaPlayer mediaPlayer : sounds.values()) {
  57.                 mediaPlayer.stop();
  58.                 mediaPlayer.release();
  59.             }
  60.             sounds.clear();
  61.         }
  62.         soundsMap.clear();
  63.     }
  64. }
В onCreate пишем
Music.init(this);
в onDestroy();
Music.stopAll();

И теперь можно из любого места программы проигрывать звуки например так
Music.play(this, R.raw.click, false);

Реклама

Мы в соцсетях

tw tg yt gt