Te llamamos Nosotros

Bases para la Programación en Android

Familiarízate con todo el entorno de desarrollo, sus herramientas, componentes, etc., dentro de la plataforma Android. Descubre qué puedes hacer en esta plataforma y cómo.

MÓDULO 4: Desarrollo de aplicaciones móviles I

Tema 0: Presentación del Módulo

El módulo te introduce en los componentes, APIs y las herramientas que permiten desarrollar aplicaciones en la plataforma Android. En concreto, verás los tipos de componentes que se pueden usar en una aplicación, qué elementos visuales puedes mostrar y cómo tratar los eventos que se producen con la interacción del usuario. Además revisarás algunas APIs relevantes como: la comunicación vía sockets y la interacción con servidores HTTP, los sensores (geolocalización, acelerómetro y cámara), el acceso a bases de datos y a proveedores de contenidos nativos. En la segunda parte del módulo verás cómo generar y visualizar gráficos 2D y 3D interactivos para crear apps orientadas al entretenimiento. Aquí, también trabajarás con algunas de las librerías más interesantes orientadas a integrar sonidos, física para juegos, e interacción del usuario a través de sensores o interfaces gráficas.

¿Qué vas a aprender?

En este módulo desarrollarás apps de distinta naturaleza para la plataforma Android. Para ello, emplearás APIs y herramientas que te ayudarán a desarrollar de manera rápida e inteligente (reutilizando código e importando librerías externas).

En el entorno de programación Eclipse o Android Studio verás cómo crear aplicaciones que consten de una serie de pantallas, que usen almacenamiento local en el dispositivo, a desarrollar aplicaciones que usen Sockets y que realicen peticiones a servidores HTTP, a usar el sistema de notificaciones del dispositivo y a desarrollar y usar servicios en las aplicaciones. Por otro lado, en la segunda parte del módulo aprenderás el entorno de desarrollo Processing (compatible con Eclipse), donde desarrollarás aplicaciones que utilicen los sensores para interactuar con el usuario, así como a crear distinto tipo de apps 2D y 3D gráficas e interactivas.

¿Qué objetivos vas a conseguir?

  • Desarrollar apps que muestren varias pantallas y a controlar la transición entre ellas, tratando los eventos que se produzcan cuando el usuario interactúe con los elementos que contengan.
  • Desarrollar apps que usen servicios, sockets, servidores HTTP y bases de datos.
  • Desarrollar apps que usen concurrencia
  • Desarrollar apps que usen el sistema de notificaciones del dispositivos y el sistema de alarmas
  • Desarrollar apps que usen los sensores del dispositivo.
  • Desarrollar apps gráficas interactivas.

¿Cuál es el contenido del mismo?

Hemos desglosado este módulo en 10 temas:

Tema 1: Introducción
Tema 2: Actividades, componentes y eventos
Tema 3: Almacenamiento local en el dispositivo
Tema 4: Programación concurrente, notificaciones y alarmas
Tema 5: Programación en red
Tema 6: Broadcast Receivers y Servicios
Tema 7: Introducción a Processing
Tema 8: Diseño de juegos, interacción básica y sonido
Tema 9: Sensores
Tema 10: Animación y Simulación

Tema 1: Introducción

Este tema te presenta la plataforma Android, su pila de software y cuáles son los componentes básicos que forman las aplicaciones. Además te mostrará cómo se definen recursos y cómo se utilizan en el código de la aplicación.

En este tema podrás aprender:

  • La arquitectura de la plataforma Android
  • Los componentes que forman las aplicaciones
  • Los recursos que se pueden definir y cómo se usan
  • Cómo el sistema escoge el recurso apropiado y cómo definirlo

Tema 2: Actividades, componentes y eventos

Este tema te presenta uno de los componentes clave en las aplicaciones: la actividad. Una actividad es una pantalla en la aplicación y que representa una tarea que puede realizar el usuario. La actividad consta de una serie de elementos visuales con los que el usuario puede interactuar. Fruto de esta interacción se lanzarán eventos que hay que capturar para realizar acciones. La apariencia visual de la actividad se define en un fichero con formato XML denominado layout. Además te mostrará cómo usar los Intents para realizar la transición entre las diferentes actividades de la aplicación o para lanzar actividades que no están en la aplicación.

En este tema podrás aprender:

  • Qué son y cómo se definen las actividades
  • Qué son y cómo se usan los Intents
  • Cómo se define la apariencia visual de las actividades
  • Qué componentes se pueden usar
  • Cómo tratar los eventos que se producen

Tema 3: Almacenamiento local en el dispositivo

Este tema te presenta las diferentes posibilidades a la hora de almacenar la información en el dispositivo. Una posibilidad son los ficheros, otra las preferencias y finalmente las bases de datos relacionales mediante SQLite.

En este tema podrás aprender:

  • Cómo se almacena información en ficheros en el dispositivo como almacenamiento interno o externo
  • Cómo almacenar preferencias
  • Cómo crear y usar bases de datos relacionales mediante SQLite

Tema 4: Programación concurrente, notificaciones y alarmas

Este tema te muestra cómo ejecutar código concurrente, cómo usar el sistema de notificaciones y cómo activar alarmas. La aplicación ejecuta el código en un hilo, denominado hilo UI. Si se realizan operaciones costosas en este hilo entonces estaremos bloqueando la ejecución de la aplicación. En estas situaciones se hace necesario ejecutar estas tareas en otros hilos, y el sistema ofrece varios mecanismos para ello: algunos heredados de Java como Thread o Runnable, y otros nuevos como Handler, AsyncTask, etc. Las notificaciones permiten que una aplicación que no está siendo mostrada pueda informar al usuario de que se ha producido algún evento de su interés. Las alarmas permiten que se pueda ejecutar un componente de forma periódica, cuando suceda algún evento (por ejemplo el encendido del aparato) o a una determinada hora.

En este tema podrás aprender:

  • Cómo ejecutar código concurrente usando Thread o Runnable
  • Cómo ejecutar código concurrente usando Handler o AsyncTask y cómo interactuar desde estos hilos con la interfaz gráfica
  • Cómo realizar notificaciones
  • Cómo usar las alarmas

Tema 5: Programación en red

Este tema te presenta cómo interactuar con servidores TCP y con servidores HTTP desde el dispositivo Android. Existe una cantidad ingente de servicios que se ofrecen sobre HTTP y que pueden ser consumidos desde el dispositivo Android. El servidor HTTP puede adaptar la respuesta en función de los campos de cabecera de la petición: si es un navegador puede dar HTML y si es una aplicación puede dar los datos para que la aplicación decida cómo mostrarlos. Un formato importante hoy en día para este intercambio de información es JSON.

En este tema podrás aprender:

  • Qué clases se pueden usar para establecer comunicación TCP con un servidor
  • Cómo realizar peticiones a un servidor HTTP
  • Cómo intercambiar información en formato JSON

Tema 6: Broadcast Receivers y Servicios

Este tema te presenta otros dos componentes de la plataforma Android: Broadcast Revicer y Service. Los Broadcast Receiver permiten realizar notificaciones a componentes que estén escuchando ese tipo de emisiones. De este modo se pueden escuchar emisiones predefinidas del sistema como: el nivel de batería es bajo, se ha perdido la conexión de datos, etc,; o escuchar emisiones que envíen otros componentes de la aplicación. Los servicios permiten ejecutar tareas en segundo plano en el mismo proceso en el que se ejecuta la interfaz gráfica o en otro proceso.

En este tema podrás aprender:

  • Cómo definir Broadcast Receivers de forma estática y de forma dinámica
  • Cómo se tratan las emisiones en el Broadcast Receiver
  • Qué tipos de servicios existen
  • Cómo usar los servicios y cómo interactuar con la actividad combinándolos con Broadcast Receivers.

Tema 7: Introducción a Processing

Este tema te presenta la plataforma de desarrollo Processing, mediante la cual podrás realizar aplicaciones multiplataforma (Android, Java-Desktop, Web). Es un tema introductorio en el que emplearemos ejemplos básicos de la plataforma para entender su funcionamiento.

En este tema podrás aprender:

  • Instalar Processing + soporte Android
  • Primeros pasos: setup y draw
  • Sistema de coordenadas y geometría básica
  • Modelos de color e imágenes.

Tema 8: Diseño de juegos, interacción básica y sonido

Este tema te introduce en la teoría básica de diseño de juegos mostrándote las claves a la hora de planificar el desarrollo de apps de entretenimiento. En este tema realizarás un esqueleto de juego o juego vacío, donde te centrarás en la interacción básica (Single Touch Screen) así como en el desarrollo de las clases necesarias. Partiendo del conocimiento adquirido en el tema anterior sobre imágenes, ahora aprenderás a definir el grafo de estados del mismo así como las transiciones necesarias. También aprenderás a introducir sonidos en tus aplicaciones a partir de librerías de audio adecuadas.

En este tema podrás aprender:

  • Diseño básico de un juego
  • Cómo realizar el grafo de interacción (estados y transiciones)
  • Cómo programar una clase Botón
  • Cómo manipular la imagen de fondo (efectos)
  • Cómo disparar/parar sonidos y música de fondo

Tema 9: Sensores

Este tema te muestra la librería Ketai orientada a manejar sensores e interfaces de red de los dispositivos Android desde Processing. Esta librería abre el camino al desarrollo de aplicaciones interactivas permitiendo utilizar la cámara (detector facial), sistemas de localización, networking (bluetooth, wifi) y otros.

En este tema podrás aprender:

  • La lista completa de componentes de la librería Ketai
  • Cómo emplear la clase Gesture para realizar aplicaciones Multi-touch
  • Cómo emplear los sensores de movimiento (acelerómetro y giróscopo)
  • Cómo emplear las interfaces de red para juegos multijugador

Tema 10: Animación y Simulación

Este tema te muestra las principales técnicas de animación y simulación para el desarrollo de aplicaciones gráficas interactivas. En animación estudiarás cómo emplear curvas para definir movimiento, así como todo lo relativo al movimiento basado únicamente en velocidades (cinemática). Por otro lado, en simulación estudiarás el movimiento basado en fuerzas (dinámica), para lo cual emplearás una librería de sólido rígido adecuada (Física).

En este tema podrás aprender:

  • Curvas de animación (Bézier)
  • Cómo desarrollar un ejemplo de juego basado en curvas
  • Cómo emplear la ley de Newton para acelerar cuerpos animados
  • Cómo usar una librería de sólido rígido