3.5.- Datos basados en el tiempo Flashcards

1
Q

Aplicaciones multimedia. Procesamiento de datos y control del tiempo (5)

A

El tiempo de procesamiento de datos es crucial, pero en casos como el control en tiempo real, como la reproducción multimedia, el tiempo de procesamiento tiene un límite máximo.

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

Aplicaciones multimedia. Archivos de audio y video (5)

A

Un archivo de audio representa valores de voltaje en relación con el tiempo, traducidos por el sistema de audio a presión de aire en los altavoces. Similarmente, un archivo de vídeo consiste en imágenes que deben proyectarse secuencialmente a una frecuencia mínima para crear la ilusión de movimiento.

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

Aplicaciones multimedia. Calidad de datos y velocidad de reproducción (5)

A

A diferencia de la captura de imágenes fijas, la captura de audio o vídeo debe ser lo suficientemente rápida para evitar la pérdida de datos y mantener la calidad.

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

Librerías multimedia integradas. Hilos (3)

A

Las librerías multimedia integradas, como MediaPlayer, gestionan procesos como decodificación, cacheado, buffering y reproducción, generando hilos de proceso específicos sin afectar al hilo principal de la aplicación.

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

Librerías multimedia integradas. NDK (3)

A

La velocidad de las clases integradas en el sistema puede no ser suficiente, y puede ser necesario recurrir al NDK para evitar pasos innecesarios en los procedimientos convencionales del reproductor.

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

Archivos multimedia. Tamaño y tiempo (3)

A

El tiempo influye en el tamaño de los archivos. Por ejemplo, al grabar audio a 8 kbps, el tamaño del archivo aumentará 8 kbits por segundo. Es esencial considerar el espacio de disco disponible en el dispositivo antes de iniciar una grabación.

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

Archivos multimedia. Limitaciones de tamaño y tiempo (3)

A

Las librerías multimedia del sistema generalmente permiten establecer límites de tiempo y/o tamaño del archivo resultante de la captación de vídeo o audio.

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Permisos. Manifest (1)

A

Añadir los permisos y uso de hardware en el manifest. Permisos para grabar audio y para guardar el audio en un archivo de disco externo. Además, se necesita un dispositivo con micrófono.
* <>uses-permission android:name = ”android.permission.RECORD_AUDIO”/>
* <>uses-permission android:name = ”android.permission.WRITE_EXTERNAL_STORAGE”/>
* <>uses-feature android:name = ”android.hardware.microphone” android:required=”true”/>

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Intefaz gráfica. Elemento VideoView (1)

A

En el layout, añadir dos botones, uno para comenzar y detener la grabación y otro para reproducir el archivo de audio resultado.
* Se define un ConstraintLayout, que es el contenedor principal de la interfaz de usuario.
* Se define un TextView con el ID textView.
* Se define un botón con el ID btnGrabar.
* Se define otro botón con el ID btnReproducir.

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Definición clase (1)

A

Se importan las clases necesarias:
* android.Manifest: Para gestionar los permisos de la aplicación.
* android.media.MediaPlayer: Para reproducir audio.
* android.media.MediaRecorder: Para grabar audio.
* kotlinx.android.synthetic.main.activity_main. : Para permitir el uso de las vistas definidas en el layout activity_main de manera sintética (uso de la propiedad findViewById no es necesario).
* java.io. : Para operaciones de entrada/salida de archivos.

Se define la clase MainActivity, que extiende AppCompatActivity, indicando que es una actividad de Android.
* class MainActivity : AppCompatActivity() { … }:

Se declara una variable booleana isGrabando que se utilizará para controlar si se está grabando audio o no.
* private var isGrabando = false

Se declara una variable grabadora de tipo MediaRecorder y se marca como lateinit, lo que significa que se inicializará más adelante en el código. Esta instancia de MediaRecorder se utilizará para grabar audio.
* private lateinit var grabadora: MediaRecorder:

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onCreate() (1)

A

Método para controlar la grabación y reproducción de audio Al hacer clic en el botón btnGrabar, se ejecuta la función onGrabar(). Al hacer clic en el botón btnReproducir, se reproduci el archivo de audio previamente grabado. Además, inicialmente, el botón btnReproducir está desactivado (isEnabled = false).
* Llamar a la implementación de la superclase y establecen el contenido de la actividad utilizando el archivo de diseño activity_main.xml.
* Se asocia un OnClickListener al botón con el ID btnGrabar. Cuando se hace clic en este botón, se ejecutará la función onGrabar().
* Se desactiva el botón con el ID btnReproducir, lo que significa que no estará habilitado para recibir eventos de clic.
* Se asocia un OnClickListener al botón con el ID btnReproducir. Cuando se hace clic en este botón, se ejecutará el código dentro del bloque.
1. Se obtiene la referencia al archivo de salida mediante la llamada a la función getArchivoSalida().
2. Se crea un objeto MediaPlayer.
3. Se establece la fuente de datos para el reproductor de medios utilizando la ruta del archivo obtenido.
4. Se prepara el reproductor (prepare()).
5. Se inicia la reproducción del archivo de audio (start()).

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onGrabar() (1)

A

Método que cambia el estado de grabación según el valor actual de isGrabando. Si está grabando, detendrá la grabación y actualiza el texto del botón. Si no está grabando, inicia la grabación y actualiza el texto del botón.
* Se verifica el valor de la variable isGrabando. Si es true, significa que la aplicación está actualmente en modo de grabación.
* Se actualiza el valor de isGrabando a false, indicando que la grabación debe detenerse.
* Se actualiza el texto del botón con el ID btnGrabar a “Grabar”.
* Se llama a la función stopGrabacion().
* Si isGrabando es false, se actualiza el valor a true, indicando que se iniciará la grabación.
* Se actualiza el texto del botón con el ID btnGrabar a “Detener”.
* Se llama a la función startGrabacion().

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onStart() (1)

A

Método que se ejecuta al iniciar la actividad. Solicita permisos de grabación y escritura, configura la grabadora de medios (MediaRecorder) para limitar la duración y el tamaño de la grabación, y establece oyentes para manejar eventos de error e información durante la grabación. Además, muestra mensajes y llama a la función onGrabar() en caso de eventos específicos.
* Se llama al método onStart() de la superclase para realizar las operaciones necesarias durante el inicio de la actividad.
* Se verifica si la versión de Android es igual o superior a la versión Marshmallow (Android 6.0). Si es así, se solicitan permisos de grabación de audio (RECORD_AUDIO) y escritura en almacenamiento extern (WRITE_EXTERNAL_STORAGE). La solicitud de permisos se realiza utilizando el método requestPermissions, y el código de solicitud es 6969.
* Se instancia un objeto MediaRecorder y se configuran propiedades como la duración máxima de grabación y el tamaño máximo del archivo.
* Se establece un OnErrorListener para manejar eventos de error en la grabadora. En caso de error, se muestra un mensaje y se llama a la función onGrabar().
* Se establece un OnInfoListener para manejar eventos informativos en la grabadora. Se manejan eventos específicos como la duración máxima alcanzada y el tamaño máximo alcanzado. Dependiendo del evento, se muestra un mensaje y se llama a la función onGrabar().

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onStop() (1)

A

El método asegura que los recursos asociados con la grabadora (MediaRecorder) se liberam adecuadamente cuando la actividad entra en el estado de “detenida” (onStop()). Esto es importante para evitar posibles problemas de memoria y para garantizar que la grabadora se libera de manera ordenada antes de que la actividad se detenga por completo.
* Se llama al método release() del objeto MediaRecorder (grabadora). Este método libera los recursos asociados con la grabadora, finalizando cualquier grabación que esté en curso y liberando la instancia de la grabadora. Es importante liberar los recursos de la grabadora cuando ya no se necesitan para evitar posibles pérdidas de memoria y asegurarse de que los recursos se devuelvan correctamente al sistema.
* Se llama al método onStop() de la superclase para realizar las operaciones necesarias durante la parada de la actividad.

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

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método startGrabación() (1)

A

El método se encarga de configurar y comenzar la grabación de audio utilizando un objeto MediaRecorder. Antes de iniciar la grabación, elimina cualquier archivo de grabación anterior. La configuración incluye la especificación de la fuente de audio, el formato de salida y el codificador de audio. La función maneja posibles errores durante la preparación y el inicio de la grabación.
* Se obtiene una referencia al archivo de salida de la grabación llamando a la función getArchivoSalida(). Esta función probablemente devuelve un objeto File que representa el archivo donde se almacena la grabación.
* Se verifica si el archivo de salida ya existe (exists()). Si existe, se elimina el archivo. Esto asegura que se comience una nueva grabación sin sobrescribir un archivo de grabación anterior,
* Se configuran varias propiedades de la grabadora:
1. setOutputFile: Establece la ruta del archivo de salida para la grabación.
2. setAudioSource: Configura la fuente de audio como el micrófono del dispositivo.
3. setOutputFormat: Establece el formato de salida de la grabación como AMR_NB.
4. setAudioEncoder: Configura el codificador de audio como AMR_NB.
5. setAudioChannels: Configura el número de canales de audio (en este caso, 2 canales).

  • Se intenta preparar y comenzar la grabación. En caso de que ocurra una excepción durante la preparación o inicio, se muestra un mensaje de error.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método stopGrabación() (1)

A

El método detiene la grabación de audio, restablece la grabadora y realiza verificaciones sobre el archivo de salida de la grabación. Dependiendo del resultado de estas verificaciones, se realiza una acción específica, como habilitar el botón de reproducción o mostrar un mensaje de error.
* Se intenta detener la grabación llamando al método stop() del objeto MediaRecorder (grabadora). Si ocurre alguna excepción durante el intento de detención, se muestra un mensaje de error.
* Se llama al método reset() de la grabadora para llevarla a un estado inicial y estar lista para una nueva grabación.
* Se obtiene la referencia al archivo de salida de la grabación llamando a la función getArchivoSalida(). Luego, se verifica si el archivo existe y si su longitud es mayor que cero bytes.
1. Si el archivo existe y tiene contenido, se habilita el botón con el ID btnReproducir (btnReproducir.isEnabled = true) y se muestra un mensaje indicando que la grabación ha finalizado.
2. Si el archivo no existe o tiene longitud cero, se muestra un mensaje de error.

17
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método getArchivoSalida() (1)

A

El método proporciona la ruta al archivo de salida de la grabación de audio. La ubicación del archivo se basa en el directorio específico de la aplicación en el almacenamiento externo y se utiliza el nombre de archivo especificado por la variable archivo.
* Se crea un objeto File con la ruta al directorio de archivos externos y se concatena con el nombre de archivo especificado por la variable archivo.
* Devuelve el objeto File que representa la ubicación del archivo de salida para la grabación de audio.

18
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método showMensaje() (1)

A

El método registra un mensaje de error en el sistema de registro de Android, muestra un mensaje emergente (Toast) en la interfaz de usuario y actualiza el contenido de un TextView con el mensaje proporcionado. La excepción asociada (si se proporciona) también se registra en el sistema de registro. Esta función parece ser una utilidad para mostrar mensajes de error en la interfaz de usuario y registrar información relacionada en el sistema de registro.
* Se utiliza Log.e(tag, msg, e) para registrar un mensaje de error en el sistema de registro (Log) de Android.
* Toast.makeText(this, msg, Toast.LENGTH_LONG).show(): Se utiliza para mostrar un mensaje emergente (Toast) en la interfaz de usuario.
* textView.text = msg: Se utiliza para actualizar el contenido de un TextView (posiblemente referenciado por la variable textView) con el mensaje proporcionado.

19
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Constantes companion object (1)

A

Este companion object se utiliza para agrupar constantes (tag y archivo) que pueden ser utilizadas en otras partes de la clase en la que se encuentra. Las constantes proporcionan valores predefinidos que pueden ser referenciados fácilmente y modificados en un solo lugar si es necesario. En este caso, las constantes parecen estar relacionadas con la gestión de registros y la manipulación de archivos en el contexto de una actividad de Android.
* private const val tag = “Activity”: Define una constante llamada tag con un valor de cadena “Activity”. Esta constante probablemente se utiliza como etiqueta en los registros del sistema de Android (por ejemplo, mediante el uso de Log.e(tag, msg)).
* private const val archivo = “grabacion.3gp”: Define una constante llamada archivo con un valor de cadena “grabacion.3gp”. Esta constante probablemente se utiliza para especificar el nombre del archivo de grabación que se utilizará en alguna parte del código.

20
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onCreate(2) (1)

A

En el método onCreate, se establecen acciones para los botones de grabación y reproducción. Al presionar el botón de grabación (btnGrabar), se llama a la función onGrabar, que inicia o detiene la grabación. Al presionar el botón de reproducción (btnReproducir), se crea un objeto MediaPlayer, se le asigna el archivo de audio grabado mediante set DataSource(), se prepara con prepare() y se inicia la reproducción con start().

21
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onGrabar(2) (1)

A

Comienza la grabación o la detiene según el valor de isGrabando,, para ello, llama a las funciones startGrabacion() y stopGrabacion().

22
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onStart(2) (1)

A

En el método onStart, se solicitan al usuario los permisos necesarios para la grabación de audio, y se crea un objeto MediaRecorder que permitirá grabar audio desde el micrófono del dispositivo. También se establecen límites al tamaño y la duración del archivo de audio resultante con setMaxFileSize() y setMaxDuration() respectivamente.
Se utilizan los métodos setOnErrorListener() y setOnInfoListener() para manejar errores y eventos informativos durante la grabación. setOnErrorListener() se utiliza para gestionar errores durante la grabación, mientras que setOnInfoListener() se utiliza para manejar eventos informativos cuando la grabación se detiene por exceso de tiempo o tamaño definido. En ambos casos se reestablece el estado de los botones.

23
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método onStop(2) (1)

A

En el método onStop, se libera el MediaRecorder y los recursos de este utilizando el método release().

24
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método startGrabacion(2) (1)

A

En la función startGrabacion, se crea un objeto File con un nombre predefinido y se verifica si el archivo ya existe; de ser así, se borra, ya que el MediaRecorder lo crea más adelante. Se utiliza setOutputFile() para indicar al MediaRecorder dónde guardar la grabación y setAudioSource para especificar que se utilice el micrófono del dispositivo.
Se configuran los métodos setOutputFormat() y setAudioEncode()r para establecer el formato y la codificación del archivo de audio. Además, se utiliza setAudioChannels() para establecer el número de canales de audio, eligiendo dos para hacerlo estéreo. Se menciona que también se puede seleccionar 1 para obtener un audio en mono.
Antes de iniciar la grabación, se llama a prepare() para compilar las opciones y preparar la grabación, y luego se puede llamar a start() para comenzar a captar audio del micrófono.

25
Q

3.5.1. Ejemplo: app grabadora de audio

Aplicación grabadora de audio. Controlador. Método stopGrabacion(2) (1)

A

En la función stopGrabacion, se utiliza el método stop del MediaRecorder para detener la grabación y cerrar el archivo de audio. Se emplea la opción reset para restablecer el MediaRecorder a la configuración por defecto, preparándolo para ser configurado nuevamente en el futuro. Luego, se verifica si el archivo de audio existe y contiene datos. En caso afirmativo, se habilita el botón btnReproducir, que utiliza el MediaPlayer para reproducir el audio, como se explicó anteriormente.