所以我想创建播放音乐的按钮,只要它被按下,但一旦发布,音乐就会停止。
在我的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()
已被调用。
在运行应用程序时,只要我不释放按钮,音乐就可以正常播放。但是,当我释放按钮时,应用程序说它意外停止了。可能导致这个问题的原因是什么?
我还有其他方法可以实现此功能吗?
答案 0 :(得分:0)
也许你再试一次MediaPlayer
??
调用stop()会停止播放并导致处于Started,Paused,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。 一旦处于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;
}
答案 1 :(得分:0)
编辑:我发现我做错了什么。我在startBeat方法中初始化并启动MediaPlayer,并在onTouch方法中停止播放器。一旦我将它全部移动到onTouch,它就有效了。所以我想之前发生了一些奇怪的事情。谢谢你的答案!