3.2.- Arquitectura del API utilizado Flashcards

1
Q

Arquietectura. Diseño (3)

A

Antes de comenzar el desarrollo de cualquier sistema de software, el análisis y diseño de la arquitectura es uno de los factores más importantes.

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

Arquitectura. Modulos (3)

A

En el caso de las apps multimedia, es vital tener los conceptos claros sobre cómo se estructuran los módulos que las componen.

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

Arquitectura. Aplicación de audio (3)

A

Mientras el usuario escucha música desde la app, puede estar trabajando con otras apps . Si necesita detener la reproducción o cambiar la canción, puede lanzar comandos a la aplicación, ya sea mediante la activación de la activity o mediante botones en una notificación en la barra de notificaciones. Se entiende por ello que la app de audio se ejecuta como un servicio en segundo plano.

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

Arquitectura. Aplicación de video (3)

A

Si el usuario está viendo un videoclip en otra app, la app tiene simplemente una vista enlazada al reproductor y se ejecuta solo en primer plano. Si se graba vídeo, se necesita una app en primer plano que muestra en pantalla lo que se capta a través de la cámara. Si se adquiere audio, se puede plantear que el servicio corra en background o no, dependiendo del análisis de necesidades.

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

3.2.1. Arquitectura de una app de audio

Aplicación de audio. Arquitectura en Android (1)

A

El sistema Android promueve la división de las aplicaciones de reproducción de audio en dos módulos bien diferenciados.
* El módulo de control e interfaz gráfica.
* Un servicio de reproducción de audio corriendo en el background.

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

3.2.1. Arquitectura de una app de audio

Aplicación de audio. Módulo de control e interfaz gráfica (1)

A

Mediante la interfaz gráfica permite al usuario lanzar comandos como play, pause, siguiente pista, pista anterior, etcétera.

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

3.2.1. Arquitectura de una app de audio

Aplicación de audio. Servicio de reproducción de audio en background (1)

A

Responsable de reproducir cada pista de audio según las acciones que llegan desde el módulo control.

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

3.2.1. Arquitectura de una app de audio

Aplicación de audio. Cliente - Servidor (1)

A

La arquitectura de la aplicación con módulo de control y el servicio equivale a la arquitectura cliente-servidor
* Cliente: módulo de control e interfaz gráfica
* Servidor: servicio reproductor de audio

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

3.2.1. Arquitectura de una app de audio

Aplicación de audio. Clases Cliente (3)

A

El sistema Android puede funcionar con más de un cliente con el uso de algunas clases de Android. El sistema Android facilita el trabajo mediante el uso de las clases MediaBrowser y MediaBrowserService. Si no se necesita que otras aplicaciones o módulos de terceros accedan al sistema para reproducir audio, se puede utilizar un servicio más sencillo, heredando directamente de la clase Service.

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

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Arquitectura (1)

A

Una app que muestra vídeos no separa los controles del reproductor. El reproductor esta enlazado a una ventana en la que volca las imágenes del vídeo. No obstante, también se debe diferenciar en el código qué parte es la interfaz gráfica y qué otra parte se dedica al control del media, como la carga, la codificación, etcétera.

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

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Interfaz gráfica y controlador (1)

A

La parte gráfica para enlazar la salida del reproductor hacia la interfaz gráfica. Se puede utilizar un elemento VideoView en el layout y cargar en él los vídeos directamente, utilizando un MediaController para permitir que el usuario pueda controlar la reproducción a su gusto.

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

3.2.2. Arquitectura de una app de vídeo

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

A

Archivo de diseño XML en Android para la interfaz de usuario. El elemento VideoView es un widget proporcionado por Android para reproducir videos.
* <>VideoView>: Elemento XML que representa un componente que es una vista en Android para para reproducir videos.
* android:id=”@+id/videoView”: Asigna un identificador único al VideoView que puede ser utilizado para referenciar y controlar el elemento.
* android:layout_width=”match_parent”: Establece el ancho del VideoView para que coincida con el ancho del contenedor padre.
* android:layout_height=”match_parent”: Establece la altura del VideoView para que coincida con la altura del contenedor padre.

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

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Controlador. Instancia del elemento VideoView (1)

A
  • val videoView = findViewById<VideoView>(R.id.videoView): Obtiene una referencia al elemento VideoView en la interfaz de usuario utilizando su ID.</VideoView>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Controlador. Obtener archivo de video (1)

A

2.1. Opción 1: Archivo en disco (almacenamiento externo):
* val clip = File(Environment.getExternalStorageDirectory(), “test.mp4”)
videoView.setVideoPath(clip.path): Carga un archivo de video local almacenado en el dispositivo desde el almacenamiento externo y establece la ruta del video en el elemento VideoView.

2.2. Opción 2: Archivo en directorio res/raw.
* videoView.setVideoURI(Uri.parse(“android.resource://$packageName/raw/test”)): Carga un archivo de video almacenado en el directorio res/raw del proyecto y establece la URI del video en el elemento VideoView.

2.3. Opción 3: Archivo en Internet
* videoView.setVideoPath(“http://videocdn.bodybuilding.com/video/mp4/62000/62792m.mp4”): Carga un video desde una URL en Internet y establece la ruta del video en el elemento VideoView.

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

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Controlador. Instancia del controlador MediaController (1)

A
  • val mediaController = MediaController(this): Crea un objeto MediaController, que proporciona controles de reproducción como botones de reproducción, pausa y avance rápido.
  • mediaController.setMediaPlayer(videoView): Asocia el MediaController con el elemento VideoView para controlar la reproducción del video.
  • videoView.setMediaController(mediaController): Establece el MediaController en el elemento VideoView para mostrar los controles de reproducción.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Controlador. Cargar archivo video de MediaController en VideoView (1)

A
  • videoView.requestFocus(): Solicita el enfoque del elemento VideoView, lo que puede ser útil para asegurar que esté listo para recibir eventos de entrada.
  • videoView.start(): Inicia la reproducción del video en el elemento VideoView.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Permisos (1)

A

En el caso de acceder a archivos de vídeo en el disco o a vídeos en internet añadir los permisos correspondientes en el manifest.
* <>uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
* <>uses-permission android:name=”android.permission.INTERNET” />

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

3.2.2. Arquitectura de una app de vídeo

Aplicación de video. Arquitectura. Control (1)

A

Esta sería la opción más sencilla, pero no permite tanto control como utilizando directamente los objetos MediaPlayer o ExoPlayer.

19
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Arquitectura (1)

A

La arquitectura de una aplicación que tiene como objetivo la captación de media, su arquitectura no tiene por qué guardar relación directa con las arquitecturas de una aplicación de reproducción.

20
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Factores a tener en cuenta (3)

A

Se debe tener en cuenta, factores, por ejemplo, si la app utiliza otras aplicaciones como interfaz hacia el hardware o si, por el contrario, accede directamente a la cámara o al micro.

21
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Control sencillo (3)

A

Si la app no pretende ser lo último en grabación, es conveniente llamar directamente a la grabadora instalada por defecto en nuestro móvil, con el objetivo de ahorrar esfuerzo y tiempo de desarrollo

22
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Control total (3)

A

Si la app se basa en la captación de media, y tiene total control sobre el proceso, es conveniente implementar las interfaces y arquitectura de la cámara o el micro.

23
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Permisos. Manifest (1)

A

Por motivos de seguridad, Android no permite pasar rutas de una app a otra de forma directa; de ser así, la otra app podría escribir o borrar lo que quisiera dentro del directorio de aplicación. En el manifest, dentro de la etiqueta application, definir el provider.

  • <>provider
  • android:name=”androidx.core.content.FileProvider”
  • android:authorities=”${applicationId}.provider”
  • android:exported=”false”
  • android:grantUriPermissions=”true”>
  • <>meta-data
  • android:name=”android.support.FILE_PROVIDER_PATHS”
  • android:resource=”@xml/provider_paths”/>
  • <>/provider>
24
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Arquitectura. Permisos. FileProvider (1)

A

Mediante un FileProvider se puede compartir archivos de forma segura entre diferentes apps. El FileProvider hace referencia a un documento XML que define las rutas de los archivos de que necesita al aplicación. Crear una carpeta “xml” dentro de la carpeta “res” y añadir el archivo provider_paths.xml.
* <>?xml version=”1.0” encoding=”utf-8”?>
* <>paths>
* <>files->path name=”v” path=”videos” />
* </paths

25
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video o audio. Controlador. Acción MediaStore.ACTION_VIDEO_CAPTURE (1)

A

Ahora se puede llamar a una aplicación que permita la grabación de vídeo, es decir, a una aplicación preinstalada que responda a una acción MediaStore.ACTION_VIDEO_CAPTURE.

26
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Arquitectura. Controlador. Definición clase (1)

A

Se importan las clases necesarias.
* import android.content.Intent
* import android.net.Uri
* import android.provider.MediaStore
* import androidx.core.content.FileProvider
* import java.io.File

Se define una clase llamada Actividad que extiende de Activity.
* class Actividad: Activity()

Se inicializan algunas constantes y variables miembro de la clase:
* private val AUTHORITY = BuildConfig.APPLICATION_ID + “.provider”
* private val VIDEOS = “videos”
* private val FILENAME = “grabacion.mp4”
* private val REQUEST_ID = 6969
* private var outputUri: Uri? = null

Definiciones de constantes y variables
* AUTHORITY es la autoridad del proveedor de contenido, que se utiliza al trabajar con archivos externos.
* VIDEOS es el nombre de un directorio donde se almacenará el video grabado.
* FILENAME es el nombre del archivo de video.
* REQUEST_ID es un código de solicitud que se utilizará para identificar la solicitud de grabación de video.
* outputUri es una variable que contendrá la URI del archivo de video creado.

27
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Arquitectura. Controlador. Método onCreate() (1)

A

Se sobrescribe el método onCreate, que se llama cuando se crea la actividad. Dentro de este método, se llama a la función grabar().

28
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Controlador. Método grabar() (1)

A

Este método se encarga de iniciar la grabación del video utilizando la cámara del dispositivo.
* Se crea un objeto output que representa el archivo de video a ser grabado en el directorio de videos.
* Si el archivo ya existe, se elimina; de lo contrario, se crea el directorio.
* Se obtiene la URI del archivo utilizando FileProvider.
* Se crea un intent para capturar video utilizando la acción MediaStore.ACTION_VIDEO_CAPTURE.
* Se establece la URI del archivo de salida y se especifica la calidad del video.
* Se agregan flags para otorgar permisos de lectura y escritura a la URI del archivo.
* Se inicia la actividad de la cámara mediante startActivityForResult().

29
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Controlador. Método onActivityResult() (1)

A

Se sobrescribe el método onActivityResult, que se llama cuando la actividad de la cámara completa la grabación del video.

  • Si el código de solicitud es el correcto (REQUEST_ID) y el resultado es exitoso (RESULT_OK), se crea un nuevo intent para ver el video grabado.
  • Se establece la URI y el tipo de contenido del intent.
  • Se agregan flags para otorgar permisos de lectura a la URI del archivo.
  • Se inicia la actividad de visualización del video mediante startActivity().
  • Finalmente, se llama a finish() para cerrar la actividad actual.
30
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Controlador. Métodos startActivityForResult() y onActivityResult() (1)

A

En startActivityForResult() se inicia la app de
modo que, cuando la activity de la app grabadora termina, devuelve el archivo de vídeo.
En onActivityResult() se llama a la app por defecto para mostrar vídeo. También se puede mostrar el vídeo otra aplicación propia.

31
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Configurar FileProvider (1)

A

Configurar el FileProvider para pasar el archivo de una activity a la otra, nuestra app será así de sencilla

32
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de video. Arquitectura. Controlador. Configurar opciones de video (1)

A

Al utilizar una app externa para la captura, no es posible controlar las opciones de vídeo, el formato, el tamaño máximo, la calidad de imagen, etcétera.

33
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de audio. Controlador. Método onCreate() (1)

A

Se llama cuando la actividad se crea por primera vez. Se utiliza para realizar inicializaciones.
* Crea un objeto Intent que especifica la acción. MediaStore.Audio.Media.RECORD_SOUND_ACTION. El intent se utiliza para abrir la aplicación de grabación de audio del sistema.
* Llama a startActivityForResult(intent, REQUEST_ID) para iniciar la actividad de grabación de audio y esperar el resultado.

34
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de audio. Arquitectura. Controlador. Método onActivityResult() (1)

A

Este método se llama cuando la actividad que fue iniciada con startActivityForResult ha terminado.
* Verifica si el resultado proviene de la actividad de grabación de audio específica y si la grabación es exitosa (requestCode == REQUEST_ID && resultCode == RESULT_OK).
* Si la grabación es exitosa, muestra un mensaje de tostada (toast) indicando que la grabación ha terminado.
* Llama al método finish() para cerrar la actividad actual.

35
Q

3.2.3. App captadora de audio o vídeo. Ejemplos

Aplicacion de captación de audio. Arquitectura. Controlador. Constante Companion object (1)

A

Contiene una constante llamada REQUEST_ID con un valor de 1337, que se utiliza para identificar la solicitud de grabación de audio cuando se recibe el resultado en onActivityResult.

36
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura (3)

A

EL sistema de Android está formado por diferentes capas de software que se comunican entre ellas. Cuando desde la app se pregunta al sistema sobre un códec, se hace todo el recorrido hacia abajo al interior del sistema antes de responder.
* Application framework
* Binder IPC Proxies
* Android System Servicies
* HAL
* Linux Kernel

37
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. Framework de aplicación (3)

A

El framework de aplicación es el nivel más alto. Es el SDK, con el que los programadores de apps trabajan.

38
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. Proxies IPC de enlace (3)

A

El IPC sirve para que poder acceder a los servicios de Android con mayor facilidad.

39
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. Servicios de sistema de Android (3)

A

Dos tipos de servicios: los servicios del sistema y los servicios de los media.

40
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. Servicios de sistema de Android. Servicios de sistema (3)

A
  • Servicio de busqueda
  • Gestor de actividades
  • Gestor de ventanas
  • Otros servicios y gestores
41
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. Servicios de sistema de Android. Servicios de media (3)

A
  • Lanzador de audio
  • Servicio de camara
  • Servicio lanzador de media
  • Otros servicios de media
42
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. HAL (3)

A

El hardware abstraction layer o HAL es una definición estándar de las llamadas al hardware que los fabricantes de móviles deben cumplir para que el sistema Android pueda funcionar en ellos.

43
Q

3.2.4. Arquitectura del sistema

Sistema Android. Arquitectura. Kernel de Linux (3)

A

El núcleo de Linux, que es el código central de todo el sistema operativo. Contiene los drivers que controlarán la cámara, la pantalla, el micrófono y el sonido.