码迷,mamicode.com
首页 > 移动开发 > 详细

Android(java)学习笔记180:Android MediaPlayer 播放prepareAsync called in state 8解决办法

时间:2015-08-20 12:09:32      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

使用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了,我们要时刻牢记NullPoint Exception,所以这里要加判断:

!isPlayingmMediaPlayer != null

Android(java)学习笔记180:Android MediaPlayer 播放prepareAsync called in state 8解决办法

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4744411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!