VideoView中getDuration()和getCurrentPosition()获取错误的问题
来源:互联网 发布:淘宝优惠券赚佣金 编辑:程序博客网 时间:2024/06/13 18:26
本文地址:VideoView中getDuration()和getCurrentPosition()获取错误的问题
这几天在做一个App内嵌VideoView的工作。
要实现正在播放的时候,按home键到桌面后,再进入该App,视频还在刚才的进度上播放。
实现思路是再onStop()中调用videoView.getCurrentPosition();但是总有几次获取到的值为0,好像不太稳定,而每次getDuration()时,得到的都是-1.
后面查看他们的源码:
@Override public int getCurrentPosition() { if (isInPlaybackState()) { return mMediaPlayer.getCurrentPosition(); } return 0; }
发现都有一个
isInPlaybackState()
判断播放状态的,内部的代码为:
private boolean isInPlaybackState() {
return (mMediaPlayer != null && mCurrentState != STATE_ERROR && mCurrentState != STATE_IDLE && mCurrentState != STATE_PREPARING); }而该类内部总共定义的状态有:
// all possible internal states private static final int STATE_ERROR = -1; private static final int STATE_IDLE = 0; private static final int STATE_PREPARING = 1; private static final int STATE_PREPARED = 2; private static final int STATE_PLAYING = 3; private static final int STATE_PAUSED = 4; private static final int STATE_PLAYBACK_COMPLETED = 5;
所以,当Activity处于后台时,肯定不是后面三个状态。
也就是说
<pre name="code" class="java">isInPlaybackState()
一定是false,所以在onStop()时一定获取不到正常的毫秒值。
而后,我在onPause()时获取,就可以。
最后总结:在onStop()、onRestart()中都不能正常获取到正常的毫秒值,
在onPause()中可以获取到。
具体内部细节,还需要进一步了解。
0 0
- VideoView中getDuration()和getCurrentPosition()获取错误的问题
- Android VideoView中getDuration()方法使用问题
- 关于ScrollView中加入VideoView的问题
- HTML5的getCurrentPosition() 地理定位,某些浏览器报错问题
- 【总结】关于MediaPlayer中的getCurrentPosition()和seekTo(int)的总结
- 关于MediaPlayer中的getCurrentPosition()和seekTo(int)的总结
- 关于MediaPlayer中的getCurrentPosition()和seekTo(int)的总结
- MediaPlayer getCurrentPosition 等于0问题
- VideoView 在ScrollView中 滑动出现的问题
- android开发中解决VideoView显示尺寸异常的问题
- VideoView中实现循环播放视频的问题
- VC++MFC中 CWMPMedia.GetDuration()获得为0值的问题解决方案
- 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题
- 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题
- Android VideoView状态跟踪和错误处理
- android中videoView的使用
- Android的videoView和mediaController
- Android中关于ScrollView中有视频播放器VideoView时问题的总结
- 在Visual C++ 2012(MSVC)编译SDCC编译器
- Hadoop 配置参数摘要和默认端口整理
- ionic调试方法总结
- 【Android】【Studio】Sdudio 快捷键
- 深度剖析C++对象池自动回收技术实现
- VideoView中getDuration()和getCurrentPosition()获取错误的问题
- 不相交集ADT
- 详解js闭包
- Android学习笔记——Button(按钮)响应事件的四种方式
- html5系列:form 2.0 新表单属性
- J2EE,MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- linux CenterOS 下 mysql-5.6.26.tar.gz源码安装
- 【C#】窗体间互相传值
- 数据库大数据量处理问题讨论