Reproducción de vídeo desde RAW en Android
Es muy común visualizar un vídeo corto con la marca o nombre de la empresa al encender nuestras aplicaciones.
CREACIÓN DE PROYECTO
Para comenzar crearemos un nuevo proyecto llamado ReproducirVideo, en el que crearemos una actividad llamada MainActivity.java con un layout activity_main.xml.
Si tenemos problemas al crear un nuevo proyecto, podemos repasar el
tutorial HolaMundo disponible en Imagina Formación.
Una vez creado veremos en el Package Explorer el nuevo proyecto con la siguiente estructura.
Como segundo paso debemos de crear una nueva carpeta llamada raw/ dentro del directorio res/.
La carpeta raw la utilizaremos para almacenar recursos adicionales, normalmente en formato distinto a XML, que no se incluyan en el resto de carpetas de recursos.
Nota: Disponemos en la página oficial de Android Developers todos los formatos que reproduce el sistema además de otras recomendaciones. Los dispositivos actuales suelen incluir más codecs que nos permiten reproducir
multitud de formatos de vídeo.
IMPLEMENTACIÓN
En primer lugar crearemos un control
VideoView que ocupe toda la pantalla donde visualizaremos el vídeo de
Mono Agency.
Lo definiremos en el layout de la Activity.
activity_main.xml
01
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
03 | android:layout_width= "match_parent" |
04 | android:layout_height= "match_parent" |
05 | android:background= "#FFFFFFFF" > |
08 | android:id= "@+id/videoView_video" |
09 | android:layout_width= "wrap_content" |
10 | android:layout_height= "wrap_content" |
11 | android:layout_alignParentBottom= "true" |
12 | android:layout_alignParentTop= "true" |
13 | android:layout_centerInParent= "true" /> |
|
|
Desde la Activity creamos un objeto VideoView y lo enlazamos con el control del layout mediante la sentencia findViewById(). El objeto Uri se lo pasamos a VideoView de forma que le indiquemos la ruta del vídeo.
Por último iniciamos la reproducción mediante videoView.start(). De ésta forma conseguimos que al iniciar la actividad el vídeo empiece a reproducirse.
MainActivity.java
01 | package com.example.reproducirvideo; |
03 | import android.app.Activity; |
04 | import android.net.Uri; |
05 | import android.os.Bundle; |
06 | import android.widget.VideoView; |
08 | public class MainActivity extends Activity { |
11 | public void onCreate(Bundle savedInstanceState) { |
12 | super.onCreate(savedInstanceState); |
13 | setContentView(R.layout.activity_main); |
15 | VideoView videoView = (VideoView) findViewById(R.id.videoView_video); |
20 | videoView.setVideoURI(path); |
|
|
Al ejecutar el proyecto veremos el vídeo introducción de
Mono Agency.
Si nos fijamos podemos ver las barras de estado del dispositivo, pero ésto no nos interesa. No queda elegante. Podemos ocultarlas desde el código de la actividad o añadiendo unos atributos en el AndroidManifest.xml.
Utilizaremos la segunda técnica. Le añadimos los atributos screenOrientation y theme a cada una de las actividades que deseemos ocultar las barras de estado.
AndroidManifest.xml
EN ESTA OCACION UTILISARMOS LA FORMA DE OCULTARLA EN CADA ACTIVIDAD.
01
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
03 | package= "com.example.reproducirvideo" |
04 | android:versionCode= "1" |
05 | android:versionName= "1.0" > |
07 | <uses-sdk android:minSdkVersion= "8" /> |
10 | android:icon= "@drawable/ic_launcher" |
11 | android:label= "@string/app_name" > |
13 | android:name= ".MainActivity" |
14 | android:label= "@string/app_name" |
15 | android:screenOrientation= "portrait" |
16 | android:theme= "@android:style/Theme.NoTitleBar.Fullscreen" > |
18 | <action android:name= "android.intent.action.MAIN" /> |
20 | <category android:name= "android.intent.category.LAUNCHER" /> |
|
|
El resultado lo vemos a continuación:
AMPLIACIÓN
Si queremos aprovechar éste código para crear un reproductor. Podemos añadir unos controles para el usuario. Android nos provee de un sencillo control de los vídeos. Modificar el código deMainActivity.java. Mediante la clase MediaControler añadimos los nuevos controles.
01 | package com.example.reproducirvideo; |
03 | import android.app.Activity; |
04 | import android.net.Uri; |
05 | import android.os.Bundle; |
06 | import android.widget.MediaController; |
07 | import android.widget.VideoView; |
09 | public class MainActivity extends Activity { |
12 | public void onCreate(Bundle savedInstanceState) { |
13 | super.onCreate(savedInstanceState); |
14 | setContentView(R.layout.activity_main); |
16 | VideoView videoView = (VideoView) findViewById(R.id.videoView_video); |
22 | MediaController mc = new MediaController( this ); |
23 | videoView.setMediaController(mc); |
25 | videoView.setVideoURI(path); |
Controlador del vídeo se nos mostrará durante unos segundos y se ocultará de modo que si el usuario pulsa sobre el vídeo se le volverá a mostrar.