我在
Android上创造了一个游戏,而且我已经把这个问题放在一段时间了,现在我刚刚回来了.在我的游戏中,我有一个背景拍摄,枪声,爆炸等等,我需要能够同时玩.现在,当我在SoundPool类上打电话时,当前播放的声音被中断,新的播放声音开始播放.我的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,1,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),-1,1f); } }
…这里是我如何使用类的一个例子.
SoundManager sm = new SoundManager(this); sm.addSound(0,R.raw.explosion); sm.playSound(0);
…所以用这种风格,我把所有的声音添加到SoundPool上,然后根据用户输入,我只想播放声音.这看起来正确吗?或者我应该尝试不同的方法吗?
解决方法
那么我最终确定了这一点,以防其他人想知道.问题不在于它一次不能播放多个声音,只能在同一时间播放4个声音,这给我的声音停止和启动.在构造函数这行
mSoundPool = new SoundPool(4,0);
需要改变,以允许更多的流在同一时间播放.所以通过将第一个参数从4改为20,然后可以同时播放20个声音.这个游戏听起来好多了,哈哈.希望这有助于某人.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。