¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrolle una aplicación Android
  3. Imágenes, sonido y vídeo
Extrait - Desarrolle una aplicación Android Programación en Java con Android Studio
Extractos del libro
Desarrolle una aplicación Android Programación en Java con Android Studio
1 opinión
Volver a la página de compra del libro

Imágenes, sonido y vídeo

Tomar una fotografía

La mayoría de los smartphones y tabletas integran, además de los sensores que ya hemos estudiado en el capítulo Explotar el teléfono, una o varias cámaras para tomar fotografías.

La aplicación LocDVD utiliza esta capacidad para ofrecer la posibilidad a los usuarios de tomar una fotografía, que se muestra después en la ficha del DVD.

1. Preparación

La ficha del DVD debe presentar un botón que permita tomar una fotografía e integrar un componente ImageView para visualizarla. A su vez, hay que agregar un campo en la tabla DVD para almacenar la ruta de acceso a la foto.

 Edite el archivo de layout de la ficha del DVD, es decir, el archivo activity_viewdvd.xml.

 El botón que permitirá tomar la fotografía está situado debajo de los botones Modificar la fecha de última visualización y Enviar una notificación. El botón se explota en el código del fragmento, de modo que hay que asignarle un identificador único, por ejemplo, takePhoto.

El código correspondiente es el siguiente:


<Button  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/tomar_una_foto"  
    android:id="@+id/takePhoto"/>
 

Se ha agregado la opción tomar_una_foto en el archivo strings.xml.

 El componente ImageView se encarga de mostrar la foto. Debe situarse entre el componente encargado de la visualización del resumen de la película y la serie de botones. Ocupa todo el ancho de la pantalla y su altura se adapta a su contenido. Referenciado por el código, su identificador es, por ejemplo, fotoDVD:


<ImageView  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    android:id="@+id/fotoDVD"/>
 

 La altura total del layout supera, a priori, la altura de los smartphones, de modo que hay que agregar un contenedor de vistas de tipo ScrollView para que todos los componentes estén accesibles al usuario. El archivo de layout completo es el siguiente:


<?xml version="1.0" encoding="utf-8"?>  
<ScrollView   
xmlns:android="http://schemas.android.com/apk/res/android"  ...

Reproducir un sonido

Verdaderas estaciones multimedia, los terminales Android pueden reproducir sin problema cualquier archivo de sonido, siempre y cuando sea compatible con la plataforma.

La lista completa de formatos soportados está disponible en la siguiente dirección, en el apartado Core Media Format: http://developer.android.com/guide/appendix/media-formats.html

1. Leer un archivo de sonido local

La lectura de un archivo sonoro distribuido con la aplicación es muy sencilla.

El archivo de sonido es, para el sistema, un recurso, al igual que los son las imágenes integradas o los archivos de layout. Los sonidos deben, a este respecto, almacenarse en la carpeta /res/raw/ del proyecto Android.

El framework Android presenta la clase MediaPlayer, clase que se utiliza para la lectura de los archivos multimedia (sonidos y vídeos).

Además del constructor por defecto, que se utilizará en la siguiente sección, MediaPlayer expone el método estático create, que devuelve una instancia de MediaPlayer lista para su uso:


static MediaPlayer create(Context context, int resid)
 

El primer parámetro es el contexto de ejecución de la aplicación, el segundo es el identificador del recurso sonoro que debe recuperarse. Por ejemplo, en el contexto de una actividad:


MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.sonido_bip);
 

Una vez agregado el archivo sonido_bip.mp3 a la carpeta /res/raw/ del proyecto, basta con lanzar su lectura, invocando el método start de la clase MediaPlayer:


mediaPlayer.start();
 

Hay que tener la precaución...

Reproducir un vídeo

Si bien es posible utilizar la clase MediaPlayer para reproducir une vídeo, la plataforma Android provee un componente más sencillo de utilizar, VideoView.

Esta sección presenta una integración estándar de un componente VideoView, que permitirá leer un vídeo alojado en un servidor remoto.

 La primera etapa consiste en definir un archivo de layout para visualizar el vídeo. El componente VideoView, como los componentes clásicos que ya hemos abordado, se integra directamente en un archivo de layout, utilizando la etiqueta <VideoView>. Sin embargo, debe definirse en un contenedor de vistas de tipo FrameLayout: esto permite al sistema agregar automáticamente los controles de lectura del vídeo.

Un archivo de layout canónico sería, por ejemplo, el siguiente:


<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout   
xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent">  
    <FrameLayout  
        android:layout_width="match_parent"  
        android:layout_height="match_parent">  
        <VideoView  ...