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了

举报

相关推荐

0 条评论