同时播放声音Android

我在Android上创build了一个游戏,我有一段时间closures这个问题,现在刚刚回来。 在我的游戏中,我有一个背景节拍,枪声,爆炸等等,我需要能够同时播放它们。 现在,当我在SoundPool类上调用Play时,当前播放的声音被中断,新的开始播放。 我的SoundManager类以及用法如下。 任何帮助将不胜感激,因为这真的是我的第一场比赛,我需要这么多的声音效果。 谢谢!

public class SoundManager { private SoundPool mSoundPool; private HashMap<Integer, Integer> mSoundPoolMap; private AudioManager mAudioManager; private Context mContext; public SoundManager(Context theContext) { mContext = theContext; mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); mSoundPoolMap = new HashMap<Integer, Integer>(); mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); } public void addSound(int index, int SoundID) { mSoundPoolMap.put(index, mSoundPool.load(mContext, SoundID, 1)); } public void playSound(int index) { float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING); streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING); mSoundPool.play((Integer) mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f); } public void playLoopedSound(int index) { float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); mSoundPool.play((Integer) mSoundPoolMap.get(index), streamVolume, streamVolume, 1, -1, 1f); } } 

…这里是我如何使用这个类的例子。

 SoundManager sm = new SoundManager(this); sm.addSound(0, R.raw.explosion); sm.playSound(0); 

…所以在这种风格下,我将所有声音添加到SoundPool上,然后根据用户input,我只是想播放声音。 这看起来正确吗? 或者我应该试试这个不同的方式?

Related of "同时播放声音Android"

那么我最终搞清楚了这一点,以防其他人想知道的情况。 问题不是一次只能播放一个以上的声音,而是一次只能播放4个声音,这让我觉得声音停止了,开始了。 在构造函数中这一行

mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

需要改变以允许更多的stream同时播放。 所以通过将第一个参数从4改为20,就可以同时播放20个声音。 现在游戏听起来好多了哈哈。 希望这有助于某人。