Инициировать событие VideoView onCompletion при ошибке

Я создаю список видео, которые воспроизводятся в VideoView.

Я хочу поймать ошибку «Извините, это видео невозможно воспроизвести» и просто перейти к следующему видео. Переключение видео обрабатывается в файле onCompletionListener.

Я уже получил код для onErrorListener из здесь, но я просто не могу найти, как вызвать "видео завершено" событие.

Любые идеи?


person Ron    schedule 13.02.2013    source источник
comment
Вы хотите ловить ошибки, а затем воспроизводить следующее видео, или вы просто хотите, чтобы вызывался OnCompletionListener? Вы установили .setOnCompletionListener для своего медиаплеера?   -  person Slickelito    schedule 13.02.2013
comment
Я хочу, чтобы событие было запущено...   -  person Ron    schedule 13.02.2013


Ответы (2)


Вы можете сделать то же самое в onErrorListener, что и в onCompletionListener, в onCompletion вы устанавливаете видео на следующее (каким-то образом я не знаю вашу реализацию), а затем при ошибке используйте тот же код (скорее всего, рефакторинг в другую функцию). НАПРИМЕР:

onError(....)
    if(error = watever error you need)
    functionNextVideo()

обратите внимание, что приведенное выше является псевдокодом.

Но кроме этого onCompletionListener не будет запущен, если видео не завершится, как предполагалось.

person Raigex    schedule 13.02.2013

Как указано в исходном коде публичного интерфейса OnErrorListener:

@return True if the method handled the error, false if it didn't.
         * Returning false, or not having an OnErrorListener at all, will
         * cause the OnCompletionListener to be called.
         */
        boolean onError(MediaPlayer mp, int what, int extra);

поэтому onCompletionListener будет вызываться, если вы вернете false или не обработаете обратный вызов.

person swisscoder    schedule 08.08.2014