Android(安卓)终极解决VideoView是否在播放问题
16lz
2021-01-24
如何判断视频正在播放?
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); } } };
只有这样,显示和隐藏加载动画才是最准确的。
更多相关文章
- Android(安卓)studio 导入Module后报错记录
- Android音视频处理之MediaExtractor
- [Android] IntentInjector
- android miscdevice(混杂设备)驱动编写注意
- 腾讯微博客户端开发视频--若水(第三集、第四集)
- Android(安卓)-> 如何避免Handler引起内存泄露
- Android(安卓)VideoView播放视频
- Maven uploadArchives命令报错:Could not deploy to remote repos
- 音视频转码合成