android - trata - video viral de la moto
Oyente(o manejador) para acabado de video (5)
Implementé 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. Solo me gustaría saber si hay algún oyente (o controlador) para detectar el final 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 se acaba de llamar a la actividad, el video funciona bien, pero cuando termina el video, me gustaría que se reproduzca nuevamente, lo cual no está ocurriendo.
Asegúrese de estar utilizando el reproductor en el hilo principal, parece que la devolución de llamada solo funciona en el hilo principal.
aquí está mi fragmento funcional de código:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
public void onCompletion(MediaPlayer mp)
{
// Do whatever u need to do here
}
});
en su oyente onCompletion, intente usar videoView.start (); en lugar de mp.start ();
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();
}
});
Descubrí que el oyente estaba disparando, el problema era que mp.start () no parecía hacer nada, por lo que llamar de nuevo al objeto original parece estar funcionando bien.