3.7. Procesamiento de objetos multimedia. Clases. Estados, métodos y eventos Flashcards

1
Q

Clases multimedia. Librerías (3)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Clases multimedia. Clase SoundPool. Clips y memoria (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Clases multimedia. Clase SoundPool. Decodificación y bits (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Clases multimedia. Clase SoundPool. Mezcla y prioridad (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Clases multimedia. Clase SoundPool. Londitud y memoria (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Clases multimedia. Clase MediaRecorder. Captacion y configuración (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Clases multimedia. Clase MediaRecorder. Grabación y clase Camera2 (1)

A

Cuando se utilica con la clase Camera2, permitie grabar clips de vídeo y almacenarlos en disco en el formato deseado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Clases multimedia. Clase MediaPlayer. Potencia y facilidad (1)

A

El reproductor de audio y vídeo por excelencia en Android debido a su potencia y facilidad de su uso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Clases multimedia. Clase MediaPlayer. Desventaja y herramienta ExoPlayer (1)

A

La única desventaja es a la hora de reproducir audio o vídeo en streaming, en cuyo caso se puede pasar a ExoPlayer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Clases multimedia. Clase ExoPlayer. Potencia y verstatilidad (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Clases multimedia. Clase ExoPlayer. Desventaja y clase MediaPlayer (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Clases multimedia. Clase Camera2. Parámetros y hardware (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Clases multimedia. Clase CameraX. Clase Camera2 y hardware (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Clases multimedia. Clases de alto y bajo nivel (3)

A

Clases de alto nivel (sencillas)
* Soundpool
* MediaRecorder
* MediaPlayer
* ExoPlayer
* Camera2
* CameraX

Clases de bajo nivel (complejas)
* AudioTrack
* MediaCodec
* Surface
* MediaMuxer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Clases multimedia. Clase AudioTrack. Audio PCM (1)

A

Controla la carga y reproducción de un solo clip de audio PCM cada vez.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Clases multimedia. Clase AudioTrack. Modos (1)

A

Un objeto AudioTrack puede funcionar en modo estático o en streaming.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Clases multimedia. Clase AudioTrack. Modos (1)

A

Un objeto AudioTrack puede funcionar en modo estático o en streaming.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Clases multimedia. Clase AudioTrack. Modo streaming (1)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Clases multimedia. Clase AudioTrack. Modo estático (1)

A

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.

20
Q

Clases multimedia. Clase MediaCodec. Codecs (1)

A

Permite acceder a los códecs del sistema.

21
Q

Clases multimedia. Clase Surface. Buffer (1)

A

Usado como un buffer de vídeo para clases como MediaRecorder o SurfaceTexture, y controlado por un productor de vídeo como MediaPlayer.

22
Q

Clases multimedia. Clase MediaMuxer. Streams (1)

A

Permite la mezcla de streams de vídeo y audio. Soporta codificación de salida MP4, Webm y 3GP.

23
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Interfaz gráfica (1)

A

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”.

24
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Definición Clase (1)

A

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.

25
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método OnCreate() (1)

A

Se encarga de la inicialización de la actividad, establece el diseño de la interfaz de usuario, y agrega un observador al campo de texto txtCanales. Cuando el número de canales en el campo de texto cambia, se libera el soundPool actual y se inicializa uno nuevo con el nuevo número de canales. Esto sugiere que la aplicación está diseñada para permitir cambios dinámicos en la configuración de los canales de audio en tiempo de ejecución.
* Llama al método onCreate de la superclase, realizando las inicializaciones necesarias de la actividad.
* Establece el diseño de la interfaz de usuario para esta actividad, utilizando el archivo de diseño activity_main.xml.
* Inicializa la lista botonesRes con los botones definidos en la interfaz de usuario. Estos botones están asociados a los sonidos en la aplicación.
* Agrega un observador de cambios de texto al EditText llamado txtCanales. Cuando el texto en este campo cambia, se ejecuta el bloque de código dentro de las llaves. El código dentro verifica si el número de canales ingresado es válido y, si es así, libera el soundPool actual y reinicializa el audio con el nuevo número de canales.

26
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método OnResume() (1)

A

Cuando la actividad se reanuda (onResume), se inicializa el audio utilizando la función initAudio con el número de canales obtenido de la interfaz de usuario (getCanalesFromUI()) o se utiliza el valor predeterminado de 8 canales en caso de que no haya un valor válido ingresado por el usuario. Esto sugiere que la configuración de audio se actualiza o se inicia cuando la actividad vuelve a estar en primer plano.
* Llama al método onResume de la superclase, realizando las acciones necesarias al reanudar la actividad.
* Llama a la función initAudio con el número de canales obtenido a través de la función getCanalesFromUI(). Si getCanalesFromUI() devuelve un valor no nulo (es decir, el usuario ha ingresado un número de canales válido), se utiliza ese valor. En caso contrario, se utiliza el valor predeterminado de 8.

27
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método OnPause() (1)

A

Cuando la actividad se pausa (onPause), se libera el SoundPool para asegurarse de que los recursos asociados se liberen adecuadamente antes de que la actividad pase a segundo plano. Esto es una buena práctica para el manejo adecuado de recursos en una aplicación Android.
* Llama al método release() del objeto soundPool. El método release() libera todos los recursos asociados al SoundPool. Esto es importante para evitar fugas de memoria y liberar recursos cuando la actividad está pausada.
* Llama al método onPause de la superclase, realizando las acciones necesarias al pausar la actividad.

28
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método getCanalesFromUI() (1)

A

Intenta obtener y convertir el número de canales ingresado por el usuario en un campo de texto (EditText). Devuelve el valor como entero si es válido; de lo contrario, devuelve null. En resumen, se encarga de extraer y validar la entrada de canales desde un campo de texto.
* Obtiene el contenido del EditText llamado txtCanales como una cadena de texto.
* Intenta convertir la cadena de texto a un valor entero. Si la conversión es exitosa, devuelve el valor entero; de lo contrario, devuelve null.

29
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método deshabilitarBotones() (1)

A

Desactiva la capacidad de interactuar con los botones asociados a sonidos en la interfaz de usuario. Esto se logra estableciendo la propiedad isEnabled de cada botón a false, impidiendo así que respondan a eventos de clic y se vuelvan no interactivos. Esta función es útil para controlar la interacción del usuario en situaciones específicas, como durante la reproducción de sonidos o cuando se necesita evitar la ejecución de ciertas acciones en la interfaz.

30
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método initAudio() (1)

A

Realiza la configuración inicial del audio, crea un SoundPool con la capacidad especificada, carga sonidos en el SoundPool, y establece un oyente para manejar la finalización de la carga de sonidos, actualizando el estado de carga y habilitando los botones asociados.

  • Llama a la función previamente definida deshabilitarBotones(), que desactiva la capacidad de interactuar con los botones asociados a sonidos.

Configura el manejo de audio:
* audioManager: Obtiene una instancia del servicio de audio del sistema.
* actVolume, maxVolume, volume: Variables para controlar el volumen de reproducción de sonidos.
* volumeControlStream: Establece el flujo de control de volumen como AudioManager.STREAM_MUSIC.

Configura el SoundPool:
* audioAttr: Configura los atributos de audio para el SoundPool.
* soundPool: Construye el SoundPool con la capacidad especificada (canales) y los atributos de audio.
* setOnLoadCompleteListener: Establece un oyente que se activa cuando se completa la carga de un sonido, actualizando el estado de carga en la estructura de datos sonidos y habilitando el botón asociado si la carga fue exitosa.

Carga los sonidos en el SoundPool:
* Utiliza un bucle para cargar cada sonido en sonidosRes en el SoundPool.
* Asocia cada sonido con un botón y guarda la información en la estructura de datos sonidos.

31
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método onClick() (1)

A

Maneja los eventos de clic en botones, determina el sonido asociado al botón clicado y decide si reproducirlo en bucle o una sola vez, según el estado del interruptor swtBucle.
* Obtiene la etiqueta (tag) asociada al botón que fue clicado. La etiqueta se presume que es un String.
* Utiliza la etiqueta obtenida para recuperar el objeto Sonido correspondiente de la estructura de datos sonidos. El índice se ajusta para manejar la indexación basada en 1 (asumiendo que las etiquetas son valores numéricos).
* Verifica si se pudo obtener un objeto Sonido válido.
* Si el interruptor swtBucle está activado (verificado con isChecked), llama a la función playLoop(sonido) para reproducir el sonido en bucle; de lo contrario, llama a la función play(sonido) para reproducir el sonido una sola vez.

32
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método play() (1)

A

Reproduce un sonido utilizando el SoundPool si el sonido está cargado correctamente. La reproducción se realiza con el volumen precalculado y otros parámetros especificados.
* Verifica si el sonido asociado al botón está cargado. La propiedad cargado del objeto Sonido indica si el sonido ha sido cargado correctamente en el SoundPool.
* Si el sonido está cargado, utiliza el método play del SoundPool para reproducir el sonido. Los parámetros son:
1. sonido.id: Identificador del sonido a reproducir.
2. volume: Volumen del sonido (precalculado en la función initAudio).
3. volume: Volumen izquierdo (se utiliza el mismo volumen que el derecho).
4. 1: Prioridad del sonido.
5. 0: Repetición (en este caso, no se repite).
6. 1f: Velocidad de reproducción (1f indica reproducción normal).

33
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método playLoop() (1)

A

Reproduce un sonido en bucle utilizando el SoundPool, pero solo lo hace si el sonido está cargado y listo para ser reproducido.
* Verifica si el sonido asociado (representado por el objeto Sonido) está cargado y listo para ser reproducido.
* Si el sonido está cargado, utiliza el método play del SoundPool para reproducir el sonido en bucle. Los parámetros incluyen:
1. sonido.id: Identificador del sonido a reproducir.
2. volume: Volumen de reproducción (previamente calculado).
3. volume: Volumen de reproducción para el canal izquierdo (se utiliza el mismo que para el canal derecho).
4. 1: Prioridad del sonido.
5. -1: Número de repeticiones (-1 indica reproducción en bucle).
6. 1f: Velocidad de reproducción (1f significa reproducción a velocidad normal).

34
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método pause() (1)

A

Pausa la reproducción del sonido asociado al objeto Sonido proporcionado en el argumento. Esto puede ser útil para controlar la reproducción de sonidos en una aplicación, permitiendo pausar la reproducción y luego reanudarla en un momento posterior si es necesario.
* Llama al método pause del objeto SoundPool, pausando la reproducción del sonido identificado por sonido.id.

35
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método stopSound() (1)

A

Proporciona una interfaz para detener la reproducción de un sonido específico en un SoundPool utilizando el identificador único asociado al sonido.
* Llama al método stop del SoundPool para detener la reproducción del sonido asociado al objeto Sonido proporcionado como argumento. El parámetro sonido.id representa el identificador único del sonido en el SoundPool.

36
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método stopSound() (1)

A

Proporciona una interfaz para detener la reproducción de un sonido específico en un SoundPool utilizando el identificador único asociado al sonido.
* Llama al método stop del SoundPool para detener la reproducción del sonido asociado al objeto Sonido proporcionado como argumento. El parámetro sonido.id representa el identificador único del sonido en el SoundPool.

37
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Definición Clase 2 (1)

A

Definir variables como AudioManager y SoundPool para gestionar el volumen y la reproducción de sonidos en la aplicación. Creamos una clase de datos para representar los ocho sonidos, asignándoles botones y controlando su estado de carga.

38
Q

.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método onCreate(2) (1)

A

Accede a los componentes de la interfaz gráfica después de que el diseño se haya desplegado en la vista. Configura una lista de botones y define el código para manejar cambios en la caja de texto que indica el número de canales, cuando se cambia el número de canales desde la interfaz gráfica se recrea el SoundPool con una nueva configuración porque no se puede realizar dinamicamente.

39
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método onResume(2) (1)

A

Inicializa el SoundPool

40
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método onPause(2) (1)

A

Libera los recursos en memoria asociados al SoundPool

41
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método initAudio(2) (1)

A

Configura el sistema de audio al obtener el volumen relativo mediante AudioManager. Este volumen se utiliza para establecer el volumen de audio en los clips de SoundPool. Se especifica que el canal de stream de la actividad sea STREAM_MUSIC mediante el atributo volumeControlStream. Este mismo tipo de stream se utiliza para el SoundPool, asegurando que utilice el nuevo volumen seleccionado por el usuario al cambiarlo. Se podría haber utilizado otro tipo de stream, siempre y cuando se hubiera usado el mismo tipo en las demás funciones.

42
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método initAudio(2). Android, canales y mezcla (1)

A

Android proporciona varios canales para ajustar niveles de volumen. Se crea una instancia de la clase SoundPool con el número de canales proporcionado por el usuario, representando el máximo de audios que la clase mezcla simultáneamente. Se configura un oyente para detectar la finalización de la carga de cada clip de audio, activándolo cuando el SoundPool completa la carga de un audio en memoria. Esto permite habilitar el botón correspondiente al sonido. Utiliza un bucle for para iterar sobre la lista de sonidos almacenados en la carpeta de recursos “res/raw”, cargándolos uno por uno en el SoundPool y utilizando el identificador devuelto para mantener el control en la lista.

43
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método onClick (2) (1)

A

Todos los botones ejecutan la misma función onClick() al ser pulsados. En esta función, se obtiene el valor del tag del botón, se convierte a entero y se le resta uno, asociándolo así a un índice en la lista de sonidos. Luego, llama a la función play() o playLoop() según el estado del interruptor de bucle.

44
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Métodos play(2) y playLoop(2) (1)

A

Ambas funciones son prácticamente idénticas: verifican si el sonido está cargado en memoria y llaman al método play() de SoundPool.
Parámetros
* Identificador de carga del sonido a reproducir
* Volumen del canal izquierdo y derecho con valores de 0 a 1.
* Prioridad de los sonido. En caso de que el número de canales sea igual o inferior a los sonidos en reproducción, SoundPool gestiona la mezcla, calculando cuál detener para incluir el nuevo, donde la prioridad de cada sonido es considerada.
* Sonido se reproduce una vez (0) o en bucle continuo (-1). Aquí, play usa 0 para reproducción única, mientras que playLoop usa -1 para reproducción continua.
* Velocidad de reproducción, de 0.5 (lento) a 2 (rápido), siendo 1 reproducción normal

45
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método pause(2) (1)

A

Pausa un sonido temporalmente.

46
Q

3.7.1. Reproducción multimedia. Clases. Estados, métodos y eventos

Clase SoundPool. Controlador. Método stop(2) (1)

A

Detiene un sonido definitivamente.

47
Q

3.7.2.Protocolo de transmisión en tiempo real RTP

A