如何判断视频正在播放?

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

只有这样,显示和隐藏加载动画才是最准确的。

更多相关文章

  1. Android(安卓)studio 导入Module后报错记录
  2. Android音视频处理之MediaExtractor
  3. [Android] IntentInjector
  4. android miscdevice(混杂设备)驱动编写注意
  5. 腾讯微博客户端开发视频--若水(第三集、第四集)
  6. Android(安卓)-> 如何避免Handler引起内存泄露
  7. Android(安卓)VideoView播放视频
  8. Maven uploadArchives命令报错:Could not deploy to remote repos
  9. 音视频转码合成

随机推荐

  1. Android Activity (一)
  2. Android透明效果的实现
  3. 自定义控件 - 圆形缓冲进度条
  4. android中listview控件覆盖了其它控件使
  5. Programmatically Injecting Events on A
  6. Android(安卓)TV中使用RecyclerView长按
  7. android获取网络类型
  8. Android库. 1 WIFI相关
  9. Programmatically Injecting Events on A
  10. 深入分析Android中Dialog