我正在使用 VideoView 组件来播放视频。手动调用 stopPlayback() 后,我似乎无法清除 VideoView 显示。我想重置 VideoView 以便原始背景可见。
- 在 VideoView 组件中播放视频。
- 选择要播放的新视频。
- VideoView 卡在第一个视频的最后一帧,直到下一个视频开始。如果下一个视频出现错误,则第一个视频中的静态图像仍然卡在那里。
- 如果我让视频播放到完成状态,则显示被清除。
我正在使用的代码:
private VideoView videoViewer = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
if (videoViewer != null) {
videoViewer.setOnPreparedListener(new OnPreparedListener());
}
...
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (videoViewer != null) {
videoViewer.stopPlayback();
videoViewer.setVideoURI(Uri.parse("http://my_vido_url/playlist.m3u8"));
}
}
private class OnPreparedListener implements MediaPlayer.OnPreparedListener {
@Override
public void onPrepared(MediaPlayer mp) {
videoViewer.start();
}
}
请注意,基于 VideoView.java 源,stopPlayback() 对底层 MediaPlayer 执行以下操作:
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}