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?
- ¿Cómo permitir a los usuarios ver y reproducir canciones en Android a las que ya tienen acceso (por ejemplo, a través de Google Play)?
- Error de MediaPlayer de Android al usar las llamadas de reinicio () y de liberación ()
- Error al crear MediaPlayer con Uri o archivo en activos
- Detener / liberar Mediaplayer en onDestory () hace que NullPointerException
- Android - Múltiple, transmisión simultánea de audio
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.
- VideoView: IllegalStateException en MediaPlayer.getVideoWidth
- Android: reproductor nativo con subtítulos
- Android Problemas al reproducir archivos de audio
- ¿Cómo reanudar el reproductor multimedia?
- Reproducción de audio de MediaStore en un reproductor de medios Android
- Android: reproductor de música por defecto en lockscreen
- Java.lang.IllegalStateException ¿qué significa?
- Reproducción de vídeo mediante la clase MediaPlayer
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.