如何通过Soundpool停止播放声音?
问题描述:
请看看这些代码片段:如何通过Soundpool停止播放声音?
private SoundPool soundPool;
private int soundID;
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundID = soundPool.load(this, R.raw.batimanbailedosenxutos, 1);
,当我按下按钮:
soundPool.play(soundID, volume, volume, 1, 0, 1f);
,如果我按两次在同一时间这个按钮,它播放的声音togheter ,我想停下来的声音并再次播放,如果用户按下按钮,同时播放
我tryed puting的
soundPool.stop(soundID);
之前soundPool.play,但我不知道为什么它只适用于歌曲播放的1次,你们有任何理想为什么这只适用于1次?以及我如何解决这个问题?谢谢
答
方法stop()
获取当前播放流的流ID,而不是您已加载的声音ID。所以像这样:
int streamId = soundPool.play(soundID, volume, volume, 1, 0, 1f);
soudPool.stop(streamId);
streamId = soundPool.play(soundID, volume, volume, 1, 0, 1f);
会停止当前播放的曲目,并开始另一个。第二种选择是限制您的SoundPool
允许的数据流。如果您将SoundPool
实例化为maxStreams
的值为1,则当您尝试启动另一个时,任何当前播放的声音都会停止,这可能会更干净地实现您所需的行为。
答
你能看到代码
public static void clear() {
if (mSoundManager != null) {
mSoundManager.mSoundPool = null;
mSoundManager.mAudioManager = null;
mSoundManager.mSoundPoolMap = null;
}
mSoundManager = null;
}
谢谢,它的工作,对不起我的noobiness ^^ – 2012-07-27 19:14:42
谢谢。这解决了我的游戏中的小错误。 – 2014-10-19 04:54:08