如何检测 VideoView 何时暂停?

How do I detect when a VideoView is paused?

我需要检测 VideoView 何时暂停,因此我可以在屏幕上隐藏一些 UI 元素。 VideoView 没有通知您暂停事件的机制。我该怎么做?

我还没有看到很好的答案(这么多人使用线程)。这是我的:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;

public class PlayStateBroadcastingVideoView extends VideoView{
    public interface PlayPauseListener {
        void onPlay();
        void onPause();
    }

    private PlayPauseListener mListener;

    public PlayStateBroadcastingVideoView(Context context) {
        super(context);
    }

    public PlayStateBroadcastingVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public PlayStateBroadcastingVideoView(Context context, AttributeSet attrs, int theme) {
        super(context, attrs, theme);
    }

    @Override
    public void pause() {
        super.pause();
        if(mListener != null) {
            mListener.onPause();
        }
    }

    @Override
    public void start() {
        super.start();
        if(mListener != null) {
            mListener.onPlay();
        }
    }

    public void setPlayPauseListener(PlayPauseListener listener) {
        mListener = listener;
    }

}

之所以可行,是因为深入研究代码(至少从 5.0 开始),唯一将其置于暂停状态的函数是暂停,而将其置于播放状态的唯一函数是启动。所以我们简单地挂钩这些以通过侦听器通知我们。然后在您的布局中使用此 class 代替 VideoView.