当按下按钮时循环播放声音

3
我想在按下按钮时循环播放声音。当我按下按钮处理“MotionEvent.ACTION_DOWN”事件时,如何做到不停止运行声音?我已经尝试将返回语句更改为false,但它并没有起作用。setLoop MediaPlayer选项对我没有帮助,因为我想继续播放新的声音,即使当前声音没有播放完毕。以下是我的代码:
public boolean onClick(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_DOWN){
        //here should not stop running the soundPool
        soundPool.play(R.raw.sound1, 1, 1, 1, 0, 1);
    }
    if(event.getAction() == MotionEvent.ACTION_UP){
        // stop running the soundpool
    }
    return true;
}
2个回答

2

将第五个参数替换为-1:

soundPool.play(R.raw.sound1, 1, 1, 1, -1, 1);

根据 play() 文档,第五个参数 loop 取值为 0(表示不循环)或 -1(表示无限循环)。

它会产生相同的声音循环,我想将其作为新的独立声音池多次运行,而不允许它停止其他执行。为了给你一个想法,我想播放机枪声音,播放子弹声音多次。 - karse23
是的,这只是一个子弹声音的单行代码,但我不想循环它,我想在事件为ACTION_DOWN时重复执行此soundPool。我想这样做是因为我想在前一个声音结束之前开始新的声音,而不会失去子弹射击声的回声。问题是ACTION_DOWN只响应一次,我希望始终有一个活动的监听器。谢谢!如果我没有解释清楚,请原谅我。 - karse23
好的。我不确定,但你可以尝试实现一个OnTouchListener而不是一个OnClickListener,并以与onClick相同的方式重写onTouch方法。 - iTurki

0

return false;替换为return true;。唯一获取ACTION_UP的方法是返回true,以通知Android系统您将处理整个onClick事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接