使用android MediaPlayer播放音频文件时,有时会出现prepareasync called in state 8错误。
以下方法可以避免这个异常出现。
view source
print?
01 private voidplayAudio(String audioUri){
02
03 Uri uri = Uri.parse(audioUri);
04
05 mMediaPlayer = MediaPlayer.create(getApplicationContext(), uri);
06
07
08 try {
09
10 //在播放之前先判断playerMusic是否被占用,这样就不会报错了
11
12if(mMediaPlayer != null) {
13
14mMediaPlayer.stop();
15
16}
17
18 mMediaPlayer.prepare();
19
20 mMediaPlayer.start();
21
22 } catch(IllegalStateException e) {
23
24 e.printStackTrace();
25
26 } catch(IOException e) {
27
28 e.printStackTrace();
29
30 }
31
32 }
另一种解决办法:
01 try {
02if (!isPlaying) {
03isPlaying = true;
04//装载资源
05mediaPlayer = MediaPlayer.create(PlaySDMp3Activity.this, R.raw.trouble);
06isReleased = false;
07mediaPlayer.setLooping(true);
08
09mediaPlayer.start();
10mTextView.setText("当前正在播放音乐!");
11}
12 } catch (IllegalStateException e) {
13// TODO Auto-generated catch block
14e.printStackTrace();
15 }
MediaPlayer.create(context,resId)这个方式配置数据源后,就完成了初始化,所以不用prepare可以直接start了