Я использую компонент VideoView для воспроизведения видео. Кажется, я не могу очистить дисплей VideoView после того, как я вручную вызову stopPlayback(). Я хотел бы reset 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;
}
}