[英]App stops unexpectedly when using OnTouchListener, MotionEvent.ACTION_UP
因此,我想创建一个按钮,只要按下它就可以播放音乐,但是一旦发布,音乐就会停止。
在我的createListeners()
,我具有以下内容:
b1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
startBeat(1, m1);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
m1.stop();
}
return false;
}
});
m1
是MediaPlayer
,在方法startBeat
,已调用m1.start()
。
在运行该应用程序时,只要我不松开按钮,音乐就可以正常播放。 但是,当我释放按钮时,应用程序说它意外停止了。 是什么导致此问题?
我还有其他方法可以实现此功能吗?
也许您尝试再次MediaPlayer
?
调用stop()会停止播放,并使处于Started,Paused,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。 一旦处于“已停止”状态, 就无法开始播放,直到调用prepare()或prepareAsync()将MediaPlayer对象再次设置为Prepared状态。
如果不这样做,请尝试m1.pause();
和m1.seekTo(0)
模拟停止...
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
startBeat(1, m1);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
m1.pause();
m1.seekTo(0);
return true;
}
return false;
}
编辑:我发现我做错了。 我正在用startBeat方法初始化并启动MediaPlayer,并在onTouch方法中停止播放器。 一旦将它们全部移到onTouch,它就可以工作了。 所以我想以前发生了一些奇怪的事情。 感谢您的回答!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.