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

Я использую следующий код для тестирования воспроизведения видео с удаленного веб-сервера через его 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(); } 

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

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

 setOnCompletionListener(MediaPlayer.OnCompletionListener l) 

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

РЕДАКТИРОВАТЬ

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

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

 mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mp) { // Do whatever u need to do here } }); 
  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 (), похоже, ничего не делал, поэтому вызов, начинающийся снова с исходного объекта, кажется, работает нормально.

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

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