Android: просмотр видео: как воспроизводить видео в цикле
У меня есть простое диалоговое окно с VideoView
в нем, и я хочу воспроизвести видео в цикле.
В настоящее время я использую быстрое исправление
//Video Loop
vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
vv.start();
}
});
но я хотел бы знать, есть ли лучший способ?
Edit
Я добавляю больше кода, потому что не знаю, как я могу получить доступ к объектной форме MediaPlayer VideoView
:
String path = defaultPath+currentVideoRessource;
if (path == null || path.length() == 0) {
Log.e("extra","File URL/path is empty");
} else {
// If the path has not changed, just start the media player
if (!path.equals(current) && mVideoView != null) {
Uri pathURI = Uri.parse(defaultPath+currentVideoRessource);
mVideoView.setVideoURI(pathURI);
}
current = path;
mVideoView.setOnCompletionListener(new MyOnCompletionListener(this));
//Video Loop
// mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
// public void onCompletion(MediaPlayer mp) {
// mVideoView.start(); //need to make transition seamless.
// }
// });
mVideoView.start();
mVideoView.requestFocus();
В настоящее время я изучаю использование непосредственно MediaPlayer
и SurfaceView
bu. Я хотел бы знать, есть ли способ с VideoView
напрямую
Ответы
Ответ 1
Используйте setLooping (true) на вашем экземпляре MediaPlayer.
- Edit -
Как использовать setOnPrepareListener вместо setOnCompletionListener? Это дает вам доступ к объекту MediaPlayer.
vv.setOnPreparedListener (new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
}
});
Ответ 2
Вы можете взять справочную форму ниже кодов, где setup_welcome_video - это видеофайл.
myVideo = findViewById(R.id.VideoView);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.setup_welcome_video);
myVideo.setVideoURI(uri);
myVideo.start();
myVideo.requestFocus();
myVideo.setOnPreparedListener (mp -> mp.setLooping(true));