如何检测VideoView暂停的时间?

时间:2016-06-01 18:59:42

标签: android android-videoview

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

1 个答案:

答案 0 :(得分:0)

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

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开始),将其置于暂停状态的唯一功能是暂停,并且唯一一个将其置于播放状态的功能就是启动。所以我们只是挂钩这些来通过听众通知我们。然后在布局中使用此类代替VideoView。