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

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

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

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

Solutions Collecting From Web of "VideoView播放状态或MediaController播放/暂停的事件"

如果您将MediaControllerVideoView结合使用,则扩展后者并添加您自己的侦听器应该相对容易。

自定义的VideoView会以最基本的forms看起来像这样:

 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(); } } 

使用它与使用普通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... 

最后,你也可以在你的xml布局中声明它,然后膨胀它(如上所示) – 只要确保使用了<package_name>.CustomVideoView 。 例:

 <mh.so.CustomVideoView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/custom_videoview" /> 

您应该能够设置您自己的MediaController.MediaPlayerControl并覆盖暂停和启动