正文  多媒体 > 视频/Video >

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

使用android MediaPlayer播放音频文件时,有时会出现prepareasync called in state 8错误。以下方法可以避免这个异常出现。 view sourceprint?01 private voidplayAudio(String audioUri){ 02 03 ......

使用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
12       if(mMediaPlayer != null) {
13
14        mMediaPlayer.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 {
02 if (!isPlaying) {
03  isPlaying = true;
04  //装载资源
05  mediaPlayer = MediaPlayer.create(PlaySDMp3Activity.this, R.raw.trouble);
06  isReleased = false;
07  mediaPlayer.setLooping(true);
08
09  mediaPlayer.start();
10  mTextView.setText("当前正在播放音乐!");
11 }
12 } catch (IllegalStateException e) {
13 // TODO Auto-generated catch block
14 e.printStackTrace();
15 }
 
 
MediaPlayer.create(context,resId)这个方式配置数据源后,就完成了初始化,所以不用prepare可以直接start了