VideoView (Android)

TEORÍA

La etiqueta VideoView permite reproducir dentro de ella un vídeo que se le asigne a través de código Android.

La ruta de acceso al vídeo debe ser convertida a URI y asignarle dicha URI al VideoView.

Dicho vídeo a reproducir puede estar almacenado dentro del proyecto en la carpeta «res/raw» o bien puede estar detrás de una URL (en ese caso recuerda dar permisos de uso de internet en el manifiesto).

NOTA: Algunos vídeos no pueden ser reproducidos, depende del códec de vídeo usado. En esos casos aparecerá un mensaje que dice «No se puede reproducir el vídeo».

Se pueden añadir controles de vídeo con la clase Java «MediaController» (por defecto el vídeo no tendrá controles).

La clase VideoView de Java tiene dos EventListeners importantes:

  • OnPreparedListener: Que lanzará un evento cuando el vídeo esté cargado en memoria y listo para ser reproducido.
  • OnCompletionListener: Que lanza un evento cuando el vídeo ha terminado la reproducción.

PRÁCTICA

Definir la etiqueta VideoView, asignándole un ID
<VideoView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/videoview"/>
Asignar la URI del vídeo a la etiqueta
public class MyActivity extends AppCompatActivity{
  private VideoView videoView;
  protected void onCreate(Bundle savedInstanceState) {
    //...
    videoView = (VideoView) findViewById(R.id.videoview);
    //Si el vídeo está en la carpeta res/raw
    String videoPath = "android.resource://" + getPackageName() + "/" + R.raw.miVideo;
    //Si el vídeo está detrás de una URL
    String videoPath = "https://foo.com/miVideo.mp4";
    Uri videoUri = Uri.parse(videoPath);
    videoView.setVideoURI(videoUri);
  }
}
Añadir controles al vídeo
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
mediaController.setAnchorView(videoView);
Asociar OnPreparedListener al vídeo
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        Log.d("videoView", "ready to play");
        //Si queremos auto-start
        videoView.start();
    }
});
Asociar OnCompletionListener al vídeo
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        Log.d("videoView", "completed");
    }
});

 

 

 

Deja un comentario