说明
- 视频播放事件包括两个部分:1.播放器本身的事件(开始、暂停、结束播放等) 2.用户动作触发的事件(拖拽进度条、点击屏幕等)
- 播放事件监听的途径主要是通过视频播放框架(或开发者自定义)的控制器来实现的。
- 控制器是指操作播放器的组件(按钮、进度条等)的容器。
- 事件的监听经常与视频当前时间配合使用。
- 本文基于Exoplayer+Exomedia实现视频事件监听。
关键点
VideoView与视频时间、播放进度相关的主要方法。
- 获取视频当前时间
long getCurrentPosition()
- 获取视频总时长
long getDuration()
- 控制播放进度
void seekTo(long millis)
实现接口
包含VideoView的Activity请实现接口,全部接口及回调如下所示,实际使用中请挑选所需接口实现(若有遗漏请谅解).
public class XunshiVideoDemoActivity extends AppCompatActivity
implements
ExoPlayerListener,
VideoControlsSeekListener,
VideoControlsButtonListener,
VideoControlsVisibilityListener,
OnCompletionListener,
OnPreparedListener,
OnBufferUpdateListener {
@Override
public void onStateChanged(boolean playWhenReady, int playbackState) {
}
@Override
public void onError(ExoMediaPlayer exoMediaPlayer, Exception e) {
}
@Override
public void onVideoSizeChanged(int width, int height, int unAppliedRotationDegrees, float pixelWidthHeightRatio) {
}
@Override
public void onBufferingUpdate(@IntRange(from =