Listener (o controlador) para el acabado de video

Tengo implementar el siguiente código para probar la reproducción de un video desde un servidor web remoto a través de su 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(); 

El código funciona bien, incluso en el emulador de Android. Sólo me gustaría saber si hay algún oyente (o manejador) para detectar el acabado del video que se está reproduciendo?

Actualizar:

Tengo el siguiente código ahora:

  @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(); } 

Cuando la actividad se acaba de llamar, el vídeo funciona bien, pero cuando el vídeo termina, me gustaría que se reproduce de nuevo, que no está ocurriendo.

Parece que estás buscando

 setOnCompletionListener(MediaPlayer.OnCompletionListener l) 

Se puede encontrar una explicación más detallada aquí

EDITAR

Esto muestra una solución donde se llama a la reproducción después de la finalización usando VideoView , MediaController y setOnCompletionListener() .

Aquí está mi pedazo de trabajo del código:

 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(); } }); 

Me pareció que el oyente estaba disparando, el problema fue mp.start () no parece hacer nada, por lo que llamar a empezar de nuevo en el objeto original parece estar funcionando bien.

En su oyente de onCompletion, intente usar videoView.start (); En lugar de mp.start ();

Asegúrese de que está utilizando el reproductor en el hilo principal, parece que la devolución de llamada sólo funciona en el hilo principal.

  • Mi reproductor de audio streaming continúa tocando durante una llamada telefónica - ¡no puedo hacer que se detenga! (Androide)
  • Android: función de setVolume de MediaPlayer
  • ¿Cómo saber la duración de la canción de audio antes de la transmisión?
  • Mostrar la hora en que se reproduce la canción en android
  • Compruebe si la reproducción de música en android media player API
  • ¿Cómo puedo configurar el permiso de archivo a MODE_WORLD_READABLE?
  • Cómo reproducir audio en segundo plano en segundo plano en Android?
  • Cómo reproducir la transmisión de audio / vídeo desde una url?
  • ¿Códigos de error de Android MediaPlayer?
  • Implementación de reproductor de audio en listview en android
  • Cómo obtener el nombre de archivo de URI
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.