MediaPlayer:在状态4中停止调用

时间:2012-01-10 00:10:47

标签: android android-mediaplayer

我的活动有一个异步准备视频的VideoView:

Uri mUri = "uri to streaming video"
VideoView mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
mVideoView.setOnErrorListener(this);
mVideoView.setOnCompletionListener(this);
mVideoView.setVideoURI(mUri);
mVideoView.setMediaController(null);

mVideoView.setOnPreparedListener(this);

当它正在“准备”时我会显示一个ProgressDialog ...如果我在此状态下按下后退按钮,则会向ADB打印以下错误,并且活动会在黑屏上等待一小段时间静默崩溃:

E/MediaPlayer( 2204): stop called in state 4
E/MediaPlayer( 2204): error (-38, 0) 
W/ActivityManager(   59): Activity pause timeout for HistoryRecord{45080368 com.myapp.VideoPlayerActivity}

阻止VideoView准备视频以便退出活动的最佳方法是什么?

注意:在调用正在准备的视频的回调之前,我无法访问实际的MediaPlayer对象:

@Override
public void onPrepared(MediaPlayer player)

...当MediaPlayer / VideoView正在“准备”时没有发生。

2 个答案:

答案 0 :(得分:2)

我没有对自己进行测试,但是当你准备状态时,你应该能够reset() MediaPlayer。

答案 1 :(得分:1)

在按下后退按钮时执行MediaPlayer.stop()之前尝试调用MediaPlayer.prepare()(实现onPause或onStop活动方法)