如下代码报错prepareAsync called in state 1
java.lang.IllegalStateException
at android.media.MediaPlayer._prepare(Native Method)
at android.media.MediaPlayer.prepare(MediaPlayer.java:1184)
at sangfei.android.com.audiotestapk.VideoMainActivity.startPlayFirstVideo(VideoMainActivity.java:165)
at sangfei.android.com.audiotestapk.VideoMainActivity.initFirstPlayer(VideoMainActivity.java:159)
at sangfei.android.com.audiotestapk.VideoMainActivity.surfaceCreated(VideoMainActivity.java:129)
`` @Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO 自动生成的方法存根
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
//surfaceView创建完毕后,首先获取该直播间所有视频分段的url
// getVideoUrls();
//然后初始化播放手段视频的player对象
initFirstPlayer();
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO 自动生成的方法存根
}
/*
* 初始化播放首段视频的player
*/
private void initFirstPlayer() {
firstPlayer = new MediaPlayer();
firstPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
firstPlayer.setDisplay(surfaceHolder);
firstPlayer
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
onVideoPlayCompleted(mp);
}
});
//设置cachePlayer为该player对象
cachePlayer = firstPlayer;
initNexttPlayer();
//player对象初始化完成后,开启播放
startPlayFirstVideo();
}
private void startPlayFirstVideo() {
try {
firstPlayer.setDataSource(String.valueOf(getList().get(currentVideoIndex)));
} catch (IOException e) {
e.printStackTrace();
}
try {
firstPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
firstPlayer.start();
}`