Android MediaPlayer 播放prepareAsync called in state 8解决办法

举报
黄啊码 发表于 2022/06/29 00:43:18 2022/06/29
【摘要】 使用android MediaPlayer播放音频文件时,有时会出现prepareasync called in state 8错误。 以下方法可以避免这个异常出现。    1 ...

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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();
 
}
 
}

 另一种解决办法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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了

文章来源: markwcm.blog.csdn.net,作者:黄啊码,版权归原作者所有,如需转载,请联系作者。

原文链接:markwcm.blog.csdn.net/article/details/50237149

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。