如何判断视频正在播放?
setOnPreparedListener(MediaPlayer.OnPreparedListener l)::监听视频装载完成的事件。
装载完成就会播放?不会。
isPlaying()
它说在播放就是在播放?不是。
mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
//这段代码的关键是MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START这个变量,
// Android SDK中给出的注释是:这个状态表示展现了用于渲染的第一帧视频,也就是这个时候才真正将视频帧展示到了屏幕上。
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
}
return true;
}
});
第一帧渲染了就在播放?也不是。
判断是否在播放的唯一条件是:
video.getCurrentPosition()
是的,没错,只有当进度条在变化时,视频才在播放。
private static final int UPDATE_UI = 1;
private int oldProgress = 0;
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == UPDATE_UI) {
if (null != video && video.isPlaying()) {
int currentProgress = video.getCurrentPosition();
if(oldProgress == currentProgress ){
showView(loading);
}else{
goneView(loading);
}
oldProgress = currentProgress;
}
mHandler.sendEmptyMessageDelayed(UPDATE_UI, 500);
}
}
};
只有这样,显示和隐藏加载动画才是最准确的。