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, кажется, исправить это. Было бы очень интересно, если бы кто-нибудь мог объяснить, что с ним происходит.