Android VideoView повторение
У меня есть приложение с VideoView, чтобы сделать воспроизведение видео на цикле, я использую onCompletionListner для вызова setVideoPath () снова, например:
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
mVideoView.start();
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//I have a log statment here, so I can see that it is making it this far.
mp.reset(); // <--- I added this recently to try to fix the problem
mVideoView.setVideoPath(file.getAbsolutePath());
}
});
Эта настройка хорошо работает на всех устройствах, с которыми я сталкивался до сих пор, у меня никогда не было проблем с этим, не повторяясь.
однако Motorola Xoom, которую я тестирую, недавно была обновлена до ICS. Теперь, когда он находится на ICS, это будет работать некоторое время и цикл видео. Но в конце концов (я добавил счетчик и некоторые журналы, кажется, нет никакого шаблона, сколько раз он успешно петляет перед остановкой), он прекратит цикл и просто сядет на стоп-кадр первого кадра в фильме.
кто-нибудь знает, что может вызвать это не цикл должным образом больше? Или кто-нибудь знает другой способ заставить VideoView правильно петлять, который все еще работает под ICS?
2 ответов
Если у вас есть только одно видео для воспроизведения, вы можете setLooping(true) в вашем готовом слушателе.
myVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.setLooping(true);
}
});
и вы сделали.
пока этот:
mp.reset();
внутри обратного вызова onComplete, кажется, исправить это. Было бы очень интересно, если бы кто-нибудь мог объяснить, что с ним происходит.