它现在在第一次按下时播放,在第二次按下或按下另一个声音按钮时停止。如果我让一个声音播放通过,我可以重新启动它或单击一次播放另一个声音。
我的目标是第二次按下同一个按钮来停止它,但是按下一个新按钮只是开始新的声音而不是第一次按下新按钮停止旧的声音,第二次按下开始新的声音。
我明白为什么它会做现在做的事情,但我不确定如何让它按照我想要的方式工作。
public void playSound(int input){
if (mp!=null && mp.isPlaying()) {
mp.stop();
mp.reset();
} else{
if (mp!=null){
mp.reset();
mp.release();
}
mp = MediaPlayer.create(Soundboard.this, input);
mp.start();
}
}
最佳答案
这段代码:
if (mp!=null){
mp.reset();
mp.release();
}
永远不会被执行。 mp
此时只能是 null
,因为它在 if (mp != null)< 的
测试。这表明您对使用此方法的想法存在缺陷。else
block 中
如果播放了声音并且您按下了按钮,那么这段代码将执行:
mp.release();
mp = null;
因为 mp
不是 null
,所以 else
block 不会执行,也不会播放新的声音。第二次按下按钮时,mp
现在是 null
并且执行 else
block ,创建一个新的 MediaPlayer
并播放声音。
关于Android:Mediaplayer 停止/开始播放原始资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812947/