android错误之MediaPlayer用法的Media Player called in state *,androidmediaplayer
用到Media Player,遇到几个问题,记一下
用法就不说了,使用的时候最好参考一下mediaPlayer的这张图
第一个错误是Media Player called in state 8
这个是因为在调用start之前没有prepare,因为我是用了
mediaPlayer = MediaPlayer.create(context, R.raw.notice);
去初始化的播放器,这个接口说明
只要成功返回了播放器就不需要再去prepare了,但是我之后多次调用stop和start,就导致出现上面错误,
对照图上也可以看出来,如果在暂停的时候使用多是stop,则在start之前必须重新prepare,否则报错Media Player called in state 8
如果暂停使用pause,那么直接start就可以,不用prepare。
第二个错误是Media Player called in state 0
这个错误是由于
public void play(){
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
}
mediaPlayer.start();
}
改成下面这样
public void play(){
try {
mediaPlayer.setOnPreparedListener(preparedListener);
mediaPlayer.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
OnPreparedListener preparedListener = new OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
};
一看就明白了,刚开始我调完prepare就直接去start了,但是这时候可能prepare还没有成功,所以就报了上面的错误。
之后又遇到一个prepareAsync called in state 8
这个解决方法在之前那个基础上加一行代码,确保在prepare之前播放器已经stop了
public void play() {
try {
if(mediaPlayer !=null){
mediaPlayer.stop();
}
mediaPlayer.setOnPreparedListener(preparedListener);
mediaPlayer.prepareAsync();
} catch (IllegalStateException e) {
e.printStackTrace();
}
currentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);
if (currentVolumn < maxVolumn) {
am.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolumn, 0);
}
}
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(转载请说明出处)
android错误之MediaPlayer用法的Media Player called in state *,androidmediaplayer的更多相关文章
- My安卓知识4--Media Player called in state 0
//根据被传递的歌曲名称,选择播放的歌曲 public void playByName(String name){ mp = new MediaPlayer(); t ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- Android -- 多媒体播放之MediaPlayer使用内部实现简析
Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...
- win7自带windows media player 已停止工作
解决方法如下: 在计算机开始,菜单找到控制面板 ,然后打开程序和功能,选择打开或关闭window功能,媒体功能.再取消windows Media Center Windows MediaPlayer选 ...
- android 中uri.parse()用法
android 中uri.parse()用法 1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = ...
- Swift - 使用Media Player播放本地视频,在线视频
Media Player框架用于播放本地视频.音频,也可以在线播放视频和音频. 1,播放器MPMovieControlStyle样式有如下几种: (1)None: 没有播放控制控件 (2)Embedd ...
- [Winform]Media Player组件全屏播放的设置
摘要 在设置程序开始运行时,让视频全屏播放时,直接设置 windowsMediaPlay.fullScreen = true; 会报错,代码如下 windowsMediaPlay.URL = _vid ...
- 【已解决】unity4.2.0f4 导出Android工程报错:Error building Player: ArgumentException: Illegal characters in path. [unity导出android工程 报错,路径含有非法字符]
使用unity3D开发的一个客户端,需要导出为Android工程,然后接入一些第三方android SDK. unity版本 操作系统为: OS 名称: Microsoft Windows 7 旗舰版 ...
- 从getApplicationContext和getApplication再次梳理Android的Application正确用法
原文地址http://blog.csdn.net/ly502541243/article/details/52105466 原文地址http://blog.csdn.net/ly502541243/a ...
随机推荐
- Android开机广播
有些时候我们常常需要某个程序开机运行.在这个时候我们就需要监听系统的开机广播,然后启动我们的程序即可. 不多说 直接上代码: public class BootReceiver extends Bro ...
- [转]Json转换神器之Google Gson的使用
这几天,因为项目的需要,接触了Google的Gson库,发现这个东西很好用,遂记下简单的笔记,供以后参考.至于Gson是干什么的,有什么优点,请各位同学自行百度.话不多说,切入正题: 1. 下载Gso ...
- CYQ.Data 数据框架 使用篇一 入门指南
快速使用帮助 | 回贴(13) | 浏览(11303) | 发表日期 :2010-12-20 20:12:29 #楼主 本文针对V5版本进行修改于(2016-07-04) 下面是使用步骤: 一 ...
- Newtonsoft.Json 把对象转换成json字符串
var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...
- Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj
Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj 1. 俩个问题::识别垃圾文件与清理策略1 2. 如何识别垃圾图片1 2.1. 体积过小文件<1 ...
- Oracle not in子连接查询不到值的问题(not in 不能查询null数据)
前几天在项目中,做数据导入时,发现not in和in 查出来的条数不互补.ATABLE2明明中有些记录在ATABLE3中不存在,但是not in时查不出记录. CREATE TABLE ATABLE2 ...
- linux批量删除进程
在虚拟机用脚本跑了几十个client程序用来测试服务器,然后发现参数设置错误,得重来,就傻眼了,不知道怎么关这么多client进程,总不能一个一个关.还好,学习一下,想出了以下的命令. ps -e ...
- x01.os.11: IPC 路线图
学习的最好方法就是看代码,所以我们不妨跟着 IPC 的调用路线图,来学习学习 IPC. 从 x01.Lab.Download 下载代码后,首先进入 main.c 文件,在 TestA 中,有这么一句: ...
- 1---------java调用NLPIR(ICTCLAS2016)实现分词功能
备注:win7 64位系统,netbeans编程 NLPIR分词系统,前身是2000年发布的ICTCLAS,2009年更为现名.张华平博士打造. 实现步骤: 1.在Netbeans中,文件→新建项目→ ...
- android Unhandled exception type ParseException提示报错
Unhandled exception type ParseException 意思指:你有一个方法会抛出异常,但是你没有捕捉. 依提示添加一下即可解决: