Tôi đang sử dụng thành phần VideoView để phát video. Tôi dường như không thể xóa hiển thị VideoView sau khi tôi gọi thủ công stopPlayback(). Tôi muốn đặt lại VideoView để nền ban đầu hiển thị.Android VideoView hiển thị rõ ràng sau stopPlayback()
- Phát video trong thành phần VideoView.
- Chọn video mới để phát.
- VideoView bị kẹt trên khung hình cuối cùng của video đầu tiên cho đến khi video tiếp theo bắt đầu. Nếu có lỗi với video tiếp theo, hình ảnh tĩnh từ video đầu tiên vẫn bị kẹt ở đó.
- Nếu tôi để trạng thái phát video hoàn thành, màn hình sẽ bị xóa.
Mã Tôi đang sử dụng:
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();
}
}
Lưu ý rằng dựa trên các nguồn VideoView.java, stopPlayback() có các hành động sau trên MediaPlayer cơ bản:
public void stopPlayback() {
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
Khi Tôi làm điều này, phát lại tiếp theo vẫn hiển thị khung cuối cùng của khung hình trước đó. Bất kỳ ý tưởng nào về lý do tại sao điều đó xảy ra? – slhck
Khung hình video thực tế được vẽ trên bề mặt "bên dưới" VideoView. Đặt nền trên VideoView sẽ ẩn khung nhưng không xóa nó.Khi nền được xóa, khung cũ vẫn còn đó. – William