首页 > 移动平台 > 详细

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

时间:2015-08-20 12:06:15      阅读:371      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!