按下按钮时循环播放声音
Posted
技术标签:
【中文标题】按下按钮时循环播放声音【英文标题】:Loop a sound while a button is pressed 【发布时间】:2012-10-21 11:22:50 【问题描述】:我正在尝试在。
当我按下按钮让事件“MotionEvent.ACTION_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;
【问题讨论】:
【参考方案1】:将第五个参数替换为 -1 :
soundPool.play(R.raw.sound1, 1, 1, 1, -1, 1);
从play() doc 开始,第五 参数loop
采用 0(= 无循环)或 -1(= 永远循环)
【讨论】:
它产生相同的声音循环,我想将声音作为一个新的独立声音池多次运行,而不允许它停止其他声音的执行。为了给你一个想法,我想播放机枪多次播放子弹的声音。 是的,它只是一个原始的子弹声音,但我不想循环它,我想在事件是 ACTION_DOWN 时重复执行此 soundPool。我想这样做是因为我想在前一个声音结束之前开始一个新的声音,而不是失去子弹射击声音的回声。问题是 ACTION_DOWN 只响应一次,我希望始终是一个活跃的监听器。谢谢!如果我没有正确解释,请原谅我。 好的。我不确定,但您可以尝试实现OnTouchListener
而不是 OnClickListener 并以与 onClick 相同的方式覆盖 onTouch
方法。【参考方案2】:
将return false;
替换为return true;
。获取ACTION_UP
的唯一方法是返回true
以通知android 系统您将处理整个onClick
事件。
【讨论】:
以上是关于按下按钮时循环播放声音的主要内容,如果未能解决你的问题,请参考以下文章