Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按下按钮时发出声音_Java_Android_Ontouchlistener_Onclicklistener_Soundpool - Fatal编程技术网

Java 按下按钮时发出声音

Java 按下按钮时发出声音,java,android,ontouchlistener,onclicklistener,soundpool,Java,Android,Ontouchlistener,Onclicklistener,Soundpool,我试着在按下按钮时发出一个声音 当我按下按钮时,我怎么能这样做?事件“MotionEvent.ACTION\u DOWN”不会停止运行声音?我做这件事的方式只有一次。我试着把return语句改为false,但不起作用 setLoop MediaPlayer选项对我没有帮助,因为我想继续播放新声音,尽管当前声音尚未播放完毕 这是我的密码: public boolean onClick(View v, MotionEvent event) { if(event.getAction() ==

我试着在按下按钮时发出一个声音

当我按下按钮时,我怎么能这样做?事件“MotionEvent.ACTION\u DOWN”不会停止运行声音?我做这件事的方式只有一次。我试着把return语句改为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;
}

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

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

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

由于第五个参数
loop
取0(=无循环)或-1(=永远循环)

它产生相同的声音循环,我想将声音作为一个新的独立声音池运行多次,而不允许它停止其他声音池的执行。给你一个想法,我想播放一个机关枪的声音,多次播放子弹的声音。是的,这只是一个子弹声音的单一原始声音,但我不想循环,我想在动作结束时重复这个声音池的执行。我想这样做是因为我想在前一个声音结束之前开始一个新的声音,而不是失去子弹的回声。问题是这个动作只响应一次,我希望总是有一个积极的听众。谢谢如果我解释得不对,请原谅。我不确定,但您可以尝试实现一个
OnTouchListener
而不是onClick Listener,并以与onClick相同的方式重写
onTouch
方法。