Подтвердить что ты не робот

Слушатель (или обработчик) для завершения видео

У меня есть следующий код, чтобы проверить воспроизведение видео с удаленного веб-сервера через его URL.

videoView = (VideoView)this.findViewById(R.id.videoView);
        MediaController mc = new MediaController(this);
        videoView.setMediaController(mc);
        videoView.setVideoURI(Uri.parse("http://sayedhashimi.com/downloads/android/movie.mp4"));
        videoView.requestFocus();

Код работает отлично, даже в эмуляторе Android. Я просто хотел бы узнать, есть ли какой-нибудь слушатель (или обработчик) для обнаружения окончания воспроизводимого видео?

Обновление:

У меня есть следующий код:

   @Override
        protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.player);

        videoView = (VideoView)this.findViewById(R.id.videoView);
        playVideo();

        // video finish listener
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                // not playVideo
                            // playVideo();

                            mp.start();
            }
        });
    }

    public void playVideo() {
            MediaController mc = new MediaController(this);
            videoView.setMediaController(mc);
            videoView.setVideoURI(Uri.parse("http://sayedhashimi.com/downloads/android/movie.mp4"));
            videoView.requestFocus(); 
        }

Когда действие только что вызывается, видео работает отлично, но когда видео заканчивается, я хотел бы, чтобы он снова воспроизводился, что не происходит.

4b9b3361

Ответ 1

Кажется, что вы ищете

setOnCompletionListener(MediaPlayer.OnCompletionListener l)

Более подробное объяснение можно найти здесь

ИЗМЕНИТЬ

В этом показано решение, в котором воспроизведение вызывается после завершения с использованием VideoView, MediaController и setOnCompletionListener().

Ответ 2

вот мой рабочий кусок кода:

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
        {           
            public void onCompletion(MediaPlayer mp) 
            {
                // Do whatever u need to do here

            }           
        });   

Ответ 3

        vidView=(VideoView)findViewById(R.id.vidView);
    vidView.setMediaController(null);
    vidView.setVideoPath( "/mnt/external_sd/somerandommovie.3gp" );
    vidView.start();

    vidView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {
                        vidView.start();
        }
    });

Я обнаружил, что слушатель стрелял, проблема заключалась в том, что mp.start(), похоже, ничего не делал, поэтому вызов, начинающийся снова на исходном объекте, кажется, работает нормально.

Ответ 4

в вашем слушателе onCompletion, попробуйте использовать videoView.start(); вместо mp.start();

Ответ 5

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