zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    虚方法 C++快速入门23
    抽象方法 C++快速入门24
    网址探测器 零基础入门学习Delphi41
    网址探测器 零基础入门学习Delphi41
    抽象方法 C++快速入门24
    虚方法 C++快速入门23
    运算符重载 C++快速入门25
    静态属性和静态方法2 C++快速入门22
    linux系统中的文件访问控制列表ACL
    linux系统中的文件类型
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4744411.html
Copyright © 2011-2022 走看看