Android VideoView повторение - PullRequest
       10

Android VideoView повторение

8 голосов
/ 01 февраля 2012

У меня есть приложение с 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 ]

10 голосов
/ 04 февраля 2014

Если у вас есть только одно видео для воспроизведения, вы можете установить Looping (true) в вашем подготовленном слушателе.

myVideoView.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.setLooping(true);

        }
    });

и все готово.

3 голосов
/ 05 февраля 2012

Пока это:

mp.reset();

внутри обратного вызова onComplete, кажется, исправляет это. Было бы очень интересно, если бы кто-нибудь мог объяснить, что с ним происходит.

...