在使用Mediaplayer播放音频时,出现start called in state 0,原因主要是因为你在音频的播放顺序出现了问题
如图,在setDataSource()之后要先prepare(),然后才能start()。不然就会报错。
当我们在播放在线音频时,我们希望的是prepareAsync(),下面我就用这个来举例:
public void play(){
try {
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
}
在prepare完成之前,不能对mediaPlayer进行别的操作,例如getDuration等,不然也是会出现start called in state 0的错误