使用android MediaPlayer播放音频文件时,有时会出现prepareasync called in state 8错误。

以下方法可以避免这个异常出现。

private void playAudio(String audioUri){

Uri uri = Uri.parse(audioUri);

mMediaPlayer = MediaPlayer.create(getApplicationContext(), uri);

try {

//在播放之前先判断playerMusic是否被占用,这样就不会报错了

if (mMediaPlayer != null) {

mMediaPlayer.stop();

}

mMediaPlayer.prepare();

mMediaPlayer.start();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

另一种解决办法:

try {
if (!isPlaying) {
isPlaying = true;
//装载资源
mediaPlayer = MediaPlayer.create(PlaySDMp3Activity.this, R.raw.trouble);
isReleased = false;
mediaPlayer.setLooping(true);

mediaPlayer.start();
mTextView.setText("当前正在播放音乐!");
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

MediaPlayer.create(context,resId)这个方式配置数据源后,就完成了初始化,所以不用prepare可以直接start了

更多相关文章

  1. 修正android 处理连续按键两次
  2. android IApplicationToken分析
  3. Android音视频处理之MediaExtractor
  4. Android(安卓)2.2完全退出程序, 使用广播机制
  5. android音乐播放器(4)
  6. android通过NFC读取卡号
  7. Android开发学习笔记:Android很有用的代码片段
  8. Android四大图片缓存框架之-Fresco之initialize(二)
  9. Android(安卓)备忘录

随机推荐

  1. android SDK与ADT版本更新问题
  2. android String
  3. android 获取控件真实高度
  4. Android使用XPush配置极光推送
  5. android启动画面
  6. Android预定义样式
  7. 1.8 Android(安卓)SQLite数据库
  8. [置顶] Android(安卓)View系统学习文章汇
  9. Android(安卓)build system
  10. Android(安卓)Spinner