MediaPlayer遇到的几个坑
来源:互联网 发布:react pdf js 编辑:程序博客网 时间:2024/06/05 15:32
MediaPlayer遇到的几个坑
1、onCompletion 异常调用。
在做项目的时候发现有时候音乐还没有播放完,或者是切换音乐的时候总是莫名其妙的调用,根据网上查资料说是因为在setDataSource之前调用了getDuration()等方法onCompletion()就会被调用。网上的解决方法就是根据mediaplay的生命周期加上状态码,然后根据状态码来判断是否是异常调用,如果是异常调用就不作处理。
我的解决方法比较简单粗暴,根据我的观察发现,每次异常调用的时候mp.getDuration()的值不是等于0就是特别大的值,算下来的时长差不多有好几天,而在我的项目里音乐的时长根本就不可能这么长。所以我直接
if (mp.getDuration() == 0 || mp.getDuration() > 3000000) { return; }
2、IllegalStateException 异常
这个异常经常出现在我切换音乐的播放列表的时候,当我一切换音乐他总是会出现。再结合这个异常的意思,也就是非法的状态。怎么我好端端的播放音乐就非法状态了呢?
查网上资料后发现如果Mediaplay没有onPrepared好的话,我们去getCurrentPosition或者是getDuration等等肯定是不行的。而我的项目进度条播放时都会去获取当前进度,所以我们只要在Mediaplay中加个监听:
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mIsTrackPrepared = true; } });
然后在getCurrentPosition等方法中加个判断就可以了。
public static long getCurrentPosition() { if (mPlayer != null) { try { if (mIsTrackPrepared){ return mPlayer.getCurrentPosition(); }else { return 0; } } catch (IllegalStateException e) { return 0; } } else { return 0; } }
0 0
- MediaPlayer遇到的几个坑
- android开发MediaPlayer遇到的问题记录
- xcode7 ios9遇到的几个坑
- PHP链接ORACLE遇到的几个坑
- 数一数SolrCloud5.5遇到的几个坑。。。
- python 链接oracle遇到的几个坑
- 使用TabLayout遇到的几个坑
- 项目实践中遇到的几个坑
- 在Android开发中遇到的MediaPlayer问题
- android播放器:mediaplayer之遇到的问题篇
- android 中的使用Rigtone,Soundpool和Mediaplayer遇到的问题
- 几个考试遇到的题目
- 遇到的几个算法题
- 最近遇到的几个大坑
- CSS遇到的几个兼容性问题
- iOS开发--遇到的友盟的几个坑
- Android ToolBar的meun自定义位置遇到的几个坑
- 对emqttd做benchmark的时候遇到的几个坑
- LightOJ 1318 Strange Game(组合数学+数论)
- IIS 上传大小设置默认30M
- fast-fail机制解析
- 小记打包 和svn上传命令
- 八大排序算法
- MediaPlayer遇到的几个坑
- python——注释 语句格式 标识符
- Web应用安全之XSS高阶
- js拼装表单完成Post请求发送
- 打印机配置连接
- jS实现兼容的div拖放功能
- C++ -- variadic template (可变参数模板)
- 关于在NGUI坐标系挂载父级SetParent(null)后回到屏幕中心的问题
- sql查找两条以上的数据 having