MeidaPlayer准备的时候报错(Native Method)!!求助求助

先上代码

private MediaPlayer mediaPlayer;

private static final AudioPlayer AUDIO_PLAYER = new AudioPlayer();
private boolean mIsTrackPrepared  = false;


private AudioPlayer(){
    mediaPlayer = new MediaPlayer();
}

public static AudioPlayer getInstance(){
    return AUDIO_PLAYER;
}

public void setMediaPlayerPrepare(String path)throws IOException {
    mIsTrackPrepared  = false;

    if (mediaPlayer != null){
        mediaPlayer.stop();
    }
        mediaPlayer.reset();
        mediaPlayer.setDataSource(path);
        mediaPlayer.prepareAsync();
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                //判断是否准备好
                mIsTrackPrepared  = true;
                //设置进度条最大值
                ViewManager.setMusicSeekBarMax(mp.getDuration());
                //设置时间
                ViewManager.changeMaxTime(TimeUtils.timeUtils(mp.getDuration()));
                Log.d(TAG,mp.getDuration()+"==--==--");
                //mp.start();
            }
        });
}

public void setMediaPlayerStart(){
    if (mIsTrackPrepared == true){
        mediaPlayer.start();
    }
}

我在切换歌曲的时候调用了这两个方法,当我点几十次击切换歌曲时就会报错

图片说明

我在网上找了半天,发现他们说要把mediaPlayer释放release掉,再new一个新的,但我的mediaPlayer是个单例啊!!!!!
求教求教!!!

https://blog.csdn.net/xk7298/article/details/81589443