3.7. Procesamiento de objetos multimedia. Clases. Estados, métodos y eventos Flashcards
Clases multimedia. Librerías (3)
Clases más importantes para el proceso de multimedia. Versatilidad de las librerías multimedia integradas en Android. Las librerías de Android abarcan todos los puntos necesarios para el desarrollo de apps multimedia de gran capacidad y alto rendimiento. Obviar aquí el uso de aplicaciones externas para la captura de audio y vídeo, así como para la reproducción multimedia.
Clases multimedia. Clase SoundPool. Clips y memoria (1)
Clase que permite la reproducción de clips de audio. Permitie cargar en memoria clips de audio desde la carpeta de recursos o desde un archivo del disco.
Clases multimedia. Clase SoundPool. Decodificación y bits (1)
Utiliza los servicios de decodificación de MediaPlayer para convertir los clips de audio en el formato básico PCM de 16 bits mientras se cargan en la memoria. La reproducción de los sonidos es más veloz, pues solo son decodificados una vez.
Clases multimedia. Clase SoundPool. Mezcla y prioridad (1)
Es capaz de mezclar todos los clips de audio de forma eficiente: establece prioridades para cada uno y controla el número máximo de ellos que pueden ser reproducidos al mismo tiempo.
Clases multimedia. Clase SoundPool. Londitud y memoria (1)
Es adecuada si el número de clips de audio y su longitud no es excesiva, de lo contrario, la memoria utilizada para almacenarlos podría ser más de la que disponga el terminal.
Clases multimedia. Clase MediaRecorder. Captacion y configuración (1)
Clase que permite la captación de audio y vídeo, según las fuentes que se le configuren. Permute configurar el formato y la longitud de los archivos de salida.
Clases multimedia. Clase MediaRecorder. Grabación y clase Camera2 (1)
Cuando se utilica con la clase Camera2, permitie grabar clips de vídeo y almacenarlos en disco en el formato deseado.
Clases multimedia. Clase MediaPlayer. Potencia y facilidad (1)
El reproductor de audio y vídeo por excelencia en Android debido a su potencia y facilidad de su uso.
Clases multimedia. Clase MediaPlayer. Desventaja y herramienta ExoPlayer (1)
La única desventaja es a la hora de reproducir audio o vídeo en streaming, en cuyo caso se puede pasar a ExoPlayer.
Clases multimedia. Clase ExoPlayer. Potencia y verstatilidad (1)
Es un paquete fuera de la API de Android, pero bien integrado en ella. Su potencia y versatilidad le permiten su uso tanto para aplicaciones sencillas como para las más complejas.
Clases multimedia. Clase ExoPlayer. Desventaja y clase MediaPlayer (1)
En algunos casos, su potencia es una desventaja en lo que respecta al consumo de batería, de modo se utiliza cuando la tarea sea compleja o re quiera de la potencia extra de ExoPlayer, donde MediaPlayer se quede corto, por ejemplo, en videostreaming.
Clases multimedia. Clase Camera2. Parámetros y hardware (1)
Es la segunda versión de una clase para el control de la cámara del dispositivo. Permite el control de todos los parámetros de la toma de imágenes y vídeo desde el hardware.
Clases multimedia. Clase CameraX. Clase Camera2 y hardware (1)
Aún en desarrollo y pretende ser el sustituto de la clase Camera2. Es una biblioteca de compatibilidad que utiliza las funcionalidades de Camera2, pero con una programación más sencilla basada en casos de uso. Además, evita que el programador tenga que enfrentarse a problemas de compatibilidad entre diferentes dispositivos y hardware.
Clases multimedia. Clases de alto y bajo nivel (3)
Clases de alto nivel (sencillas)
* Soundpool
* MediaRecorder
* MediaPlayer
* ExoPlayer
* Camera2
* CameraX
Clases de bajo nivel (complejas)
* AudioTrack
* MediaCodec
* Surface
* MediaMuxer
Clases multimedia. Clase AudioTrack. Audio PCM (1)
Controla la carga y reproducción de un solo clip de audio PCM cada vez.
Clases multimedia. Clase AudioTrack. Modos (1)
Un objeto AudioTrack puede funcionar en modo estático o en streaming.
Clases multimedia. Clase AudioTrack. Modos (1)
Un objeto AudioTrack puede funcionar en modo estático o en streaming.
Clases multimedia. Clase AudioTrack. Modo streaming (1)
En modo streaming, AudioTrack acepta escrituras continuas de bytes que lanza a la capa nativa para su reproducción. Este modo es útil cuando los clips de audio son demasiado grandes para ser almacenados en memoria, o porque los datos llegan de alguna otra fuente de streaming, como algún servidor en internet.
Clases multimedia. Clase AudioTrack. Modo estático (1)
El modo estático será útil cuando trabajemos con sonidos cortos y de poco tamaño que puedan ser cargados en memoria sin problema. Este modo es rápido y eficiente, y será el preferido para juegos y pequeños sonidos relacionados con la interacción de la interfaz gráfica.
Clases multimedia. Clase MediaCodec. Codecs (1)
Permite acceder a los códecs del sistema.
Clases multimedia. Clase Surface. Buffer (1)
Usado como un buffer de vídeo para clases como MediaRecorder o SurfaceTexture, y controlado por un productor de vídeo como MediaPlayer.
Clases multimedia. Clase MediaMuxer. Streams (1)
Permite la mezcla de streams de vídeo y audio. Soporta codificación de salida MP4, Webm y 3GP.
3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos
Clase SoundPool. Interfaz gráfica (1)
La app carga en memoria clisp de audio y los reproduce. Cada sonido tiene asociado un botón para reproducirlo.
La interfaz consta de ocho botones, un interruptor y una entrada de texto en un ConstraintLayout. Cada botón está etiquetado y está configurado para invocar el método “onClick” al hacer clic. El interruptor permite activar o desactivar la opción de reproducción en bucle, mientras que la entrada de texto permite al usuario especificar el número de canales en un SoundPool. Al presionar cualquier botón, se realiza la misma acción, denominada “onClick”. El atributo tag se ha añadido para distinguir los distintos botones en el código. La entrada de texto permite al usuario limitar el número de sonidos simultáneos al especificar el número de canales en el SoundPool. Por ejemplo, si se introduce 3, solo se escucharán tres sonidos simultáneamente, incluso si se presionan cuatro botones consecutivos.
* ConstraintLayout: Es el contenedor principal que organiza los elementos en una disposición de diseño basada en restricciones.
* Botones (Button): Se definen ocho botones con diferentes etiquetas (“Sonido1”, “Sonido2”, …, “Sonido8”). Cada botón tiene un identificador único (@+id/button1, …, @+id/button8), un atributo onClick que indica el método a invocar cuando se hace clic (onClick=”onClick”), y se utiliza la propiedad tag para asignar un valor único a cada botón.
* Switch (Switch): Un interruptor que permite al usuario activar o desactivar una opción (“En bucle”). Tiene un identificador único (@+id/swtBucle).
* EditText (EditText): Un campo de texto que permite al usuario ingresar un número de canales (“Núm. Canales”). Tiene un identificador único (@+id/txtCanales) y se establece con un valor predeterminado de “8”.
3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos
Clase SoundPool. Controlador. Definición Clase (1)
Establece la infraestructura para manejar y reproducir sonidos utilizando SoundPool en una aplicación Android. Los sonidos están asociados a botones en la interfaz de usuario, y se proporciona un mecanismo para controlar el volumen de reproducción. La funcionalidad específica de reproducción de sonidos y manejo de eventos de botones se implementa en la función onCreate, que no ha sido proporcionada.
Importaciones:
* Se importan clases relacionadas con el manejo de sonido, como AudioAttributes, AudioManager, y SoundPool.
* Se importa la clase Button para trabajar con botones en la interfaz de usuario.
* Se importa la función kotlinx.android.synthetic.main.activitymain. , que facilita el acceso a los elementos de la interfaz de usuario definidos en el archivo XML activity_main.
Declaración de Variables:
* audioManager: Objeto de la clase AudioManager para manejar ajustes de audio.
* soundPool: Objeto de la clase SoundPool para reproducir sonidos.
* sonidos: HashMap que almacena objetos Sonido asociados a identificadores de sonido.
* sonidosRes: Lista de recursos de sonido en formato R.raw..
* botonesRes: Lista de botones asociados a los recursos de sonido.
actVolume, maxVolume, volume: Variables para controlar el volumen de reproducción de sonidos.
Clase Sonido:
* Una clase de datos que contiene información sobre un sonido, incluyendo su identificador (id), el botón asociado (boton), y si el sonido está cargado (cargado).
Iniciar el SoundPool:
* En la función onCreate (no proporcionada), se inicializan audioManager y soundPool.
Se configura soundPool con atributos de audio y se carga cada recurso de sonido en sonidosRes en sonidos.
Inicializar la Interfaz de Usuario:
* Se inicializa la lista botonesRes con botones de la interfaz utilizando kotlinx.android.synthetic.
* Se asocian los botones con los sonidos correspondientes y se configuran las funciones onClick para cada botón.