我使用几乎相同的代码来播放两个视频,第一个视频可以完美播放,但是第二个却无法播放。当我按下下一个视频按钮时,程序会崩溃,并显示以下错误信息:
WARN/System.err(15726): java.lang.IllegalStateException
WARN/System.err(15726): at android.media.MediaPlayer.setDataSource(Native Method)
源代码:
第一段示例代码:
mediaPlayer = new MediaPlayer();
playURI = receiveIntent.getStringExtra("playURI");
showDebugInfo("play uri "+playURI);
Log.e("Gplayer on create", "play uri "+playURI);
try {
mediaPlayer.setDataSource(playURI);
} catch (IllegalArgumentException e) {
Log.v(LOGTAG, e.getMessage());
finish();
} catch (IllegalStateException e) {
Log.v(LOGTAG, e.getMessage());
finish();
} catch (IOException e) {
Log.v(LOGTAG, e.getMessage());
finish();
}
当按下下一个按钮时,它会运行以下代码:
String uri = listAdapter.getItem(position).getItem().getFirstResource().getValue();
showDebugInfo(" Uri "+uri);
if(mediaPlayer != null){
mediaPlayer.stop();
}
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(uri);
mediaPlayer.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
finish();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
finish();
}
为什么会这样呢?我检查了两部分,唯一的不同是第一部分新建了一个媒体播放器,而第二部分则是让媒体播放器停止并重置,然后再进行相同操作。