直接上代码:
package com.xes.xesspeiyou.eleccert.utils;
import java.util.HashMap;
import com.xes.xesspeiyou.eleccert.R;
import android.annotation.SuppressLint;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
public class MediaManager {
public static final int SUCCESS_SOUND_ID = 1;
public static final int ERROR_SOUND_ID = 2;
private AudioManager mAudioManager;
private SoundPool mSoundPool;
private HashMap<Integer,Integer> mSoundMap;
public static void initiate(Context application){
mInstance = new MediaManager(application);
}
private static MediaManager mInstance;
@SuppressLint("UseSparseArrays")
private MediaManager(Context application){
mAudioManager = (AudioManager) application.getSystemService(Context.AUDIO_SERVICE);
mSoundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
//加载声音
mSoundMap = new HashMap<Integer,Integer>();
mSoundMap.put(SUCCESS_SOUND_ID, mSoundPool.load(application, R.raw.success, 1));
mSoundMap.put(ERROR_SOUND_ID, mSoundPool.load(application, R.raw.error, 1));
}
public static MediaManager getInstance(){
if (null == mInstance) {
throw new RuntimeException("MediaManager.initiate method not called in the application.");
}
return mInstance;
}
public void playSound(int sound, int number){
//最大音量
float audioMaxVolumn = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//当前音量
float audioCurrentVolumn = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
float volumnRatio = audioCurrentVolumn/audioMaxVolumn;
//播放
mSoundPool.play(mSoundMap.get(sound), //声音资源
volumnRatio, //左声道
volumnRatio, //右声道
1, //优先级,0最低
number, //循环次数,0是不循环,-1是永远循环
1); //回放速度,0.5-2.0之间。1为正常速度
}
public void setNotificationMute(){
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
}
public void setNotificationUnmute(){
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
}
}