Android – SoundPool 简单使用
-
申明变量
private final static int SOUND_1 = 1; private final static int SOUND_2 = 2; private final static int SOUND_3 = 3; private SoundPool mSoundPool = null; private HashMap<Integer,Integer> mSoundPoolMap = null;
-
初始化
private void initSoundPool(){ SoundPool.Builder builder = new SoundPool.Builder(); //Sets the maximum of number of simultaneous streams that can be played simultaneously builder.setMaxStreams(1); AudioAttributes.Builder audioAttr = new AudioAttributes.Builder(); audioAttr.setLegacyStreamType(AudioManager.STREAM_MUSIC); builder.setAudioAttributes(audioAttr.build()); mSoundPool = builder.build(); mSoundPoolMap = new HashMap<>(); //R.raw.sound1: 音效资源文件id //1:the priority of the sound. Currently has no effect. Use a value of 1 for future compatibility. mSoundPoolMap.put(SOUND_1, mSoundPool.load(this, R.raw.sound1, 1)); mSoundPoolMap.put(SOUND_2, mSoundPool.load(this, R.raw.sound2, 1)); mSoundPoolMap.put(SOUND_3, mSoundPool.load(this, R.raw.sound3, 1)); }
-
调用
//先停止媒体流上的播放 mSoundPool.stop(AudioManager.STREAM_MUSIC); mSoundPool.play(mSoundPoolMap.get(SOUND_1),1,1,0,0,1); /* @param soundID a soundID returned by the load() function * @param leftVolume left volume value (range = 0.0 to 1.0) * @param rightVolume right volume value (range = 0.0 to 1.0) * @param priority stream priority (0 = lowest priority) * @param loop loop mode (0 = no loop, -1 = loop forever) * @param rate playback rate (1.0 = normal playback, range 0.5 to 2.0) */