package com.llkan.setup;import java.util.HashMap;import java.util.Map;import java.util.Random;import com.llkan.R;import android.content.Context;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.SoundPool;/** * 聲音控制類 * @author wyf * */public class SoundPlayer { private static MediaPlayer music; private static SoundPool soundPool; private static boolean musicSt = true; //音樂開關 private static boolean soundSt = true; //音效開關 private static Context context; private static final int[] musicId = {R.raw.bg,R.raw.bg1,R.raw.bg2,R.raw.bg3}; private static Map<Integer,Integer> soundMap; //音效資源id與載入過後的音源id的映射關係表 /** * 初始化方法 * @param c */ public static void init(Context c) { context = c; initMusic(); initSound(); } //初始化音效播放器 private static void initSound() { soundPool = new SoundPool(10,AudioManager.STREAM_MUSIC,100); soundMap = new HashMap<Integer,Integer>(); soundMap.put(R.raw.itemboom, soundPool.load(context, R.raw.itemboom, 1)); soundMap.put(R.raw.sel, soundPool.load(context, R.raw.sel, 1)); } //初始化音樂播放器 private static void initMusic() { int r = new Random().nextInt(musicId.length); music = MediaPlayer.create(context,musicId[r]); music.setLooping(true); } /** * 播放音效 * @param resId 音效資源id */ public static void playSound(int resId) { if(soundSt == false) return; Integer soundId = soundMap.get(resId); if(soundId != null) soundPool.play(soundId, 1, 1, 1, 0, 1); } /** * 暫停音樂 */ public static void pauseMusic() { if(music.isPlaying()) music.pause(); } /** * 播放音樂 */ public static void startMusic() { if(musicSt) music.start(); } /** * 切換一首音樂並播放 */ public static void changeAndPlayMusic() { if(music != null) music.release(); initMusic(); startMusic(); } /** * 獲得音樂開關狀態 * @return */ public static boolean isMusicSt() { return musicSt; } /** * 設定音樂開關 * @param musicSt */ public static void setMusicSt(boolean musicSt) { SoundPlayer.musicSt = musicSt; if(musicSt) music.start(); else music.stop(); } /** * 獲得音效開關狀態 * @return */ public static boolean isSoundSt() { return soundSt; } /** * 設定音效開關 * @param soundSt */ public static void setSoundSt(boolean soundSt) { SoundPlayer.soundSt = soundSt; } /** * 發出‘邦’的聲音 */ public static void boom() { playSound(R.raw.itemboom); }}