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

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

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

第1种方法:

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(); } }

第2种方法:

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

posted on 2015-08-20 10:43  鸿钧老祖  阅读(1295)  评论(0编辑  收藏  举报

导航