VideoView播放状态或MediaController播放/暂停的事件

Ron*_*nie 29 android playback mediacontroller

我似乎无法找到一个侦听播放状态的事件.我最感兴趣的是play/pause国家.我正在使用MediaController它有一个Play/Pause按钮,但我有一个辅助按钮,也可以控制Play/Pause.使用我的自定义按钮,我可以play/pause,但如果我play/pause使用MediaController play/pause按钮,我目前无法将自定义play/pause按钮上的图像更改为播放或暂停.

是否有一个我不知道的事件,所以我可以在播放/暂停期间做一些工作?

这是一个非常类似的问题:如何在MediaController上单击暂停/播放按钮时捕获事件

MH.*_*MH. 93

如果您正在使用MediaController与a的组合VideoView,则扩展后者并添加自己的侦听器应该相对容易.

然后,自定义VideoView将以其最基本的形式显示:

public class CustomVideoView extends VideoView {

    private PlayPauseListener mListener;

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

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

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

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

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

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

    public static interface PlayPauseListener {
        void onPlay();
        void onPause();
    }

}
Run Code Online (Sandbox Code Playgroud)

使用它与使用常规相同VideoView,唯一的区别是我们现在可以将自己的监听器连接到它.

// Some other code above...
CustomVideoView cVideoView = (CustomVideoView) findViewById(R.id.custom_videoview);
cVideoView.setPlayPauseListener(new CustomVideoView.PlayPauseListener() {

    @Override
    public void onPlay() {
        System.out.println("Play!");
    }

    @Override
    public void onPause() {
        System.out.println("Pause!");
    }
});

cVideoView.setMediaController(new MediaController(this));
cVideoView.setVideoURI(...);
// or
cVideoView.setVideoPath(...);
// Some other code below...
Run Code Online (Sandbox Code Playgroud)

最后,您也可以在xml布局中声明它并对其进行充气(如上所示) - 只需确保使用即可<package_name>.CustomVideoView.例:

<mh.so.CustomVideoView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/custom_videoview" />
Run Code Online (Sandbox Code Playgroud)

  • 天才!谢谢您,先生,效果很好。+50给你。我等不及要知道Java以及其他类似动作脚本之类的东西。 (2认同)