繁体   English   中英

使用OnTouchListener,MotionEvent.ACTION_UP时,应用程序意外停止

[英]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;
        }
    });

m1MediaPlayer ,在方法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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM