先上代码
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是个单例啊!!!!!
求教求教!!!