Saltar la navegación

5.1. Conceptos

En el desarrollo de apps multimedia para dispositivos móviles debemos tener en cuenta varios factores, como puedan ser las diversas capacidades de cada terminal.

Existe una amplia variedad de dispositivos diferentes con diferentes características:

  • resoluciones y tamaños de pantalla,
  • tipos de procesadores,
  • capacidades de memoria,
  • códecs soportados,
  • etcétera.

Además, los usuarios pueden utilizar diferentes periféricos, como teclados, joysticks, auriculares Bluetooth o con cable, micros y cámaras.

Por ejemplo, los auriculares Bluetooth pueden llevar botones de play, pause, canal, push to talk o control de volumen, y tendremos que tratarlos adecuadamente.

También deberemos tener en cuenta que estos dispositivos pueden ser desconectados en cualquier momento durante la reproducción o grabación.

Los sistemas operativos móviles tratan de estandarizar, mediante las librerías multimedia, todas las diferentes funcionalidades del hardware, ocultando además las posibles diferencias entre terminales. De este modo, el programador podrá centrarse en su tarea en lugar de codificar mecanismos que mantengan la estabilidad de la app ante diferencias de hardware.

Pero debemos tener en cuenta también que la evolución del hardware y el software de los dispositivos móviles ha sido tan violenta que incluso en las librerías encontraremos diferentes clases para llevar a cabo las mismas funciones.

Mientras programamos, nos encontraremos con diferentes clases o interfaces que han ido quedando obsoletas, así como interfaces que funcionarán para un versión moderna del sistema operativo pero no para una más antigua. Este es el caso de los paquetes Camera, Camera2 y CameraX, por ejemplo.

Manejar el hardware de la cámara a bajo nivel, o la reproducción de vídeo, no es una tarea sencilla en ningún caso, y aunque el SDK nos facilite el trabajo, tendremos la obligación de entender bien la arquitectura interna del sistema para no cometer fallos que impidan a nuestra app dar lo mejor de sí misma.

Algo que ya sabíamos también es que el manejo de imágenes requiere mucha memoria. Imaginemos entonces la memoria y el tiempo de CPU que requieren el tratamiento de imágenes en movimiento, y más aún el vídeo en streaming, que debe reproducirse en tiempo real. Tendremos que tener en cuenta las limitaciones de memoria de los terminales, así como los protocolos de compresión que soportan.

Por último, debemos considerar las fuentes de los datos multimedia, cómo acceder a esas fuentes de la manera más eficiente. Los datos están en el almacenamiento interno, en el externo, en internet o llegarán desde los sensores del terminal, la cámara o el micrófono.

En los temas siguientes estudiaremos la arquitectura del software necesario para desarrollar aplicaciones multimedia eficientes. Más adelante estudiaremos las clases, interfaces y métodos más utilizados para cada tarea.

Finalmente, veremos algunos ejemplos prácticos de cómo utilizar las librerías multimedia integradas en el SDK de Android.

Creado con eXeLearning (Ventana nueva)