SlideShare a Scribd company logo
1 of 103
Download to read offline
16
TEMA 15. INTRODUCCIÓN
A LA PROGRAMACIÓN
ANDROIDE
José M. Castillo Castillo
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
1
INDICE DE CONTENIDO TEMA 15. INTRODUCCIÓN A LA PROGRAMACIÓN
ANDROIDE
1. INTRODUCCIÓN
1.1 Android desde dentro
1.2 Entorno de ejecución de android
1.3 Framework de aplicaciones
2. INSTALACIÓN DEL ENTORNO EN PROGRAMACIÓN
2.1 Introducción
2.2 Descarga e instalación de eclipse
2.3 Descarga e instalación de las android development tools (adt)
2.4 Ejecutar una aplicación android de prueba
2.5 Perspectivas (vistas predefinidas del framework)
2.6 Ejecución de los programas
3. ESTRUCTURA DE UN PROYECTO ANDROID
3.1 Carpetas del programa
3.2 Archivo androidmanifest
3.3 Cómo empezamos
4. USO DE ECLIPSE
4.1 Combinaciones de teclas
4.2 Explorador de paquetes en vista jerárquica
5. CONCEPTOS BÁSICOS
5.1 Componentes de una aplicación
5.2 Actividades
5.3 Servicios
5.4 Receptores de mensajes de distribución
5.5 Proveedores de contenidos
5.6 Intents
5.7 Intent-filters
5.8 Androidmanifest
6. CONTROLES Y EVENTOS
6.1 Controles y eventos
6.2 Práctica - captura del clic de un botón
6.3 Práctica control checkbox
6.4 Práctica control imagebutton
6.5 Práctica control listview
6.6 Práctica control spinner
6.7 Práctica controles radiogroup y radiobutton
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
2
7. ACTIVITIES E INTENTS
7.1 Práctica lanzar un segundo activity
7.2 Práctica lanzar un segundo activity y pasar parámetros
8. LAYOUTS
8.1 Layouts
8.2 Layouts en xml
8.3 Práctica linearlayout
8.4 Práctica scrollview y linearlayout
8.5 Icono de la aplicación
8.6 Archivo de personalización strings
9. MENÚ DE OPCIONES
9.1 Menú de opciones
9.2 Práctica menú de opciones
9.3 Práctica menú de opciones con submenú
9.4 Práctica menú de opciones con iconos
10. CUADRO DE DIÁLOGOS Y NOTIFICACIONES
10.1 Cuadro de diálogos y notificaciones
10.2 Práctica cuadro de diálogo simple
10.3 Práctica cuadro de diálogo con botones de confirmar y cancelar
10.4 Práctica notificaciones
11. ALMACENAMIENTO
11.1 Almacenamiento
11.2 Práctica almacenamiento de datos mediante la clase sharedpreferences
11.3 Práctica almacenamiento de datos en la memoria interna
11.4 Práctica almacenamiento de datos en una tarjeta sd
11.5 Base de datos sqlite
11.6 Práctica almacenamiento en una base de datos sqlite
12. MULTIMEDIA
12.1 Reproducción de audio
12.2 Reproducción de video
12.3 Grabar sonido
12.4 Práctica reproducción de audio
12.5 Práctica reproducción de audio desde archivo internet
12.6 Práctica grabación de audio
13. GADGETS
13.1 Práctica tomar instantánea con cámara
13.2 Práctica envío de mensajes sms
13.3 Práctica posicionamiento con gps
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
3
1. INTRODUCCIÓN
1.1. Android desde dentro
Android es un sistema operativo creado y mantenido por Google, basado en software GNU (open
source). Podría decirse que es una derivación de Linux y uso programación nativa está basada en
Java. También es posible programarlo desde híbridos tales como Ionic o PhoneGap; incluso con
C/C++ como Unity.
Icono de android
Android, en contraste a otros sistemas operativos como iOS o Windows Phone que son aún más
cerrados incluido al hardware específico del dispositivo, se trabaja abiertamente (mediante Open
Source). De ello se deriva que sea tan popular en los fabricantes de hardware móvil, porque lo
pueden integrar sin costo.
Arquitectura
Cómo funciona internamente Android. Está basado en una serie de componentes:
 Bibliotecas: conjunto de bibliotecas de C/C++ empleadas por diversos componentes del
sistema. Los desarrolladores desde el marco de trabajo de aplicaciones de Android, visualizan
estas particularidades; como por ejemplo: System C library, Unity, 3D y SQLite.
 Aplicaciones de integración: son el correo electrónico, programa de SMS, calendario, mapas,
navegador, contactos y otros.
 Marco de trabajo (framework) de aplicaciones: los desarrolladores pueden acceder a la
totalidad de los APIs del framework empleados por las aplicaciones base. La arquitectura
está trazada para facilitar la reutilización de todos estos componentes.
 Kernel (Núcleo Linux): Android es un sistema dependiente de Linux para aquellos servicios
base del sistema como son: seguridad, gestión de memoria, gestión de procesos, pila de red
y modelo de controladores.
 Librerías de ejecución (Runtime) Android: este sistema operativo contiene todo un
muestrario de bibliotecas base que suministran la mayoría de las funcionalidades disponibles
en las bibliotecas base del lenguaje Java. Cada aplicación Android conlleva un proceso
propio, con instancia propia de la máquina virtual Dalvik. Desde la versión 5.0 utiliza el ART,
que agrupa todo al instante de instalación de la aplicación.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
4
NOTA: A lo largo de este curso, se trabaja sobre una versión de Eclipse en concreto. Debido a la
continua actualización de Eclipse, es importante saber que, tanto las ventanas, las perspectivas, el
manejo y los plugins se mantiene siempre igual. En relación al curso, la versión que se usa es Juno. Si
algún usuario usa por primera vez Eclipse, puede descargarse la misma versión, que se explica, en la
web oficial. Los usuarios con más experiencia pueden usar la última versión disponible. En ambos
casos, se sigue igual el estudio del curso y la realización de los ejercicios. Recomendamos usar Eclipse
versión Juno; aunque existe otra nueva versión, se puede seguir descargando de la web oficial en
este Enlace
Concepto definible de android en Wikipedia
Android es un sistema operativo basado en el núcleo Linux. Fue diseñado principalmente para
dispositivos móviles con pantalla táctil, como teléfonos inteligentes, tablets o tabléfonos; y también
para relojes inteligentes, televisores y automóviles. Inicialmente fue desarrollado por Android Inc.,
empresa que Google respaldó económicamente y más tarde, en 2005, la compró. Android fue
presentado en 2007 junto la fundación del Open Handset Alliance (un consorcio de compañías de
hardware, software y telecomunicaciones) para avanzar en los estándares abiertos de los dispositivos
móviles. El primer móvil con el sistema operativo Android fue el HTC Dream y se vendió en octubre
de 2008. Los dispositivos de Android venden más que las ventas combinadas de Windows Phone e
IOS.
Android ejecutándose en un Samsung Galaxy
El éxito del sistema operativo se ha convertido en objeto de litigios sobre patentes en el marco de las
llamadas «Guerras por patentes de teléfonos inteligentes» (en inglés, Smartphone patent wars) entre
las empresas de tecnología. Según documentos secretos filtrados en 2013 y 2014, el sistema
operativo es uno de los objetivos de las agencias de inteligencia internacionales.
La versión básica de Android es conocida como Android Open Source Project (AOSP).
El 25 de junio de 2014 en la Conferencia de Desarrolladores Google I/O, Google mostró una
evolución de la marca Android, con el fin de unificar tanto el hardware como el software y ampliar
mercados.
Ejercicio: Importar ejercicios.
1.2. Entorno de ejecución de android
Para cada una de las aplicaciones ejecutas de Android, llevan un proceso propio, con su
correspondiente instancia de la máquina virtual Dalvik. Está optimizada para requerir poco espacio y
poca memoria. Este funcionamiento es vital para dispositivos móviles.
Desde la versión Lollipop de Android se maneja el ART (reemplazando a Dalvik), que compila
íntegramente al instante de instalación de la aplicación.
Ejercicio: Importar ejercicio.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
5
1.3. Framework de aplicaciones
Provee de una plataforma o framework de desarrollo que puede ejercer según la necesidad tanto
con: barra de notificaciones, sensores, gps/gsm, servicios, etc.
Esta capa ha sido trazada para dar lugar a la reutilización de componentes. Es una característica única
e interesante de Android con respecto a IOS, Windows Phone, Palm o Blackberry. Las aplicaciones
pueden transmitir sus posibilidades o capacidades y otras pueden utilizarlas condicionadas a las
restricciones de seguridad. Los servicios más destacados son:
 Views Manager: es el entorno visual de los diferentes componentes.
 Resource Manager: da acceso a los diversos recursos que no son código.
 Notification Manager: deja ver las alertas personalizadas mostrándolas en la barra de
estado.
 Activity Manager: opera con el ciclo de vida de las diferentes aplicaciones y suministra un
sistema de navegación para ellas.
 Content Providers: es un mecanismo de acceso a datos entre diversas aplicaciones.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
6
2. INSTALACIÓN DEL ENTORNO EN PROGRAMACIÓN
2.1. Introducción
El SDK (Software Development Kit) de Android, es un kit de desarrollo que incluye:
Un debugger o depurador de código
Bibliotecas de versiones y subversiones Android
Documentación con códigos de ejemplo y guías.
Un simulador de teléfono.
El SDK de Android puede añadirse a cualquier Sistema Integral de desarrollo (IDE, Integrated
Development Environment). Sean Visual Studio, Mono, Android Studio y en nuestro caso Eclipse.
Importar ejercicio:
2.2. Descarga e instalación de eclipse2 Cualidades de los productos
1. Visita la web de descargas de Eclipse desde este Enlace y descárgate la última versión.
NOTA: Recomendamos la versión Eclipse Indigo o superior para que sea compatible con ADT
(Android Development Tools).
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
7
Descargas de Eclipse
1. Una vez realizada la descarga, descomprima el archivo. Por defecto, se ha de crear una
carpeta denominada c:eclipse
2. Ejecute el fichero eclipse.exe. La primera vez que lo haga, le solicitará un directorio para
ubicar el workspace. Seleccionamos la ruta deseada, siendo ésta donde se almacenarán los
proyectos. Pulse sobre “Use this as the default…” y haga clic OK.
NOTA: actualmente existen dos entornos de desarrollo diferenciados Android; la integración de
Android con Eclipse (u otro IDE similar) y el reciente entorno, propuesto por Google, Android Studio.
Éste último pensado para desarrollos de aplicaciones desde Android 4.3 en adelante.
Importar ejercicio:
2.3. Descarga e instalación de las android development tools (adt)
Para añadir el plugin ADT a Eclipse:
1. Lanzar Eclipse / Help / Install New Software
NOTA: Recomendamos la versión Eclipse Indigo o superior para que sea compatible con
ADT (Android Development Tools).
Añadir plugin ADT a Eclipse (paso 1)
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
8
2. Clic sobre Add.
3. Y añadir “ADT Plugin” para Name y en Location, la URL https://dl-
ssl.google.com/android/eclipse/
Añadir plugin ADT a Eclipse (paso 2)
4. Pulsar OK, seleccionar el soft disponible y pulsar Next
Añadir plugin ADT a Eclipse (paso 3)
5. Leer y aceptar las licencias y pulsar Finish.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
9
Si ya tenemos una versión de Eclipse sin SDK, se lo podemos añadir descargando sólo el paquete con
el SDK desde este Enlace
Apartado para descargar paquete SDK
Instalamos el fichero ejecutable y comprobamos que está correctamente instalado en Eclipse.
Android SDK Manager servirá para descargar repositorios, actualizaciones y documentación.
Comprobación de instalación del paquete SDK
2.4. Ejecutar una aplicación android de prueba
Ya estamos en condiciones de poder crear un proyecto Android para ver que todo funciona
correctamente. Lo primero, crear un dispositivo virtual Android o AVD (Android Virtual Device) en el
cual podamos testear las aplicaciones:
1. Abrimos el menú Windows y seleccionamos Android AVD Manager.
2. Escribimos la denominación deseada para el dispositivo virtual, y pulsamos sobre la
versión de Android que utilizará. Cliqueamos en la opción Create AVD y después en
Finish.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
10
Ejecutar aplicación Android de prueba (paso 1)
Ejecutar aplicación Android de prueba (paso 2)
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
11
Ejecutar aplicación Android de prueba (paso 3)
3. Ya tenemos el entorno instalado.
2.5. Perspectivas (vistas predefinidas del framework)
PERSPECTIVA JAVA
Perspectiva de Eclipse para Java
En éste caso, el IDE de Eclipse provee de la estructura necesaria para la escritura de ficheros .java y
.xml que usaremos para el desarrollo. Así cómo la estructura de carpetas necesaria para los recursos,
manifiest, etc y la estructura de la aplicación (clases y subclases).
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
12
PERSPECTIVA DDMS
La perspectiva Dalvik Debugger (DDMS) es la encargada de “depurar” y controlar las variables y
funciones de la máquina virtual Dalvik con respecto a un dispositivo real o virtual.
Es una perspectiva útil cuando ejecutamos una aplicación en tiempo real donde podemos ver el flujo
de datos, los servicios ejecutados, los posibles fallos o warnings de DalvikVM, el valor que contiene
cada variable, puntos de ruptura específicos, etc.
En la pestaña “Window” / “Open Perspective” / “Other”/ “DDMS”.
Perspectiva de Eclipse para DDMS
Importar ejercicio:
2.6. Ejecución de los programas
Los programas lo podemos ejecutar de tres formas:
1. Vía emulador de Android nativo del SDK, haciendo clic sobre el proyecto con el botón
derecho, y en “Run as” seleccionar “Android Application” viendo una pantalla tal como
ésta:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
13
Emulador de Android nativo
2. Vía emulador de Android de terceros: de entre los cuales destacaré Genymotion. Siendo
éste más veloz que el nativo del SDK. Siendo un ejemplo:
Emulador de Android terceros
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
14
3. Vía ejecución en dispositivo real: conectando por cable el dispositivo al ordenador y
seleccionando. Para ello necesitas:
 Instalar el driver de tu móvil en el ordenador.
 Establecer tu dispositivo para ejecutar aplicaciones reales.
En Eclipse, el SDK de Android identificará el móvil como otro dispositivo. Significa que podemos
realizar tareas de depuración con el dispositivo, ya sea por cable usb o por wifi, de aplicaciones.
En la pestaña DDMS está una subpestaña que muestra todos los dispositivos conectados. Cuando
ejecutes la aplicación, podrás seleccionar el dispositivo móvil del listado y el propio Eclipse instalará
la .apk y ejecutará la aplicación.
DATOS DE INTERES
Si desarrollas aplicaciones Android y tienes instalado el simulador que viene incluido en el SDK es
muy posible que ya estés acostumbrado a esperar periodos interminables a que arranque o
que sencillamente el emulador tarde tanto tiempo en reaccionar que las aplicaciones ni siquiera se
instalen.
Si usas el emulador de Android y eres tan impaciente como este servidor, de seguro debes
odiarlo tanto como yo.
EL SIMULADOR NATIVO DE ANDROID
El SDK de Android es espectacular, incluye librerías y herramientas de depuración que son
indispensables para crear una aplicación, pero el emulador siempre ha sido una piedra en el zapato
para los desarrolladores. El rendimiento general del sistema se reduce al utilizar el simulador, al
ejecutar una aplicación se obtiene un rendimiento inferior al que tendría normalmente y de paso
arruina la experiencia en cualquier otra aplicación que se ejecute en mi sistema.
GENYMOTION: UN EMULADOR ANDROID MÁS RÁPIDO ES POSIBLE
Con Genymotion, el tiempo de respuesta es abismalmente inferior, por ejemplo, ejecutando la
misma aplicación que me tomó casi 10 minutos en el simulador normal, me toma 1 minuto o menos
realizar el mismo proceso en Genymotion.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
15
El tiempo de arranque es mínimo y el rendimiento general de la aplicación es fluido y natural. El
simulador de Genymotion se siente y se comporta como un dispositivo real.
Genymotion es un programa de paga, pero no te asustes, hay una versión gratuita para
desarrolladores que te permite un amplio rango de acción, en más de un año de usar
la versión gratuita nunca he necesitado ninguna función adicional para probar mis aplicaciones.
Genymotion es el simulador perfecto que le faltaba a Android, es gratuito y para instalar Genymotion
debes primero ir al sitio oficial y crearte un nombre de usuario gratuito:
https://cloud.genymotion.com/page/customer/login/?next=/
Recuerda…
Una perspectiva es:
- Parte configurable de la interfaz de Eclipse
- Un conjunto de vistas
Un AVD es:
- Android Virtual Device
- Un dispositivo virtual
El paquete ADT significa: Android Development Tools
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
16
3. ESTRUCTURA DE UN PROYECTO ANDROID
3.1. Carpetas del programa
Un proyecto Android, ya sea generado por Android Studio o Eclipse, tiene una estructura modular
que facilita la programación, así como la reutilización del código; y sobretodo, sigue el patrón MVC
(Modelo Vista Controlador - muy usado en la web) que diferencia la lógica (qué hace el programa) de
la vista (interfaz gráfica o lo que el usuario ve).
Cada carpeta sirve para un propósito, siendo:
 src: aquí dentro contendrá el código fuente que escribiremos la lógica .java
 Carpeta res: contendrá los ficheros de recursos necesarios para la aplicación (imágenes,
sonidos, strings, xmls, etc). Su desglose es:
o Res->layout: archivos de interfaces gráfica o pantallas (formato .xml).
o Res->drawable: con elementos gráficos usados en por la aplicación y estructurados
según resolución.
o Res->values: ficheros de recursos, tales como: strings.xml y styles.xml.
o Res->raw: contiene recursos adicionales en otro formato que no es XML.
 gen: contiene los ficheros ejecutables .apk (ficheros transformados para ser entendibles por
el dispositivo Android) y compilados de la aplicación. Nunca deben modificarse
directamente, es Eclipse quién los genera de forma automática al compilar.
 assets: contiene todos los ficheros adicionales de la aplicación que serán empaquetados en
el .apk
 bin: conjunto de archivos procedentes de gen y assets; destaca por almacenar el .apk
(fichero ejecutable instalador de la aplicación en el dispositivo).
3.2. Archivo androidmanifest.xml
Contiene la definición en ficheros .xml de aspectos importantes de la aplicación, de hecho, la omisión
de algún parámetro según qué tipo de aplicación tendría consecuencias de errores graves que
impidiesen la ejecución de la aplicación.
Tales aspectos pueden ser: nombre, autor, versión-subversión de la aplicación, iconos asociados a la
compilación del paquete .apk, interllamadas a ventanas/pantallas de la interfaz gráfica y permisos
necesarios para su correcta ejecución.
3.3. Cómo empezamos
Ya tenemos todo lo necesario instalado (SDK e IDE). También conocemos la estructura de Eclipse y
cómo funciona Android internamente.
Ahora vamos a comenzar con un proyecto de prueba con los pasos siguientes:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
17
1. Desde el menú de opciones: File -> New -> Android Application Project
Proyecto de prueba (paso 1)
Aquí definiremos el nombre de la aplicación, proyecto y la denominación del paquete
(con extensión .java) donde se ubicarán tales archivos.
2. Iremos pasando por todas las pantallas, haciendo clic en Next hasta llegar a "Finish".
El ADT generará los directorios y archivos básicos necesarios para poder iniciar el
proyecto:
Proyecto de prueba (paso 2)
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
18
Recuerda…
En el archivo Manifiest se establece:
- Permisos de la aplicación
- Conjunto de actividades
La cadena de caracteres (strings.xml) está en res/values/
La interfaz gráfica está en la carpeta res/layout/
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
19
4. USO DE ECLIPSE
4.1. Combinaciones de teclas
Mediante el uso de combinaciones de teclas (denominados en argot Shortcuts), accedemos a
funciones útiles dentro de Eclipse.
Autocompletado de métodos mejorado
Mediante la secuencia de teclas Ctrl+Espacio nos ahorraremos escribir el fin de la instrucción del
código a través de texto predictivo.
Autocompletado de métodos
Formateo de código
Eclipse dispone de un autoformato de código semi-automático, para ello poder realizar la secuencia
de Ctrl+Shift+F. Podemos escribir un código sin tabular o con las mismas mal dispuestas, espacios
sobrantes, etc., y Eclipse nos deja un código limpio, claro y ordenado.
Formateo de código
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
20
Inserción automática de Imports (librerías)
Mediante Ctrl+Shift+O, se reorganizan aquellos importes que deben ser añadidos y su declaración de
los mismos no aparecen en el código.
Comentarios
Mediante Ctrl + / comentamos todas las líneas de la selección actual. Con Ctrl + ; des comentamos
dichas líneas.
4.2. Explorador de paquetes en vista jerárquica
El explorador de paquetes dispone de dos formas de visualización, la estructura de archivos y las
carpetas de un proyecto: normal y jerárquica. Por defecto, se nos presenta la normal. Para una
mejor organización, la forma de organización la jerárquica es más útil.
Vistas del explorador de paquetes
Recuerda…
Un buen ejemplo de codificación es mediante la tabulación, para ello, Eclipse dispone de teclas de
combinación rápida que nos facilita esta tarea: Shift+Ctrl+F.
Al escribir código necesitamos acceso a la librería llamadas “imports” y los hacemos a través de las
teclas combinadas Ctrl+Shift+O.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
21
5. CONCEPTOS BÁSICOS
5.1. Componentes de una aplicación
Antes de empezar a programar con Android, sería conveniente un resumen de elementos y funciones
del sistema.
Lo fundamental es saber cómo funciona; es decir, internamente es muy similar a Linux (deriva del
núcleo). Cada aplicación tiene su propio "entorno de proceso" y éste es único (un ID irrepetible), de
esta forma sólo esta aplicación tiene acceso a sus archivos.
También es conveniente saber que una aplicación puede estar en primer plano (la que se ejecuta de
forma visible en ese momento y estamos viendo) y otras, en segundo plano. Todas ellas con su
propia lista de procesos (denominado pila).
Esto implica que las activadas se van "apilando", unas encima de otras, según van siendo lanzadas o
rellamadas (invocadas, fueron lanzadas y quedaron en segundo plano y ahora regresan a primer
plano).
El sistema destruirá la actividad que lleve más tiempo pausada/detenida/parada o en el caso de
que el sistema necesitase mucha memoria.
De las características más interesante del diseño Android, es la posibilidad de reutilización de
componentes. Esto significa que aplicaciones diferentes pueden utilizar un mismo componente
común; con ello se evita la reiteración de código y ocupar espacio innecesario y un gasto de memoria
inútil.
En Java o .NET estamos acostumbrados a manejar conceptos como ventana, control, eventos o
servicios como los elementos básicos en la construcción de una aplicación.
Pues bien, en Android vamos a disponer de esos mismos elementos básicos aunque con un pequeño
cambio en la terminología y el enfoque. Repasemos los componentes principales que pueden formar
parte de una aplicación Android [Por claridad, y para evitar confusiones al consultar documentación
en inglés, se traducirán éstos.
5.2. View
Las vistas (view) son los componentes básicos con los que se construye la interfaz gráfica de la
aplicación, análoga por ejemplo a los controles de Java o .NET. De inicio, Android pone a nuestra
disposición una gran cantidad de controles básicos, como cuadros de texto, botones, listas
desplegables o imágenes, aunque también existe la posibilidad de extender la funcionalidad de estos
controles básicos o crear nuestros propios controles personalizados.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
22
5.3. Actividades
Las actividades (activities) representan el componente principal de la interfaz gráfica de una
aplicación Android. Se puede pensar en una actividad como el elemento análogo a una ventana o
pantalla en cualquier otro lenguaje visual.
Cada pantalla se le denomina activity (actividad). Las aplicaciones pueden constar (no siempre pero
es común) de pantallas que conformen la interfaz gráfica.
Esquema gráfico de activitys
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
23
5.4. Servicios
Es aquél proceso llevado a cabo automáticamente en memoria, sin necesidad de intervención por
parte del usuario. Pueden ser de dos tipos: locales (ejecutado en el mismo proceso o hilo de
ejecución) y remotos (ejecutados en procesos separados o hilos diferentes).
Los servicios (service) son componentes sin interfaz gráfica que se ejecutan en segundo plano. En
concepto, son similares a los servicios presentes en cualquier otro sistema operativo. Los servicios
pueden realizar cualquier tipo de acciones, por ejemplo actualizar datos, lanzar notificaciones, o
incluso mostrar elementos visuales (p.ej. actividades) si se necesita en algún momento la interacción
con del usuario.
Esquema gráfico de servicios
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
24
5.5. Receptores de mensajes de distribución
También llamados receptores de radiodifusión (broadcast receivers).
Un broadcast receiver es un componente destinado a detectar y reaccionar ante determinados
mensajes o eventos globales generados por el sistema (por ejemplo: “Batería baja”, “SMS recibido”,
“Tarjeta SD insertada”,…) o por otras aplicaciones (cualquier aplicación puede generar mensajes
(intents, en terminología Android) broadcast, es decir, no dirigidos a una aplicación concreta sino a
cualquiera que quiera escucharlo).
Responde y está alerta (Watchdog) a las notificaciones del sistema o de otras aplicaciones.
EJEMPLO: Cuando está alerta e informa a las aplicaciones cuando la batería está casi agotada o la
pantalla se ha apagado.
5.6. Proveedores de contenidos
Los proveedores de contenidos (content provider) son usados como bibliotecas de datos para
posibilitar la compartición de datos entre aplicaciones distintas.
Un proveedor de contenidos (content provider) es el mecanismo que se ha definido en Android para
compartir datos entre aplicaciones. Mediante estos componentes es posible compartir determinados
datos de nuestra aplicación sin mostrar detalles sobre su almacenamiento interno, su estructura, o
su implementación. De la misma forma, nuestra aplicación podrá acceder a los datos de otra a través
de los content provider que se hayan definido.
EJEMPLO: Los contactos del teléfono. Cualquier aplicación con los permisos necesarios, puede
comunicarse con estos datos mediante el content provider.
5.7. Widget
Los widgets son elementos visuales, normalmente interactivos, que pueden mostrarse en la pantalla
principal (home screen) del dispositivo Android y recibir actualizaciones periódicas. Permiten mostrar
información de la aplicación al usuario directamente sobre la pantalla principal.
5.8. Intents
Representan una acción que deseamos efectuar, tales como:
Iniciar un servicio
Lanzar una actividad.
Intercambiar información entre componentes.
Ej: Una actividad llama a otra.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
25
Un intent es el elemento básico de comunicación entre los distintos componentes Android que
hemos descrito anteriormente. Se pueden entender como los mensajes o peticiones que son
enviados entre los distintos componentes de una aplicación o entre distintas aplicaciones.
Mediante un intent se puede mostrar una actividad desde cualquier otra, iniciar un servicio, enviar
un mensaje broadcast, iniciar otra aplicación, etc.
5.9. Intent-filters
Al desarrollar una nueva actividad, servicio o receptor de radiodifusión, se puede informar al sistema
de las intenciones incluidas que se pueden resolver con nuestro componente. Es decir, especificar
qué aplicación puede lanzar una actividad o recibir un receptor específico.
5.10. Androidmanifest
AndroidManifest.xml es un archivo de configuración desde la cual podemos especificar
características, funcionamiento básico y restricciones de seguridad de la aplicación.
Su configuración puede realizarse a través de una interfaz gráfica aunque también pueda ser
interesante conocer la estructura de código para poder realizar modificaciones más específicas.
Recuerda…
Las notificaciones están encargadas de reaccionar ante eventos
Las Activitys son elementos de comunicación entre aplicación y usuario.
Los Servicios no tienen interfaz visual.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
26
6. CONTROLES Y EVENTOS
6.1. Controles y eventos
Una vez obtenido, de temas anteriores, las herramientas y presentación global del sistema Android a
nivel teórico, procedemos a la parte práctica del curso.
En éste tema describiremos de una forma práctica la implementación en Android de diversos
controles y sus respectivas respuestas de activación.
Datos importantes antes de comenzar las prácticas
ATENCIÓN: La mayoría de los proyectos presentados en el curso no disponen del código para el
comportamiento del menú de opciones, evitando un aumento del número de líneas de código que
aumenten la complejidad de los proyectos sin un uso justificado; salvo que temas que se ocupen de
los mismos o requieran del uso, en los cuales sí hacen uso de tal funcionalidad. Como observación,
algunas versiones de Eclipse, crean por defecto tales líneas.
Por lo que recomendamos que eliminen o comenten tales líneas:
En los proyectos importables del curso tienen en cuenta todo lo anteriormente explicado.
NOTA 1: La denominación de cualquier proyecto puede ser el que se quiera. No es necesario que sea
exacto al que aparecen en las imágenes. Los recursos (en caso de ser necesarios): imágenes, textos,
sonidos, etc. están incluidos en sus respectivas prácticas importables.
NOTA: Esta es la primera inclusión en un proyecto Android, por lo que rogamos una lectura detenida
para asimilar conceptos necesarios en futuras lecciones. Así mismo, las pantallas pueden sufrir
variaciones según versión del SDK, entorno Eclipse y el dispositivo a ejecutar (AVD virtual o
directamente sobre hardware); en caso de duda, por favor, realice una importación del proyecto y
obtendrá el mismo listo para probar y con todos los elementos necesarios para su análisis-prueba.
Por último, se puede variar el orden los ejercicios incluidos en cada tema, sin que repercuta a la
correcta comprensión.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
27
6.2. Práctica - captura del clic de un botón
Problema:
Sumar dos números mediante cajas de entrada de texto (EditText) usando un botón para iniciar el
cálculo. El valor resultado se mostrará en un control.
Ejecución del programa
Controles de la interfaz
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
28
La lógica para efectuar la suma es:
Retraemos el texto de los dos controles (EditText), los almacenamos en dos variables String.
Transformamos los String a tipo entero (ahora ya son números), y por último, los sumamos.
Código fuente completo:
Acceso al documento PDF completo:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
29
6.3. Práctica - control checkbox
Al ejercicio anterior de Suma, le incluimos dos controles CheckBox.
Problema:
Desde dos campos de entrada de texto, seleccionamos controles CheckBox para seleccionar que
cálculo aplicar: sumar, restar y sumar-restar (a la vez)
Detalle de interfaz con controles
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
30
El código fuente de la Activity:
Acceso a la documentación PDF completa:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
31
6.4. Práctica - control imagebutton
Usaremos un control gráfico denominado ImageButton, mucho más vistoso y visual mediante la
incorporación de un icono interactivo.
Detalle de controles en interfaz
El código fuente de la Activity:
Acceso a la documentación PDF completa:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
32
6.5. Práctica - control listview
Usaremos un control muy especial, ListView. Con este control podremos seleccionar, de varios
elementos, uno de ellos. Si el tamaño de la lista excede del espacio delimitado, se habilita un scroll.
Problema:
Seleccionar un país de una lista y que este muestre el número de habitantes.
Aplicación ejecutada
Detalle de controles incluidos
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
33
El código fuente de la Activity:
Acceso a la documentación completa PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
34
6.6. Práctica - control spinner
Usaremos este control para servir de contenedor de opciones; es decir, al ser pulsado se abre el
contenedor mostrando su contenido y nos permita seleccionar un sólo elemento de una lista.
Problema:
Cargaremos dos números en controles EditText. Con el control Spinner, seleccionaremos el tipo de
operación básica, ya sea esta: una suma, resta, una multiplicación o una división.
Propuesta de interfaz
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
35
El código fuente de la Activity principal:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
36
Mediante if (anidados) comprobamos qué operación efectuar:
Acceso a la documentación completa en PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
37
6.7. Práctica - controles radiogroup y radiobutton
Implementaremos una aplicación usando dos RadioButton dentro de un contenedor que los
encapsule (denominado RadioGroup)
Problema:
Previo a la introducción de valores en las cajas de texto, mediante controles RadioButton,
seleccionaremos que operación efectuar (suma o resta).
Relación de controles
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
38
El código fuente de la Activity:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
39
Código fuente de la Activity secundaria:
Con el control RadioButton, a través del método isChecked, devuelve TRUE (verdadero) si el
elemento está siendo seleccionado:
Acceso a la documentación completa en PDF:
Recuerda…
En cuanto al código que lo activa, podemos usar:
- Listeners asociado a un método
- Creando un método específico de tipo View
Los botones son elementos interactivos que en el XML deben tener, como mínimo:
- Propiedad ID
- Evento de activación (por ejemplo OnClic)
Un botón puede contener o ser un elemento gráfico mediante los ImageButton.
Para poder usar un control, en éste caso un TextView, debemos realizar siempre en Java es
localizarlo en código, asignarle una variable y después el método a usar.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
40
7. ACTIVITIES E INTENTS
7.1. Práctica - lanzar un segundo activity
En éste tema abarcaremos la creación de "pantallas" y de la comunicación de estas mediante paso de
parámetros.
NOTA: están disponibles los proyectos para su prueba y análisis mediante importación. No obstante,
siempre que alumno no quede atascado, se recomienda ir paso a paso, leyendo y escribiendo el
código conforme se va explicando en el tema para la correcta asimilación del curso.
Ejercicio: Lanzar un segundo "Activity"
Implementaremos una comunicación entre dos activities (dos pantallas) de la misma aplicación.
Problema 1:
Crearemos dos Activity y uno llamará al otro a través de un botón.
Para que funcione de forma correcta, debemos registrar el Activity en el fichero
"AndroidManifest.xml":
Lanzar segundo Activity
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
41
Nuestro programa funcionando completamente:
Activity principal Activity secundario
El código fuente de la Activity principal:
Código fuente de la Activity secundaria:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
42
Acceso a la documentación en PDF completa:
Problema 2:
Una aplicación con dos actividades, la principal solicita una clave correcta. Mostrará un mensaje si
ésta resulta ser correcta.
En tiempo de ejecución los dos Activity deben mostrarse:
NOTA: con fines metodológicos, éste problema se plantea para que el alumno pruebe el proyecto
importado y lo analice con detenimiento. Así como incitar a realizar diversas modificaciones en la
clave.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
43
7.2. Práctica - lanzar un segundo activity y pasar parámetros
No solamente podemos abrir "ventanas", sino que también podemos pasar información entre ellas.
Para poder traspasar datos entre actividades, necesitamos Intents.
NOTA: un problema muy común es que la aplicación interrumpa su ejecución debido a que no tenga
los permisos suficientes desde el manifiest. Por favor, téngalo en cuenta de aquí en adelante.
Problema:
Aplicación que tenga un campo de entrada con una dirección URL de una web. Una vez pulsado el
botón, abrirá una conexión vía navegador hacia dicha web.
También incorporamos un nuevo elemento denominado WebView que para emular un navegador
web.
Ejemplo funcional del programa:
Actividad principal
Actividad secundaria
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
44
No hay que olvidar complementar la actividad Activity en el archivo "AndroidManifest.xml". Para que
existan los permisos de llamada entre actividades y permisos de internet.
AndroidManifest.xml
Fijar en la propiedad name el valor android.permission.INTERNET
Detalle de la segunda interfaz, actividad2.xml
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
45
El código fuente de la Activity principal:
Código fuente de la Activity secundaria:
Acceso a la documentación completa en PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
46
Recuerda:
Las Activities son pantallas virtuales.
Los Intents comprenden:
- Sistema de comunicación entre activities
- Paso de parámetros de pantallas
El método Finish() tiene por objetivo liberar espacio de una actividad en memoria.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
47
8. LAYOUTS
8.1. Layouts
La interfaz gráfica está compuesta de varios elementos vista (view). Estos elementos están
englobados en un objeto denominado Layout. Un Layout es un contenedor (padre) con uno o varios
controles insertos (componentes hijos); y siendo el padre, aquel que controla comportamiento-
posición de los hijos.
He aquí los ejemplos más importantes:
LinearLayout: los elementos están dispuestos en una fila o en una columna.
TableLayout: los elementos están dispuestos de forma tabloide o tabular o x/y.
RelativeLayout: los elementos están dispuestos en relación a otro o al padre.
AbsoluteLayout: sitúa los elementos de forma absoluta, es decir, ubica de forma fija un
elemento.
FrameLayout: según dimensiones de la pantalla, permite la reorganización dinámica de los
elementos que contiene sin distribución espacial.
ScrollView: los elementos están dispuestos una columna; cuando estos no caben en la pantalla,
se habilita un scroll con deslizamiento vertical.
HorizontalScrollView: dispone de una fila de elementos; cuando estos no caben en la pantalla, se
habilita un scroll con deslizamiento horizontal.
ListView: dispone de una lista deslizable verticalmente de varios elementos.
GridView: dispone un grid (cuadrícula) deslizable de filas-columnas.
Parámetros de diseño
Los atributos de diseño XML denominados layout_something definen parámetros de diseño para el
objeto View que son adecuados para el objeto ViewGroup en el que reside.
Cada clase ViewGroup implementa una clase anidada que extiende ViewGroup.LayoutParams. Esta
subclase contiene tipos de propiedad que definen el tamaño y la posición de cada vista secundaria,
según resulte apropiado para el grupo de vistas. Como puedes ver en la figura 1, el grupo de vistas
principal define parámetros de diseño para cada vista secundaria (incluido el grupo de vistas
secundario).
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
48
Figura 1: Visualización de una jerarquía de vistas con parámetros de diseño asociados con cada vista.
Ten en cuenta que cada subclase LayoutParams tiene su propia sintaxis para configurar valores. Cada
elemento secundario debe definir LayoutParams adecuados para su elemento primario, aunque
también puede definir diferentes LayoutParams para sus propios elementos secundarios.
Todos los grupos de vistas incluyen un ancho y una altura (layout_width y layout_height), y cada vista
debe definirlos. Muchos LayoutParams también incluyen márgenes y bordes opcionales.
Puedes especificar el ancho y la altura con medidas exactas, aunque probablemente no quieras
hacerlo con mucha frecuencia. Generalmente usarás una de estas constantes para establecer el
ancho o la altura:
 wrap_content indica a tu vista que modifique su tamaño conforme a los requisitos de este
contenido.
 match_parent indica a tu vista que se agrande tanto como lo permita su grupo de vistas
principal.
En general, no se recomienda especificar el ancho y la altura de un diseño con unidades absolutas
como píxeles. En cambio, el uso de medidas relativas como unidades de píxeles independientes de la
densidad (dp), wrap_content, o match_parent, es un mejor enfoque, ya que ayuda a garantizar que
tu aplicación se muestre correctamente en dispositivos con pantallas de diferentes tamaños. Los
tipos de medidas aceptados se definen en el documento
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
49
8.2. Layouts en XML
Los Layouts se pueden editar de forma gráfica; no obstante, realmente es un fichero .xml que
internamente puede presentar el siguiente aspecto:
Fichero .xml del Layout
LinearLayout
Los elementos están dispuestos en una fila o en una columna.
Ejemplo de LinearLayout
TableLayout
Los elementos están distribuidos de forma tabla x/y.
Ejemplo de LinearLayout
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
50
RelativeLayout
Los elementos están distribuidos en referencia a otro.
Ejemplo de LinearLayout
AbsoluteLayout
Posiciona los elementos de forma específica absoluta, es decir, posicionar de forma fija un elemento.
Ejemplo de LinearLayout
FrameLayout
Según dimensiones de la pantalla, permite la reorganización dinámica de los elementos que contiene
sin distribución espacial.
Ejemplo de LinearLayout
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
51
8.3. Práctica - linearlayout
La organización de los controles de Android en pantalla, se realiza mediante unos “contenedores”
denominados Layout.
NOTA: este ejercicio sólo se desarrolla paso a paso para que el alumno practique y observe las
diferencias al cambiar las propiedades. No existe, por ello, ningún proyecto para importar.
LinearLayout
LinearLayout es el más simple y directo. Establece los componentes de derecha a izquierda o de
arriba abajo.
Uso de LinearLayout (paso 1)
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
52
Podemos cambiar dicho comportamiento desde la propiedad Orientation:
Uso de LinearLayout (paso 2)
Explicación completa de la práctica en PDF:
8.4. Práctica - scrollview y linearlayout
Las dimensiones de la pantalla de un dispositivo son múltiples, por ello necesitamos controles que
puedan ir “más allá” de la pantalla, al menos de forma virtual mediante scrolling. Para ello,
disponemos del control ScrollView y del control LinearLayout.
NOTA: puesto que sólo incidimos sobre el layout XML, éste ejercicio no necesita la descripción de
ficheros scr/*.java.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
53
Pondremos varios botones que superen la cantidad de espacio del dispositivo. Los numeramos del 1
en adelante:
Ejemplo de LinearLayout
Ejemplo de LinearLayout
Explicación completa de la práctica en PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
54
8.5. Icono de la aplicación
Por defecto, al crear un proyecto, se asigna un icono estándar tal como este:
Icono estándar
Los elementos visuales externos, íconos e imágenes, están almacenados en res (resources), siendo
cada carpeta denominada:
Res/drawable-ldpi
Res/drawable-mdpi
Res/drawable-hdpi
Res/drawable-xhdpi
Y en cada una de estas hay un fichero denominado ic_launcher.png:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
55
Como las resoluciones de los dispositivos Android pueden ser muy distintos dependiendo del
dispositivo, es recomendable copias de cada imagen de recursos a diferentes resoluciones,
atendiendo a:
Resoluciones por pixeles
Problema:
Desarrollaremos una aplicación con tres iconos (icon.png), con las resoluciones de 48, 36 y 72 píxeles
respectivamente.
Detalle de icono de app
8.6. Archivo de personalización strings
El archivo strings.xml almacena constantes de strings (cadenas de caracteres) a modo de variables
globales.
Gracias a strings.xml tenemos todos los mensajes que muestra nuestra aplicación en un sitio, muy
útil para diferentes idiomas sin cambiar los textos de la aplicación de manera local para cada idioma.
Problema:
Desarrollar un proyecto con la entrada de dos valores, permitir seleccionar qué operación efectuar y
cuando se pulse un botón, mostrar el resultado.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
56
El SDK de Android genera automáticamente res/values/strings.xml:
strings.xml
Tiene predefinida tres cadenas llamadas app_name, hello_world y menu_settings:
Cadenas por defecto
Desde Resource podemos ingresar las distintas constantes de forma visual:
Android Resources
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
57
En nuestro proyecto, colocamos los controles que se ven en la imagen:
Detalle de controles
Enlazaremos los mensajes de los controles, de forma unificada, desde el archivo strings.xml, con
"Resources", hacemos clic en "Add..." y seleccionamos "String":
Enlace strings.xml-controles
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
58
Establecemos las constantes de esta forma:
Asociamos las constantes a los controles mediante el archivo activity_main.xml y seleccionamos un
RadioButton y localizamos la propiedad Text, pulsando en el icono con tres puntos (…):
Pulsamos sobre icono (...)
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
59
Seleccionamos la constante deseada:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
60
El código fuente de la Activity:
Recuerda…
El atributo principal de LinearLayout es Orientación.
El RelativeLayout funciona basándose en una estructura de hijos a padres (contenedores).
Los Layouts son elementos que distribuyen los elementos de interfaz gráfica.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
61
9. MENÚ DE OPCIONES
9.1. Menú de opciones
Por defecto, podrá visualizar en el margen inferior de la pantalla en formato de rejilla (grid) con o sin
iconos.
Ejemplo de Menú de opciones
Son usados para menú de opciones (configuración de parámetros) u opciones extras de las
aplicaciones.
9.2. Práctica - menú de opciones
La implementación de un menú de opciones muestra opciones de una forma estándar entre
aplicaciones. Al pulsar el botón Menú, los menús aparecen.
Problema:
Realizar una aplicación que muestre un menú con las opciones: a) que visualice el "Acerca de..." y b)
para terminar el programa.
Ejecutamos y obtenemos el menú
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
62
Con el editor de menú de Eclipse, incluimos "ítem" del menú:
Android Menú
Android Menú
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
63
Para añadir otra opción del menú, pulsamos sobre "Add" tal cómo vemos en la imagen:
Android Menu - Add item
Android Menú - Add ítem
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
64
El código fuente de la Activity:
Método que crea/abre el menú:
Con el método onCreateOptionsMenu "abre" el menú ante un evento del botón del dispositivo:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
65
Método de selección/opciones del menú:
En el método onOptionsItemSelected disponemos de las opciones del menú:
Explicación completa de la práctica en PDF:
9.3. Práctica - menú de opciones con submenú
Desplegaremos un submenú cuando se selecciona una opción del menú principal.
Problema:
Realizaremos una aplicación que muestre un menú con dos opciones: una que visualice el texto y a
su vez, abra un submenú relacionado; la otra opción, que finalice el programa.
Creamos un ítem:
Crear ítem
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
66
Volvemos a presionar "Add" y seleccionamos ahora "Sub-Menú":
Crear submenú
Añadiremos varios items al Sub-menú:
ítems del submenú
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
67
La estructura final debería ser:
Estructura submenú
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
68
El código fuente de la Activity:
Explicación completa de la práctica en PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
69
9.4. Práctica - menú de opciones con iconos
También podemos ubicar gráficos dentro de los items del menú.
Problema:
Desarrollar una aplicación que muestre un menú con dos opciones, una opción que abrirá YouTube y
la otra una red social.
Ejemplo de ejecución
Buscaremos dos iconos y los ubicaremos en las carpetas correspondientes:
Ejemplo de ejecución
Ahora tenemos que crear los dos Item y especificar las propiedades Title (con el texto que queremos
que se muestre) y la propiedad Icon.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
70
El código fuente de la Activity:
Explicación completa de la práctica en PDF:
Recuerda…
Un menú contextual es una “lista” que surge en la pantalla que aparece cuando el usuario mantiene
presionado un elemento determinado
Un submenú es una lista de opciones que surge cuando el usuario acciona un elemento del menú,
que contiene otro menú anidado.
Un menú principal es la colección primaria de una actividad, que aparece cuando el usuario acciona
el botón “Menú” del dispositivo.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
71
10. CUADRO DE DIÁLOGOS Y NOTIFICACIONES
10.1. Cuadro de diálogos y notificaciones
Los cuadros de diálogos son utilizados para mostrar una información de forma puntual al usuario de
la aplicación.
Usos generales:
 Solicitar confirmación rápida.
 Solicitud de elección simple o múltiple al usuario
 Mostrar simplemente un mensaje al usuario
Las notificaciones son mensajes temporales que desaparecen automáticamente tras unos segundos.
Por lo cual, notifica al usuario sin interferir en las acciones que éste realiza con la aplicación.
También las notificaciones pueden permanecer de forma constante tanto en la barra de estado o
como en la notificación de Android. Un ejemplo de éstas son las notificaciones cuando tenemos una
llamada pérdida o un SMS que no hemos visto.
10.2. Práctica - cuadro de diálogo simple
Cuadro de diálogo con información al usuario que no desaparecerá hasta que él interactúe.
Problema:
Desarrollar una aplicación que muestre un cuadro diálogo inmediatamente al inicio de la misma.
Una vez ejecutado el programa, se muestra:
Ejecución del programa
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
72
El código fuente de la Activity:
Explicación completa de la práctica en PDF:
10.3. Práctica - cuadro de diálogo con botones de confirmar y cancelar
Problema:
Ampliamos la aplicación, una vez mostrado el cuadro de diálogo al inicio. Damos dos opciones al
usuario sobre qué desea realizar.
Salida en pantalla de la ejecución del programa:
Ejecución del programa
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
73
El código fuente de la Activity:
Explicación de la práctica en PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
74
10.4. Práctica - notificaciones
La clase Toast muestra un mensaje superpuesto, por un período de tiempo, por encima de cualquier
aplicación. El usuario no puede interactuar. Podría denominarse un mensaje emergente temporal.
Problema:
Desarrollo de una aplicación con pruebas de mensajes emergentes previa pulsación de un botón.
Quedaría:
Pantalla inicial con botones Mensaje por defecto Mensaje centrado
Para generar un mensaje personalizado, creamos toast1.xml, quedando:
toast1.xml
Y al lanzar la aplicación con el mensaje personalizado o customizado:
Ejemplo Toast personalizado
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
75
El código fuente de la Activity:
Explicación de la práctica en PDF:
Recuerda…
Un AlertDialog se recomienda usarlo para mostrar un título, un mensaje de texto, uno o varios
botones, o una lista de elementos para seleccionar.
Un mensaje Toast es un mensaje que dura unos segundos.
Se puede cambiar de posición un Toast, mediante un setGravity.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
76
11. ALMACENAMIENTO
11.1. Almacenamiento
Con Android podremos guardar la información atendiendo a la necesidad a cubrir de la aplicación.
También atendiendo a las características técnicas del dispositivo (ej: no tenga slot para tarjetas SD),
si pueden ser descargados desde un servicio web o base de datos remota o desde una base de datos
local, etc.
En definitiva, para actuar con los datos de una manera más intensiva. Si por el contrario, necesitamos
compartir datos entre aplicaciones, usamos Content Provider; más directo y sin restricción alguna de
seguridad.
Por lo tanto, podremos almacenar los datos en:
 Memoria interna del dispositivo
 Memoria externa (SD u otra tarjeta o medio de almacenamiento)
 Base de datos
 Preferencias compartidas (Sharedpreferences)
11.2. Práctica - almacenamiento de datos mediante la clase SHAREDPREFERENCES
Usaremos las preferencias compartidas (a través de SharedPreferences) para guardar y/o leer datos
simples. Mejor dicho, poca información almacenada de forma local, concretamente en la ruta del
dispositivo: "data/data/nombre_de_la_app_apk/shared_prefs/"
Problema:
Realizar una aplicación que guarde un dato (mail) ingresado en un campo de texto. Al iniciar de
nuevo la aplicación, mostrar el mail que había sido guardado previamente, autorrellenando el campo
de texto.
Usaremos la siguiente interfaz:
Detalle de interfaz
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
77
Al hacer clic en el botón "Confirmar", grabamos en preferencias la variable "mail":
Detalle de la función
El código fuente de la Activity:
Explicación completa en formato PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
78
11.3. Práctica - almacenamiento de datos en la memoria interna
Además de SharedPreferences, la aplicación podrá guardar datos en la memoria interna,
compartiendo espacio con ficheros de sistema y de otras aplicaciones.
Problema:
Desarrollar una aplicación que guarde un dato, desde una caja de texto, hacia un fichero .txt (texto
plano). Al iniciar la aplicación de nuevo, comprobaremos la existencia de tal fichero y, en caso de que
exista, recuperar la información.
Usaremos para interfaz:
Detalle de interfaz
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
79
El código fuente de la Activity:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
80
Explicación completa en formato PDF:
11.4. Práctica - almacenamiento de datos en una tarjeta SD
Una de las situaciones más comunes es el almacenamiento/lectura hacia una memoria externa, en
concreto a memorias SD mediante slot de expansión. Las ventajas son la capacidad y flexibilidad de
intercambio de datos. Las desventajas, una mayor lentitud de acceso y la posibilidad de pérdida de
datos en una extracción de la SD "en caliente".
Problema:
Realizar una aplicación que guarde unos datos, desde una caja de texto, en una tarjeta SD mediante
un botón. También, mediante otro botón, la recuperación de los datos,
Esta sería una aproximación de interfaz:
Interfaz con controles
Antes que nada, hay que solicitar permisos de acceso entre la aplicación y la tarjeta SD, para ello
usamos AndroidManifest.xml, veamos:
AndroidManifest.xml
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
81
El código fuente de la Activity:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
82
Detalle de la función recuperar:
Detalle de la función que extrae los datos, línea a línea, desde la SD:
Explicación Completa en formato PDF:
11.5. Base de datos SQLITE
QLite es un sistema gestor de bases de datos, no relacional, sin servidor y open source.
Viene integrado en el SDK y ofrece un sistema CRUD (altas, bajas, modificaciones y búsquedas).
11.6. Práctica - almacenamiento en una base de datos sqlite
Al estar integrado SQLite en el SDK de Android conlleva: configuración cero, sin ningún servidor
corriendo para enlazar los datos y poco consumo de memoria.
Problema:
Desarrollar un programa que guarde datos, estos sean consultados y puedan ser eliminados y/o
modificados.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
83
Nuestra propuesta de interfaz quedaría tal que así:
Detalle de controles en interfaz
El código fuente de la clase SQLite:
Crearemos dos clases, una que "comunique" con el objeto SQLite (con la clase
padre SQLiteOpenHelper y los métodos: onCreate y onUpgrade para gestionar tablas de la base de
datos):
Código clase 1
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
84
Código de la clase CRUD:
La segunda clase, implementará el sistema CRUD (consultas, altas, bajas y modificaciones):
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
85
Explicación completa de la práctica en formato PDF:
Recuerda…
Necesitamos algún tipo de permiso de almacenamiento externo en el Manifest.
Es interesante SQLite porque no necesita servidor
El método Update, para evitar actualizar toda la tabla, necesita:
- Una instrucción Where que filtre
- Un filtrado de los datos a afectar
Las sentencias SQL realizan una consulta de altas, bajas, modificaciones y creación de tablas.
Para poder usar la clase que gestiona la base de datos debemos crear un objeto.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
86
12. MULTIMEDIA
Hoy en día, los dispositivos móviles no solo se usan para hablar y mandar mensajes de texto. La gran
mayoría de los mismos permiten, grabar y reproducir audio y video, así como realizar fotografías. En
este tema, se intenta presentar todas las posibilidades mencionadas anteriormente, proporcionadas
por Android, así como dar a conocer algunos ejemplos de implementación de pequeñas funciones
para reproducir audio o hacer fotografías.
El Framework proporcionado por Android para multimedia, permite capturar y reproducir audio,
vídeo o imágenes en los formatos más comúnmente usados, pudiendo interactuar con archivos
contenidos en el propio terminal Android, con archivos externos al dispositivo, o con aquellos
dispuestos a través de Internet. Para la reproducción utiliza MediaPlayer o JetPlayer, siendo
MediaRecorder el usado para grabar audio o vídeo, o hacer fotografías a través de la cámara del
terminal. Android soporta varios formatos de audio, video e imágenes. Algunas de ellas como mp3,
midi y flac para audio; 3gp y mpeg para videos; y jpg y png entre otros para imágenes.
12.1. Reproducción de audio
El SDK de Android ofrece dos posibilidades para reproducir audio:
 MediaPlayer: idónea para reproducir audio de larga duración, alta calidad con gran peso en
bytes, o simplemente usados como "backgrounds" de aplicaciones (de fondo cómo un hilo
musical de la app).
 SoundPool: idónea para reproducir audio de poca duración y con la limitación de 1Mb de
tamaño de archivo.
12.2. Reproducción de video
El método más fácil y directo es usar un control que el SDK de Android nos provee. Dicho control es
una vista de tipo VideoView.
Puede probarlo creando un proyecto usando los siguientes ficheros:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
87
video.xml
NOTA: no es recomendable probar una aplicación que ejecute video con el emulador.
Más información:
12.3. Grabar sonido
Las APIs (bibliotecas compartidas) de Android disponen de clases internas que facilitan la captura de
audio y video.
La clase MediaRecorder es fácil de usar y se implementa de una manera poco compleja en la
aplicación.
NOTA: Al igual que pasaba con los videos, se recomienda ejecutar la grabación desde un dispositivo
real y no desde un emulador.
12.4. Práctica - reproducción de audio
Los formatos de audio admitidos por Android son los estandar: mp3, ogg y wav.
Problema:
Dispondremos de dos botones que emitan sonidos almacenados en el dispositivo.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
88
Creamos una carpeta (raw) que alojará los archivos mp3:
Detalle donde se alojan los ficheros de audio
Creamos una interfaz con dos botones e inicializamos las propiedades Text y OnClick de cada botón:
Detalle de interfaz
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
89
Código fuente de la Activity:
Explicación completa de la práctica en formato PDF:
12.5. Práctica - reproducción de audio desde archivo internet
Reproducir un sonido almacenado desde un servidor en internet conlleva una autorización, por parte
de nuestra aplicación, desde el archivo AndroidManifiest.xml
Problema 1:
La interfaz tendrá un botón que emitirá un sonido de un archivo alojado en una ruta remota, es
decir, desde un servidor web.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
90
Lo primero es realizar la petición de autorización al archivo AndroidManifest.xml, veamos cómo:
AndroidManifest.xml
Detalle de propuesta de interfaz para la aplicación
El código fuente de la Activity:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
91
Explicación completa de la práctica en formato PDF:
Problema 2:
Desarrollar una aplicación que "libere" la aplicación mientras carga el archivo de audio. De esta
manera la aplicación no sufre ningún "lag" (retraso o "congelación") al extraer los datos.
El código fuente de la Activity:
Explicación completa de la práctica en formato PDF:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
92
12.6. Práctica - grabación de audio
El SDK de Android tiene implementado, de forma nativa, un grabador/reproductor. Es decir, un
objeto integrado muy fácil de usar en aplicaciones.
Problema:
Una aplicación con dos botones, uno para grabar y otro para reproducir audio respectivamente.
Detalle de la propuesta de aplicación
Al pulsar el botón de grabación, a través de Intent nos comunicamos con la aplicación nativa de
Android para efectuar la grabación:
Al finalizar la grabación, almacenamos la referencia de ubicación del archivo:
Si deseamos reproducir el archivo grabado, usamos MediaPlayer:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
93
El código fuente de la Activity:
Explicación completa de la práctica en formato PDF:
Recuerda…
La clase para reproducir audio/video se denomina MediaPlayer.
Es necesario disponer de una aplicación de permisos efectivos de acceso para acceder a una tarjeta
de memoria externa para leer/almacenar.
Para que una aplicación pueda conectarse de forma automática en Internet, necesita:
- Incorporar permisos de acceso.
- Habilitar un archivo Manifest.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
94
13. GADGETS
En el presente tema, por ser el último, se presume de habilidades y conocimientos suficientes para
poder acometer (creando y modificando) ficheros esenciales de cada proyecto.
Abordaremos elementos hardware directo presentes en la mayoría de dispositivos Android; tales
como: cámara de fotos, sms vía gsm y sensor gps.
13.1. Práctica - tomar instantánea con cámara
Desarrollaremos una aplicación que capture una foto y la almacene en la memoria externa (hacia
una ruta concreta de la tarjeta SD).
NOTA: con fines metodológicos y para no hacerlo bastante más complejo, el proyecto no comprueba
si existe una tarjeta de memoria ni la capacidad necesaria para el almacenaje. Tampoco se
comprueba si el dispositivo no dispone de cámara.
Problema:
Un proyecto que incluya un botón que pueda almacenar una foto, con un código único según fecha-
hora, en una ruta fija.
Aplicación ejecutada
Permisos necesarios:
En AndroidManifest.xml añadimos los permisos necesarios, que son:
Detalle de activity_main.xml:
El archivo activity_main.xml, contendrá el siguiente código:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
95
Código fuente de Activity:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
96
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
97
Explicación completa de la práctica en formato PDF:
13.2. Práctica - envío de mensajes SMS
Realizaremos un proyecto que envíe mensajes sms a un destinatario telefónico.
Aplicación ejecutada
NOTA: con fines metodológicos y para no hacerlo bastante más complejo, el proyecto no comprueba
si existe una tarjeta sim, si está habilitado el modo avión, si existe cobertura de la red de telefonía
móvil.
Problema:
Previo atajar el problema de manera completa, vamos a realizar una breve explicación de
funcionamiento en Android, indicando los elementos necesarios para tal uso.
Antes de escribir el código .java; necesitamos establecer el permiso de envío sms en nuestro
manifest. El permiso concreto sería:
Una vez hecho esto, el código estaría construido así:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
98
La función de envío se traduce como: XXXXXXXXX (siendo X dígitos del nº de teléfono a enviar sms),
"texto de prueba" (el contenido del sms), null, null (para control y seguimiento del envío y recepción)
El código fuente de la Activity principal:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
99
Detalle de la función enviarSMS:
Donde toda la lógica se traduce en:
Explicación completa de la práctica en formato PDF:
13.3. Práctica - posicionamiento con GPS
Mostraremos la posición, de un dispositivo al aire libre o en exteriores, a través del componente
hardware de geo posicionamiento (módulo GPS).
Cabe destacar que también se puede localizar mediante triangulación de redes móviles GSM, donde
exista cobertura, y a través de conexiones WIFI. Sobre todo en interiores, donde no funciona el GPS.
NOTA: para no complicar más el código, damos por sentado que el dispositivo tiene GPS.
Problema:
Obtener la posición GPS siempre y cuando esté activado el componente en el dispositivo y se
encuentre en exterior. De lo contrario
Resultado mientras no obtengamos posiciones
Abre un nuevo proyecto y ubica los siguientes códigos en sus respectivos archivos.
Empezaremos los permisos. La información de geolocalización necesita de permisos especiales para
hacerla funcionar con la aplicación:
 ACCESS_FINE_LOCATION: autoriza al acceso de ubicación precisa.
 ACCESS_COARSE_LOCATION: autoriza al acceso de ubicación aproximada.
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
100
Permisos añadidos al manifiest
Detalle de la interfaz gráfica:
Código fuente de la Activity:
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
101
INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE
102
Explicación completa de la práctica en formato PDF:
Recuerda…
Cuando el programa termina, usando el Gps, lo último que debemos controlar es el método
OnDestroy para liberar el Gps.
Para que una aplicación pueda hacer uso de un sensor, necesita:
- Incorporar permisos de acceso
- Habilitar un archivo Manifest
El método para actualizar la posición del Gps cuando cambie es OnLocationChanged()
Qué dos cosas necesitamos para usar un Gps en Android un controlador y un listener.

More Related Content

What's hot

UDA-Instalación PC local_wls11_proveedores
UDA-Instalación PC local_wls11_proveedoresUDA-Instalación PC local_wls11_proveedores
UDA-Instalación PC local_wls11_proveedoresAnder Martinez
 
Proyecto de informatica ii visual basic 2008
Proyecto de informatica ii visual basic 2008Proyecto de informatica ii visual basic 2008
Proyecto de informatica ii visual basic 2008Julio Ayala Rolón
 
Anexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redAnexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redEdgar Mtz
 
UDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesUDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesAnder Martinez
 
Material teorico
Material teoricoMaterial teorico
Material teoricoJonny Jara
 
visual basic .net
visual basic .netvisual basic .net
visual basic .netronald_a_go
 
Microsoft visual studio
Microsoft visual studioMicrosoft visual studio
Microsoft visual studiomarco368
 
Informe programacion
Informe programacionInforme programacion
Informe programacionMaryorieAvila
 

What's hot (14)

ATIX20
ATIX20ATIX20
ATIX20
 
NetBeanside
NetBeansideNetBeanside
NetBeanside
 
UDA-Instalación PC local_wls11_proveedores
UDA-Instalación PC local_wls11_proveedoresUDA-Instalación PC local_wls11_proveedores
UDA-Instalación PC local_wls11_proveedores
 
Proyecto
ProyectoProyecto
Proyecto
 
Paola 1001 jt
Paola 1001 jtPaola 1001 jt
Paola 1001 jt
 
Paola
PaolaPaola
Paola
 
Proyecto de informatica ii visual basic 2008
Proyecto de informatica ii visual basic 2008Proyecto de informatica ii visual basic 2008
Proyecto de informatica ii visual basic 2008
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Anexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redAnexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en red
 
UDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesUDA-Guia desarrollo web services
UDA-Guia desarrollo web services
 
Material teorico
Material teoricoMaterial teorico
Material teorico
 
visual basic .net
visual basic .netvisual basic .net
visual basic .net
 
Microsoft visual studio
Microsoft visual studioMicrosoft visual studio
Microsoft visual studio
 
Informe programacion
Informe programacionInforme programacion
Informe programacion
 

Similar to Introducción a la programación androide

Android y samsung
Android y samsungAndroid y samsung
Android y samsungzeuss15
 
Presentacion Android
Presentacion AndroidPresentacion Android
Presentacion Androidvictorape5
 
12j sistemaandroid texto
12j sistemaandroid texto12j sistemaandroid texto
12j sistemaandroid textoHenry Ortiz
 
Introducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para AndroidIntroducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para AndroidArmando Picón Z.
 
Android de la A a la Z - Unidad 1
Android de la A a la Z - Unidad 1Android de la A a la Z - Unidad 1
Android de la A a la Z - Unidad 1Jorge Ulises
 
R esume libro el gran libro de android
R esume libro el gran libro de androidR esume libro el gran libro de android
R esume libro el gran libro de androidwiliam lliulli herrera
 
Android QuickStart
Android QuickStartAndroid QuickStart
Android QuickStartjose diaz
 
"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1Android UNAM
 
Terminado,sistmas operativos
Terminado,sistmas operativosTerminado,sistmas operativos
Terminado,sistmas operativosJoseteMarta11
 
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
Tópicos Avanzados de Programación - Unidad 5 Programacion movilTópicos Avanzados de Programación - Unidad 5 Programacion movil
Tópicos Avanzados de Programación - Unidad 5 Programacion movilJosé Antonio Sandoval Acosta
 
Diapositiva sobre android
Diapositiva sobre androidDiapositiva sobre android
Diapositiva sobre androidpexoxaprincess
 
Jose david arango correa tecnologia android
Jose david arango correa tecnologia androidJose david arango correa tecnologia android
Jose david arango correa tecnologia androidjosearango678
 

Similar to Introducción a la programación androide (20)

android evolution
android evolutionandroid evolution
android evolution
 
Documento de android
Documento de androidDocumento de android
Documento de android
 
Android y samsung
Android y samsungAndroid y samsung
Android y samsung
 
Presentacion Android
Presentacion AndroidPresentacion Android
Presentacion Android
 
12j sistemaandroid texto
12j sistemaandroid texto12j sistemaandroid texto
12j sistemaandroid texto
 
Introducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para AndroidIntroducción al desarrollo de aplicaciones para Android
Introducción al desarrollo de aplicaciones para Android
 
Android de la A a la Z - Unidad 1
Android de la A a la Z - Unidad 1Android de la A a la Z - Unidad 1
Android de la A a la Z - Unidad 1
 
R esume libro el gran libro de android
R esume libro el gran libro de androidR esume libro el gran libro de android
R esume libro el gran libro de android
 
Android QuickStart
Android QuickStartAndroid QuickStart
Android QuickStart
 
"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1
 
Terminado,sistmas operativos
Terminado,sistmas operativosTerminado,sistmas operativos
Terminado,sistmas operativos
 
Android
AndroidAndroid
Android
 
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
Tópicos Avanzados de Programación - Unidad 5 Programacion movilTópicos Avanzados de Programación - Unidad 5 Programacion movil
Tópicos Avanzados de Programación - Unidad 5 Programacion movil
 
Diapositiva sobre android
Diapositiva sobre androidDiapositiva sobre android
Diapositiva sobre android
 
Material rap1
Material rap1Material rap1
Material rap1
 
Android
AndroidAndroid
Android
 
Android
AndroidAndroid
Android
 
Jose david arango correa tecnologia android
Jose david arango correa tecnologia androidJose david arango correa tecnologia android
Jose david arango correa tecnologia android
 
Android p
Android pAndroid p
Android p
 
Android
AndroidAndroid
Android
 

More from Jomicast

Técnicas para la reparación de equipos electrónicos
Técnicas para la reparación de equipos electrónicosTécnicas para la reparación de equipos electrónicos
Técnicas para la reparación de equipos electrónicosJomicast
 
Montaje de un termostato electrónico
Montaje de un termostato electrónicoMontaje de un termostato electrónico
Montaje de un termostato electrónicoJomicast
 
Proyecto BOTTLER
Proyecto BOTTLERProyecto BOTTLER
Proyecto BOTTLERJomicast
 
Montaje de un grillo electrónico
Montaje de un grillo electrónicoMontaje de un grillo electrónico
Montaje de un grillo electrónicoJomicast
 
Medida de condensadores y bobinas
Medida de condensadores y bobinasMedida de condensadores y bobinas
Medida de condensadores y bobinasJomicast
 
Montaje de un indicador de la tensión de la bateria
Montaje de un indicador de la tensión de la bateriaMontaje de un indicador de la tensión de la bateria
Montaje de un indicador de la tensión de la bateriaJomicast
 
Montaje de una sirena de alarma electronica
Montaje de una sirena de alarma electronicaMontaje de una sirena de alarma electronica
Montaje de una sirena de alarma electronicaJomicast
 
Montaje de un sistema de carga de bateria
Montaje de un sistema de carga de bateriaMontaje de un sistema de carga de bateria
Montaje de un sistema de carga de bateriaJomicast
 
Montaje de un capacimetro digital
Montaje de un capacimetro digitalMontaje de un capacimetro digital
Montaje de un capacimetro digitalJomicast
 
Montaje de un interruptor crepuscular
Montaje de un interruptor crepuscularMontaje de un interruptor crepuscular
Montaje de un interruptor crepuscularJomicast
 
Montaje de un generador de funciones
Montaje de un generador de funcionesMontaje de un generador de funciones
Montaje de un generador de funcionesJomicast
 
Montaje de control de tonos y volumen
Montaje de control de tonos y volumenMontaje de control de tonos y volumen
Montaje de control de tonos y volumenJomicast
 
Montaje de un amplificador para sonorización
Montaje de un amplificador para sonorizaciónMontaje de un amplificador para sonorización
Montaje de un amplificador para sonorizaciónJomicast
 
Montaje de un temporizador de uso general
Montaje de un temporizador de uso generalMontaje de un temporizador de uso general
Montaje de un temporizador de uso generalJomicast
 
Montaje de un interruptor activado por sonido
Montaje de un interruptor activado por sonidoMontaje de un interruptor activado por sonido
Montaje de un interruptor activado por sonidoJomicast
 
Montaje de una fuente de alimentacion de laboratorio
Montaje de una fuente de alimentacion de laboratorioMontaje de una fuente de alimentacion de laboratorio
Montaje de una fuente de alimentacion de laboratorioJomicast
 
Montaje de un imitador de disparo de arma de fuego
Montaje de un imitador de disparo de arma de fuegoMontaje de un imitador de disparo de arma de fuego
Montaje de un imitador de disparo de arma de fuegoJomicast
 
Los circuitos hibridos
Los circuitos hibridosLos circuitos hibridos
Los circuitos hibridosJomicast
 
Montaje de un detector de movimientos
Montaje de un detector de movimientosMontaje de un detector de movimientos
Montaje de un detector de movimientosJomicast
 
El micrófono
El micrófonoEl micrófono
El micrófonoJomicast
 

More from Jomicast (20)

Técnicas para la reparación de equipos electrónicos
Técnicas para la reparación de equipos electrónicosTécnicas para la reparación de equipos electrónicos
Técnicas para la reparación de equipos electrónicos
 
Montaje de un termostato electrónico
Montaje de un termostato electrónicoMontaje de un termostato electrónico
Montaje de un termostato electrónico
 
Proyecto BOTTLER
Proyecto BOTTLERProyecto BOTTLER
Proyecto BOTTLER
 
Montaje de un grillo electrónico
Montaje de un grillo electrónicoMontaje de un grillo electrónico
Montaje de un grillo electrónico
 
Medida de condensadores y bobinas
Medida de condensadores y bobinasMedida de condensadores y bobinas
Medida de condensadores y bobinas
 
Montaje de un indicador de la tensión de la bateria
Montaje de un indicador de la tensión de la bateriaMontaje de un indicador de la tensión de la bateria
Montaje de un indicador de la tensión de la bateria
 
Montaje de una sirena de alarma electronica
Montaje de una sirena de alarma electronicaMontaje de una sirena de alarma electronica
Montaje de una sirena de alarma electronica
 
Montaje de un sistema de carga de bateria
Montaje de un sistema de carga de bateriaMontaje de un sistema de carga de bateria
Montaje de un sistema de carga de bateria
 
Montaje de un capacimetro digital
Montaje de un capacimetro digitalMontaje de un capacimetro digital
Montaje de un capacimetro digital
 
Montaje de un interruptor crepuscular
Montaje de un interruptor crepuscularMontaje de un interruptor crepuscular
Montaje de un interruptor crepuscular
 
Montaje de un generador de funciones
Montaje de un generador de funcionesMontaje de un generador de funciones
Montaje de un generador de funciones
 
Montaje de control de tonos y volumen
Montaje de control de tonos y volumenMontaje de control de tonos y volumen
Montaje de control de tonos y volumen
 
Montaje de un amplificador para sonorización
Montaje de un amplificador para sonorizaciónMontaje de un amplificador para sonorización
Montaje de un amplificador para sonorización
 
Montaje de un temporizador de uso general
Montaje de un temporizador de uso generalMontaje de un temporizador de uso general
Montaje de un temporizador de uso general
 
Montaje de un interruptor activado por sonido
Montaje de un interruptor activado por sonidoMontaje de un interruptor activado por sonido
Montaje de un interruptor activado por sonido
 
Montaje de una fuente de alimentacion de laboratorio
Montaje de una fuente de alimentacion de laboratorioMontaje de una fuente de alimentacion de laboratorio
Montaje de una fuente de alimentacion de laboratorio
 
Montaje de un imitador de disparo de arma de fuego
Montaje de un imitador de disparo de arma de fuegoMontaje de un imitador de disparo de arma de fuego
Montaje de un imitador de disparo de arma de fuego
 
Los circuitos hibridos
Los circuitos hibridosLos circuitos hibridos
Los circuitos hibridos
 
Montaje de un detector de movimientos
Montaje de un detector de movimientosMontaje de un detector de movimientos
Montaje de un detector de movimientos
 
El micrófono
El micrófonoEl micrófono
El micrófono
 

Recently uploaded

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Recently uploaded (20)

tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

Introducción a la programación androide

  • 1. 16 TEMA 15. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE José M. Castillo Castillo
  • 2. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 1 INDICE DE CONTENIDO TEMA 15. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 1. INTRODUCCIÓN 1.1 Android desde dentro 1.2 Entorno de ejecución de android 1.3 Framework de aplicaciones 2. INSTALACIÓN DEL ENTORNO EN PROGRAMACIÓN 2.1 Introducción 2.2 Descarga e instalación de eclipse 2.3 Descarga e instalación de las android development tools (adt) 2.4 Ejecutar una aplicación android de prueba 2.5 Perspectivas (vistas predefinidas del framework) 2.6 Ejecución de los programas 3. ESTRUCTURA DE UN PROYECTO ANDROID 3.1 Carpetas del programa 3.2 Archivo androidmanifest 3.3 Cómo empezamos 4. USO DE ECLIPSE 4.1 Combinaciones de teclas 4.2 Explorador de paquetes en vista jerárquica 5. CONCEPTOS BÁSICOS 5.1 Componentes de una aplicación 5.2 Actividades 5.3 Servicios 5.4 Receptores de mensajes de distribución 5.5 Proveedores de contenidos 5.6 Intents 5.7 Intent-filters 5.8 Androidmanifest 6. CONTROLES Y EVENTOS 6.1 Controles y eventos 6.2 Práctica - captura del clic de un botón 6.3 Práctica control checkbox 6.4 Práctica control imagebutton 6.5 Práctica control listview 6.6 Práctica control spinner 6.7 Práctica controles radiogroup y radiobutton
  • 3. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 2 7. ACTIVITIES E INTENTS 7.1 Práctica lanzar un segundo activity 7.2 Práctica lanzar un segundo activity y pasar parámetros 8. LAYOUTS 8.1 Layouts 8.2 Layouts en xml 8.3 Práctica linearlayout 8.4 Práctica scrollview y linearlayout 8.5 Icono de la aplicación 8.6 Archivo de personalización strings 9. MENÚ DE OPCIONES 9.1 Menú de opciones 9.2 Práctica menú de opciones 9.3 Práctica menú de opciones con submenú 9.4 Práctica menú de opciones con iconos 10. CUADRO DE DIÁLOGOS Y NOTIFICACIONES 10.1 Cuadro de diálogos y notificaciones 10.2 Práctica cuadro de diálogo simple 10.3 Práctica cuadro de diálogo con botones de confirmar y cancelar 10.4 Práctica notificaciones 11. ALMACENAMIENTO 11.1 Almacenamiento 11.2 Práctica almacenamiento de datos mediante la clase sharedpreferences 11.3 Práctica almacenamiento de datos en la memoria interna 11.4 Práctica almacenamiento de datos en una tarjeta sd 11.5 Base de datos sqlite 11.6 Práctica almacenamiento en una base de datos sqlite 12. MULTIMEDIA 12.1 Reproducción de audio 12.2 Reproducción de video 12.3 Grabar sonido 12.4 Práctica reproducción de audio 12.5 Práctica reproducción de audio desde archivo internet 12.6 Práctica grabación de audio 13. GADGETS 13.1 Práctica tomar instantánea con cámara 13.2 Práctica envío de mensajes sms 13.3 Práctica posicionamiento con gps
  • 4. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 3 1. INTRODUCCIÓN 1.1. Android desde dentro Android es un sistema operativo creado y mantenido por Google, basado en software GNU (open source). Podría decirse que es una derivación de Linux y uso programación nativa está basada en Java. También es posible programarlo desde híbridos tales como Ionic o PhoneGap; incluso con C/C++ como Unity. Icono de android Android, en contraste a otros sistemas operativos como iOS o Windows Phone que son aún más cerrados incluido al hardware específico del dispositivo, se trabaja abiertamente (mediante Open Source). De ello se deriva que sea tan popular en los fabricantes de hardware móvil, porque lo pueden integrar sin costo. Arquitectura Cómo funciona internamente Android. Está basado en una serie de componentes:  Bibliotecas: conjunto de bibliotecas de C/C++ empleadas por diversos componentes del sistema. Los desarrolladores desde el marco de trabajo de aplicaciones de Android, visualizan estas particularidades; como por ejemplo: System C library, Unity, 3D y SQLite.  Aplicaciones de integración: son el correo electrónico, programa de SMS, calendario, mapas, navegador, contactos y otros.  Marco de trabajo (framework) de aplicaciones: los desarrolladores pueden acceder a la totalidad de los APIs del framework empleados por las aplicaciones base. La arquitectura está trazada para facilitar la reutilización de todos estos componentes.  Kernel (Núcleo Linux): Android es un sistema dependiente de Linux para aquellos servicios base del sistema como son: seguridad, gestión de memoria, gestión de procesos, pila de red y modelo de controladores.  Librerías de ejecución (Runtime) Android: este sistema operativo contiene todo un muestrario de bibliotecas base que suministran la mayoría de las funcionalidades disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android conlleva un proceso propio, con instancia propia de la máquina virtual Dalvik. Desde la versión 5.0 utiliza el ART, que agrupa todo al instante de instalación de la aplicación.
  • 5. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 4 NOTA: A lo largo de este curso, se trabaja sobre una versión de Eclipse en concreto. Debido a la continua actualización de Eclipse, es importante saber que, tanto las ventanas, las perspectivas, el manejo y los plugins se mantiene siempre igual. En relación al curso, la versión que se usa es Juno. Si algún usuario usa por primera vez Eclipse, puede descargarse la misma versión, que se explica, en la web oficial. Los usuarios con más experiencia pueden usar la última versión disponible. En ambos casos, se sigue igual el estudio del curso y la realización de los ejercicios. Recomendamos usar Eclipse versión Juno; aunque existe otra nueva versión, se puede seguir descargando de la web oficial en este Enlace Concepto definible de android en Wikipedia Android es un sistema operativo basado en el núcleo Linux. Fue diseñado principalmente para dispositivos móviles con pantalla táctil, como teléfonos inteligentes, tablets o tabléfonos; y también para relojes inteligentes, televisores y automóviles. Inicialmente fue desarrollado por Android Inc., empresa que Google respaldó económicamente y más tarde, en 2005, la compró. Android fue presentado en 2007 junto la fundación del Open Handset Alliance (un consorcio de compañías de hardware, software y telecomunicaciones) para avanzar en los estándares abiertos de los dispositivos móviles. El primer móvil con el sistema operativo Android fue el HTC Dream y se vendió en octubre de 2008. Los dispositivos de Android venden más que las ventas combinadas de Windows Phone e IOS. Android ejecutándose en un Samsung Galaxy El éxito del sistema operativo se ha convertido en objeto de litigios sobre patentes en el marco de las llamadas «Guerras por patentes de teléfonos inteligentes» (en inglés, Smartphone patent wars) entre las empresas de tecnología. Según documentos secretos filtrados en 2013 y 2014, el sistema operativo es uno de los objetivos de las agencias de inteligencia internacionales. La versión básica de Android es conocida como Android Open Source Project (AOSP). El 25 de junio de 2014 en la Conferencia de Desarrolladores Google I/O, Google mostró una evolución de la marca Android, con el fin de unificar tanto el hardware como el software y ampliar mercados. Ejercicio: Importar ejercicios. 1.2. Entorno de ejecución de android Para cada una de las aplicaciones ejecutas de Android, llevan un proceso propio, con su correspondiente instancia de la máquina virtual Dalvik. Está optimizada para requerir poco espacio y poca memoria. Este funcionamiento es vital para dispositivos móviles. Desde la versión Lollipop de Android se maneja el ART (reemplazando a Dalvik), que compila íntegramente al instante de instalación de la aplicación. Ejercicio: Importar ejercicio.
  • 6. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 5 1.3. Framework de aplicaciones Provee de una plataforma o framework de desarrollo que puede ejercer según la necesidad tanto con: barra de notificaciones, sensores, gps/gsm, servicios, etc. Esta capa ha sido trazada para dar lugar a la reutilización de componentes. Es una característica única e interesante de Android con respecto a IOS, Windows Phone, Palm o Blackberry. Las aplicaciones pueden transmitir sus posibilidades o capacidades y otras pueden utilizarlas condicionadas a las restricciones de seguridad. Los servicios más destacados son:  Views Manager: es el entorno visual de los diferentes componentes.  Resource Manager: da acceso a los diversos recursos que no son código.  Notification Manager: deja ver las alertas personalizadas mostrándolas en la barra de estado.  Activity Manager: opera con el ciclo de vida de las diferentes aplicaciones y suministra un sistema de navegación para ellas.  Content Providers: es un mecanismo de acceso a datos entre diversas aplicaciones.
  • 7. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 6 2. INSTALACIÓN DEL ENTORNO EN PROGRAMACIÓN 2.1. Introducción El SDK (Software Development Kit) de Android, es un kit de desarrollo que incluye: Un debugger o depurador de código Bibliotecas de versiones y subversiones Android Documentación con códigos de ejemplo y guías. Un simulador de teléfono. El SDK de Android puede añadirse a cualquier Sistema Integral de desarrollo (IDE, Integrated Development Environment). Sean Visual Studio, Mono, Android Studio y en nuestro caso Eclipse. Importar ejercicio: 2.2. Descarga e instalación de eclipse2 Cualidades de los productos 1. Visita la web de descargas de Eclipse desde este Enlace y descárgate la última versión. NOTA: Recomendamos la versión Eclipse Indigo o superior para que sea compatible con ADT (Android Development Tools).
  • 8. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 7 Descargas de Eclipse 1. Una vez realizada la descarga, descomprima el archivo. Por defecto, se ha de crear una carpeta denominada c:eclipse 2. Ejecute el fichero eclipse.exe. La primera vez que lo haga, le solicitará un directorio para ubicar el workspace. Seleccionamos la ruta deseada, siendo ésta donde se almacenarán los proyectos. Pulse sobre “Use this as the default…” y haga clic OK. NOTA: actualmente existen dos entornos de desarrollo diferenciados Android; la integración de Android con Eclipse (u otro IDE similar) y el reciente entorno, propuesto por Google, Android Studio. Éste último pensado para desarrollos de aplicaciones desde Android 4.3 en adelante. Importar ejercicio: 2.3. Descarga e instalación de las android development tools (adt) Para añadir el plugin ADT a Eclipse: 1. Lanzar Eclipse / Help / Install New Software NOTA: Recomendamos la versión Eclipse Indigo o superior para que sea compatible con ADT (Android Development Tools). Añadir plugin ADT a Eclipse (paso 1)
  • 9. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 8 2. Clic sobre Add. 3. Y añadir “ADT Plugin” para Name y en Location, la URL https://dl- ssl.google.com/android/eclipse/ Añadir plugin ADT a Eclipse (paso 2) 4. Pulsar OK, seleccionar el soft disponible y pulsar Next Añadir plugin ADT a Eclipse (paso 3) 5. Leer y aceptar las licencias y pulsar Finish.
  • 10. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 9 Si ya tenemos una versión de Eclipse sin SDK, se lo podemos añadir descargando sólo el paquete con el SDK desde este Enlace Apartado para descargar paquete SDK Instalamos el fichero ejecutable y comprobamos que está correctamente instalado en Eclipse. Android SDK Manager servirá para descargar repositorios, actualizaciones y documentación. Comprobación de instalación del paquete SDK 2.4. Ejecutar una aplicación android de prueba Ya estamos en condiciones de poder crear un proyecto Android para ver que todo funciona correctamente. Lo primero, crear un dispositivo virtual Android o AVD (Android Virtual Device) en el cual podamos testear las aplicaciones: 1. Abrimos el menú Windows y seleccionamos Android AVD Manager. 2. Escribimos la denominación deseada para el dispositivo virtual, y pulsamos sobre la versión de Android que utilizará. Cliqueamos en la opción Create AVD y después en Finish.
  • 11. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 10 Ejecutar aplicación Android de prueba (paso 1) Ejecutar aplicación Android de prueba (paso 2)
  • 12. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 11 Ejecutar aplicación Android de prueba (paso 3) 3. Ya tenemos el entorno instalado. 2.5. Perspectivas (vistas predefinidas del framework) PERSPECTIVA JAVA Perspectiva de Eclipse para Java En éste caso, el IDE de Eclipse provee de la estructura necesaria para la escritura de ficheros .java y .xml que usaremos para el desarrollo. Así cómo la estructura de carpetas necesaria para los recursos, manifiest, etc y la estructura de la aplicación (clases y subclases).
  • 13. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 12 PERSPECTIVA DDMS La perspectiva Dalvik Debugger (DDMS) es la encargada de “depurar” y controlar las variables y funciones de la máquina virtual Dalvik con respecto a un dispositivo real o virtual. Es una perspectiva útil cuando ejecutamos una aplicación en tiempo real donde podemos ver el flujo de datos, los servicios ejecutados, los posibles fallos o warnings de DalvikVM, el valor que contiene cada variable, puntos de ruptura específicos, etc. En la pestaña “Window” / “Open Perspective” / “Other”/ “DDMS”. Perspectiva de Eclipse para DDMS Importar ejercicio: 2.6. Ejecución de los programas Los programas lo podemos ejecutar de tres formas: 1. Vía emulador de Android nativo del SDK, haciendo clic sobre el proyecto con el botón derecho, y en “Run as” seleccionar “Android Application” viendo una pantalla tal como ésta:
  • 14. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 13 Emulador de Android nativo 2. Vía emulador de Android de terceros: de entre los cuales destacaré Genymotion. Siendo éste más veloz que el nativo del SDK. Siendo un ejemplo: Emulador de Android terceros
  • 15. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 14 3. Vía ejecución en dispositivo real: conectando por cable el dispositivo al ordenador y seleccionando. Para ello necesitas:  Instalar el driver de tu móvil en el ordenador.  Establecer tu dispositivo para ejecutar aplicaciones reales. En Eclipse, el SDK de Android identificará el móvil como otro dispositivo. Significa que podemos realizar tareas de depuración con el dispositivo, ya sea por cable usb o por wifi, de aplicaciones. En la pestaña DDMS está una subpestaña que muestra todos los dispositivos conectados. Cuando ejecutes la aplicación, podrás seleccionar el dispositivo móvil del listado y el propio Eclipse instalará la .apk y ejecutará la aplicación. DATOS DE INTERES Si desarrollas aplicaciones Android y tienes instalado el simulador que viene incluido en el SDK es muy posible que ya estés acostumbrado a esperar periodos interminables a que arranque o que sencillamente el emulador tarde tanto tiempo en reaccionar que las aplicaciones ni siquiera se instalen. Si usas el emulador de Android y eres tan impaciente como este servidor, de seguro debes odiarlo tanto como yo. EL SIMULADOR NATIVO DE ANDROID El SDK de Android es espectacular, incluye librerías y herramientas de depuración que son indispensables para crear una aplicación, pero el emulador siempre ha sido una piedra en el zapato para los desarrolladores. El rendimiento general del sistema se reduce al utilizar el simulador, al ejecutar una aplicación se obtiene un rendimiento inferior al que tendría normalmente y de paso arruina la experiencia en cualquier otra aplicación que se ejecute en mi sistema. GENYMOTION: UN EMULADOR ANDROID MÁS RÁPIDO ES POSIBLE Con Genymotion, el tiempo de respuesta es abismalmente inferior, por ejemplo, ejecutando la misma aplicación que me tomó casi 10 minutos en el simulador normal, me toma 1 minuto o menos realizar el mismo proceso en Genymotion.
  • 16. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 15 El tiempo de arranque es mínimo y el rendimiento general de la aplicación es fluido y natural. El simulador de Genymotion se siente y se comporta como un dispositivo real. Genymotion es un programa de paga, pero no te asustes, hay una versión gratuita para desarrolladores que te permite un amplio rango de acción, en más de un año de usar la versión gratuita nunca he necesitado ninguna función adicional para probar mis aplicaciones. Genymotion es el simulador perfecto que le faltaba a Android, es gratuito y para instalar Genymotion debes primero ir al sitio oficial y crearte un nombre de usuario gratuito: https://cloud.genymotion.com/page/customer/login/?next=/ Recuerda… Una perspectiva es: - Parte configurable de la interfaz de Eclipse - Un conjunto de vistas Un AVD es: - Android Virtual Device - Un dispositivo virtual El paquete ADT significa: Android Development Tools
  • 17. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 16 3. ESTRUCTURA DE UN PROYECTO ANDROID 3.1. Carpetas del programa Un proyecto Android, ya sea generado por Android Studio o Eclipse, tiene una estructura modular que facilita la programación, así como la reutilización del código; y sobretodo, sigue el patrón MVC (Modelo Vista Controlador - muy usado en la web) que diferencia la lógica (qué hace el programa) de la vista (interfaz gráfica o lo que el usuario ve). Cada carpeta sirve para un propósito, siendo:  src: aquí dentro contendrá el código fuente que escribiremos la lógica .java  Carpeta res: contendrá los ficheros de recursos necesarios para la aplicación (imágenes, sonidos, strings, xmls, etc). Su desglose es: o Res->layout: archivos de interfaces gráfica o pantallas (formato .xml). o Res->drawable: con elementos gráficos usados en por la aplicación y estructurados según resolución. o Res->values: ficheros de recursos, tales como: strings.xml y styles.xml. o Res->raw: contiene recursos adicionales en otro formato que no es XML.  gen: contiene los ficheros ejecutables .apk (ficheros transformados para ser entendibles por el dispositivo Android) y compilados de la aplicación. Nunca deben modificarse directamente, es Eclipse quién los genera de forma automática al compilar.  assets: contiene todos los ficheros adicionales de la aplicación que serán empaquetados en el .apk  bin: conjunto de archivos procedentes de gen y assets; destaca por almacenar el .apk (fichero ejecutable instalador de la aplicación en el dispositivo). 3.2. Archivo androidmanifest.xml Contiene la definición en ficheros .xml de aspectos importantes de la aplicación, de hecho, la omisión de algún parámetro según qué tipo de aplicación tendría consecuencias de errores graves que impidiesen la ejecución de la aplicación. Tales aspectos pueden ser: nombre, autor, versión-subversión de la aplicación, iconos asociados a la compilación del paquete .apk, interllamadas a ventanas/pantallas de la interfaz gráfica y permisos necesarios para su correcta ejecución. 3.3. Cómo empezamos Ya tenemos todo lo necesario instalado (SDK e IDE). También conocemos la estructura de Eclipse y cómo funciona Android internamente. Ahora vamos a comenzar con un proyecto de prueba con los pasos siguientes:
  • 18. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 17 1. Desde el menú de opciones: File -> New -> Android Application Project Proyecto de prueba (paso 1) Aquí definiremos el nombre de la aplicación, proyecto y la denominación del paquete (con extensión .java) donde se ubicarán tales archivos. 2. Iremos pasando por todas las pantallas, haciendo clic en Next hasta llegar a "Finish". El ADT generará los directorios y archivos básicos necesarios para poder iniciar el proyecto: Proyecto de prueba (paso 2)
  • 19. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 18 Recuerda… En el archivo Manifiest se establece: - Permisos de la aplicación - Conjunto de actividades La cadena de caracteres (strings.xml) está en res/values/ La interfaz gráfica está en la carpeta res/layout/
  • 20. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 19 4. USO DE ECLIPSE 4.1. Combinaciones de teclas Mediante el uso de combinaciones de teclas (denominados en argot Shortcuts), accedemos a funciones útiles dentro de Eclipse. Autocompletado de métodos mejorado Mediante la secuencia de teclas Ctrl+Espacio nos ahorraremos escribir el fin de la instrucción del código a través de texto predictivo. Autocompletado de métodos Formateo de código Eclipse dispone de un autoformato de código semi-automático, para ello poder realizar la secuencia de Ctrl+Shift+F. Podemos escribir un código sin tabular o con las mismas mal dispuestas, espacios sobrantes, etc., y Eclipse nos deja un código limpio, claro y ordenado. Formateo de código
  • 21. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 20 Inserción automática de Imports (librerías) Mediante Ctrl+Shift+O, se reorganizan aquellos importes que deben ser añadidos y su declaración de los mismos no aparecen en el código. Comentarios Mediante Ctrl + / comentamos todas las líneas de la selección actual. Con Ctrl + ; des comentamos dichas líneas. 4.2. Explorador de paquetes en vista jerárquica El explorador de paquetes dispone de dos formas de visualización, la estructura de archivos y las carpetas de un proyecto: normal y jerárquica. Por defecto, se nos presenta la normal. Para una mejor organización, la forma de organización la jerárquica es más útil. Vistas del explorador de paquetes Recuerda… Un buen ejemplo de codificación es mediante la tabulación, para ello, Eclipse dispone de teclas de combinación rápida que nos facilita esta tarea: Shift+Ctrl+F. Al escribir código necesitamos acceso a la librería llamadas “imports” y los hacemos a través de las teclas combinadas Ctrl+Shift+O.
  • 22. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 21 5. CONCEPTOS BÁSICOS 5.1. Componentes de una aplicación Antes de empezar a programar con Android, sería conveniente un resumen de elementos y funciones del sistema. Lo fundamental es saber cómo funciona; es decir, internamente es muy similar a Linux (deriva del núcleo). Cada aplicación tiene su propio "entorno de proceso" y éste es único (un ID irrepetible), de esta forma sólo esta aplicación tiene acceso a sus archivos. También es conveniente saber que una aplicación puede estar en primer plano (la que se ejecuta de forma visible en ese momento y estamos viendo) y otras, en segundo plano. Todas ellas con su propia lista de procesos (denominado pila). Esto implica que las activadas se van "apilando", unas encima de otras, según van siendo lanzadas o rellamadas (invocadas, fueron lanzadas y quedaron en segundo plano y ahora regresan a primer plano). El sistema destruirá la actividad que lleve más tiempo pausada/detenida/parada o en el caso de que el sistema necesitase mucha memoria. De las características más interesante del diseño Android, es la posibilidad de reutilización de componentes. Esto significa que aplicaciones diferentes pueden utilizar un mismo componente común; con ello se evita la reiteración de código y ocupar espacio innecesario y un gasto de memoria inútil. En Java o .NET estamos acostumbrados a manejar conceptos como ventana, control, eventos o servicios como los elementos básicos en la construcción de una aplicación. Pues bien, en Android vamos a disponer de esos mismos elementos básicos aunque con un pequeño cambio en la terminología y el enfoque. Repasemos los componentes principales que pueden formar parte de una aplicación Android [Por claridad, y para evitar confusiones al consultar documentación en inglés, se traducirán éstos. 5.2. View Las vistas (view) son los componentes básicos con los que se construye la interfaz gráfica de la aplicación, análoga por ejemplo a los controles de Java o .NET. De inicio, Android pone a nuestra disposición una gran cantidad de controles básicos, como cuadros de texto, botones, listas desplegables o imágenes, aunque también existe la posibilidad de extender la funcionalidad de estos controles básicos o crear nuestros propios controles personalizados.
  • 23. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 22 5.3. Actividades Las actividades (activities) representan el componente principal de la interfaz gráfica de una aplicación Android. Se puede pensar en una actividad como el elemento análogo a una ventana o pantalla en cualquier otro lenguaje visual. Cada pantalla se le denomina activity (actividad). Las aplicaciones pueden constar (no siempre pero es común) de pantallas que conformen la interfaz gráfica. Esquema gráfico de activitys
  • 24. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 23 5.4. Servicios Es aquél proceso llevado a cabo automáticamente en memoria, sin necesidad de intervención por parte del usuario. Pueden ser de dos tipos: locales (ejecutado en el mismo proceso o hilo de ejecución) y remotos (ejecutados en procesos separados o hilos diferentes). Los servicios (service) son componentes sin interfaz gráfica que se ejecutan en segundo plano. En concepto, son similares a los servicios presentes en cualquier otro sistema operativo. Los servicios pueden realizar cualquier tipo de acciones, por ejemplo actualizar datos, lanzar notificaciones, o incluso mostrar elementos visuales (p.ej. actividades) si se necesita en algún momento la interacción con del usuario. Esquema gráfico de servicios
  • 25. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 24 5.5. Receptores de mensajes de distribución También llamados receptores de radiodifusión (broadcast receivers). Un broadcast receiver es un componente destinado a detectar y reaccionar ante determinados mensajes o eventos globales generados por el sistema (por ejemplo: “Batería baja”, “SMS recibido”, “Tarjeta SD insertada”,…) o por otras aplicaciones (cualquier aplicación puede generar mensajes (intents, en terminología Android) broadcast, es decir, no dirigidos a una aplicación concreta sino a cualquiera que quiera escucharlo). Responde y está alerta (Watchdog) a las notificaciones del sistema o de otras aplicaciones. EJEMPLO: Cuando está alerta e informa a las aplicaciones cuando la batería está casi agotada o la pantalla se ha apagado. 5.6. Proveedores de contenidos Los proveedores de contenidos (content provider) son usados como bibliotecas de datos para posibilitar la compartición de datos entre aplicaciones distintas. Un proveedor de contenidos (content provider) es el mecanismo que se ha definido en Android para compartir datos entre aplicaciones. Mediante estos componentes es posible compartir determinados datos de nuestra aplicación sin mostrar detalles sobre su almacenamiento interno, su estructura, o su implementación. De la misma forma, nuestra aplicación podrá acceder a los datos de otra a través de los content provider que se hayan definido. EJEMPLO: Los contactos del teléfono. Cualquier aplicación con los permisos necesarios, puede comunicarse con estos datos mediante el content provider. 5.7. Widget Los widgets son elementos visuales, normalmente interactivos, que pueden mostrarse en la pantalla principal (home screen) del dispositivo Android y recibir actualizaciones periódicas. Permiten mostrar información de la aplicación al usuario directamente sobre la pantalla principal. 5.8. Intents Representan una acción que deseamos efectuar, tales como: Iniciar un servicio Lanzar una actividad. Intercambiar información entre componentes. Ej: Una actividad llama a otra.
  • 26. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 25 Un intent es el elemento básico de comunicación entre los distintos componentes Android que hemos descrito anteriormente. Se pueden entender como los mensajes o peticiones que son enviados entre los distintos componentes de una aplicación o entre distintas aplicaciones. Mediante un intent se puede mostrar una actividad desde cualquier otra, iniciar un servicio, enviar un mensaje broadcast, iniciar otra aplicación, etc. 5.9. Intent-filters Al desarrollar una nueva actividad, servicio o receptor de radiodifusión, se puede informar al sistema de las intenciones incluidas que se pueden resolver con nuestro componente. Es decir, especificar qué aplicación puede lanzar una actividad o recibir un receptor específico. 5.10. Androidmanifest AndroidManifest.xml es un archivo de configuración desde la cual podemos especificar características, funcionamiento básico y restricciones de seguridad de la aplicación. Su configuración puede realizarse a través de una interfaz gráfica aunque también pueda ser interesante conocer la estructura de código para poder realizar modificaciones más específicas. Recuerda… Las notificaciones están encargadas de reaccionar ante eventos Las Activitys son elementos de comunicación entre aplicación y usuario. Los Servicios no tienen interfaz visual.
  • 27. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 26 6. CONTROLES Y EVENTOS 6.1. Controles y eventos Una vez obtenido, de temas anteriores, las herramientas y presentación global del sistema Android a nivel teórico, procedemos a la parte práctica del curso. En éste tema describiremos de una forma práctica la implementación en Android de diversos controles y sus respectivas respuestas de activación. Datos importantes antes de comenzar las prácticas ATENCIÓN: La mayoría de los proyectos presentados en el curso no disponen del código para el comportamiento del menú de opciones, evitando un aumento del número de líneas de código que aumenten la complejidad de los proyectos sin un uso justificado; salvo que temas que se ocupen de los mismos o requieran del uso, en los cuales sí hacen uso de tal funcionalidad. Como observación, algunas versiones de Eclipse, crean por defecto tales líneas. Por lo que recomendamos que eliminen o comenten tales líneas: En los proyectos importables del curso tienen en cuenta todo lo anteriormente explicado. NOTA 1: La denominación de cualquier proyecto puede ser el que se quiera. No es necesario que sea exacto al que aparecen en las imágenes. Los recursos (en caso de ser necesarios): imágenes, textos, sonidos, etc. están incluidos en sus respectivas prácticas importables. NOTA: Esta es la primera inclusión en un proyecto Android, por lo que rogamos una lectura detenida para asimilar conceptos necesarios en futuras lecciones. Así mismo, las pantallas pueden sufrir variaciones según versión del SDK, entorno Eclipse y el dispositivo a ejecutar (AVD virtual o directamente sobre hardware); en caso de duda, por favor, realice una importación del proyecto y obtendrá el mismo listo para probar y con todos los elementos necesarios para su análisis-prueba. Por último, se puede variar el orden los ejercicios incluidos en cada tema, sin que repercuta a la correcta comprensión.
  • 28. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 27 6.2. Práctica - captura del clic de un botón Problema: Sumar dos números mediante cajas de entrada de texto (EditText) usando un botón para iniciar el cálculo. El valor resultado se mostrará en un control. Ejecución del programa Controles de la interfaz
  • 29. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 28 La lógica para efectuar la suma es: Retraemos el texto de los dos controles (EditText), los almacenamos en dos variables String. Transformamos los String a tipo entero (ahora ya son números), y por último, los sumamos. Código fuente completo: Acceso al documento PDF completo:
  • 30. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 29 6.3. Práctica - control checkbox Al ejercicio anterior de Suma, le incluimos dos controles CheckBox. Problema: Desde dos campos de entrada de texto, seleccionamos controles CheckBox para seleccionar que cálculo aplicar: sumar, restar y sumar-restar (a la vez) Detalle de interfaz con controles
  • 31. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 30 El código fuente de la Activity: Acceso a la documentación PDF completa:
  • 32. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 31 6.4. Práctica - control imagebutton Usaremos un control gráfico denominado ImageButton, mucho más vistoso y visual mediante la incorporación de un icono interactivo. Detalle de controles en interfaz El código fuente de la Activity: Acceso a la documentación PDF completa:
  • 33. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 32 6.5. Práctica - control listview Usaremos un control muy especial, ListView. Con este control podremos seleccionar, de varios elementos, uno de ellos. Si el tamaño de la lista excede del espacio delimitado, se habilita un scroll. Problema: Seleccionar un país de una lista y que este muestre el número de habitantes. Aplicación ejecutada Detalle de controles incluidos
  • 34. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 33 El código fuente de la Activity: Acceso a la documentación completa PDF:
  • 35. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 34 6.6. Práctica - control spinner Usaremos este control para servir de contenedor de opciones; es decir, al ser pulsado se abre el contenedor mostrando su contenido y nos permita seleccionar un sólo elemento de una lista. Problema: Cargaremos dos números en controles EditText. Con el control Spinner, seleccionaremos el tipo de operación básica, ya sea esta: una suma, resta, una multiplicación o una división. Propuesta de interfaz
  • 36. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 35 El código fuente de la Activity principal:
  • 37. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 36 Mediante if (anidados) comprobamos qué operación efectuar: Acceso a la documentación completa en PDF:
  • 38. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 37 6.7. Práctica - controles radiogroup y radiobutton Implementaremos una aplicación usando dos RadioButton dentro de un contenedor que los encapsule (denominado RadioGroup) Problema: Previo a la introducción de valores en las cajas de texto, mediante controles RadioButton, seleccionaremos que operación efectuar (suma o resta). Relación de controles
  • 39. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 38 El código fuente de la Activity:
  • 40. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 39 Código fuente de la Activity secundaria: Con el control RadioButton, a través del método isChecked, devuelve TRUE (verdadero) si el elemento está siendo seleccionado: Acceso a la documentación completa en PDF: Recuerda… En cuanto al código que lo activa, podemos usar: - Listeners asociado a un método - Creando un método específico de tipo View Los botones son elementos interactivos que en el XML deben tener, como mínimo: - Propiedad ID - Evento de activación (por ejemplo OnClic) Un botón puede contener o ser un elemento gráfico mediante los ImageButton. Para poder usar un control, en éste caso un TextView, debemos realizar siempre en Java es localizarlo en código, asignarle una variable y después el método a usar.
  • 41. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 40 7. ACTIVITIES E INTENTS 7.1. Práctica - lanzar un segundo activity En éste tema abarcaremos la creación de "pantallas" y de la comunicación de estas mediante paso de parámetros. NOTA: están disponibles los proyectos para su prueba y análisis mediante importación. No obstante, siempre que alumno no quede atascado, se recomienda ir paso a paso, leyendo y escribiendo el código conforme se va explicando en el tema para la correcta asimilación del curso. Ejercicio: Lanzar un segundo "Activity" Implementaremos una comunicación entre dos activities (dos pantallas) de la misma aplicación. Problema 1: Crearemos dos Activity y uno llamará al otro a través de un botón. Para que funcione de forma correcta, debemos registrar el Activity en el fichero "AndroidManifest.xml": Lanzar segundo Activity
  • 42. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 41 Nuestro programa funcionando completamente: Activity principal Activity secundario El código fuente de la Activity principal: Código fuente de la Activity secundaria:
  • 43. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 42 Acceso a la documentación en PDF completa: Problema 2: Una aplicación con dos actividades, la principal solicita una clave correcta. Mostrará un mensaje si ésta resulta ser correcta. En tiempo de ejecución los dos Activity deben mostrarse: NOTA: con fines metodológicos, éste problema se plantea para que el alumno pruebe el proyecto importado y lo analice con detenimiento. Así como incitar a realizar diversas modificaciones en la clave.
  • 44. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 43 7.2. Práctica - lanzar un segundo activity y pasar parámetros No solamente podemos abrir "ventanas", sino que también podemos pasar información entre ellas. Para poder traspasar datos entre actividades, necesitamos Intents. NOTA: un problema muy común es que la aplicación interrumpa su ejecución debido a que no tenga los permisos suficientes desde el manifiest. Por favor, téngalo en cuenta de aquí en adelante. Problema: Aplicación que tenga un campo de entrada con una dirección URL de una web. Una vez pulsado el botón, abrirá una conexión vía navegador hacia dicha web. También incorporamos un nuevo elemento denominado WebView que para emular un navegador web. Ejemplo funcional del programa: Actividad principal Actividad secundaria
  • 45. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 44 No hay que olvidar complementar la actividad Activity en el archivo "AndroidManifest.xml". Para que existan los permisos de llamada entre actividades y permisos de internet. AndroidManifest.xml Fijar en la propiedad name el valor android.permission.INTERNET Detalle de la segunda interfaz, actividad2.xml
  • 46. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 45 El código fuente de la Activity principal: Código fuente de la Activity secundaria: Acceso a la documentación completa en PDF:
  • 47. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 46 Recuerda: Las Activities son pantallas virtuales. Los Intents comprenden: - Sistema de comunicación entre activities - Paso de parámetros de pantallas El método Finish() tiene por objetivo liberar espacio de una actividad en memoria.
  • 48. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 47 8. LAYOUTS 8.1. Layouts La interfaz gráfica está compuesta de varios elementos vista (view). Estos elementos están englobados en un objeto denominado Layout. Un Layout es un contenedor (padre) con uno o varios controles insertos (componentes hijos); y siendo el padre, aquel que controla comportamiento- posición de los hijos. He aquí los ejemplos más importantes: LinearLayout: los elementos están dispuestos en una fila o en una columna. TableLayout: los elementos están dispuestos de forma tabloide o tabular o x/y. RelativeLayout: los elementos están dispuestos en relación a otro o al padre. AbsoluteLayout: sitúa los elementos de forma absoluta, es decir, ubica de forma fija un elemento. FrameLayout: según dimensiones de la pantalla, permite la reorganización dinámica de los elementos que contiene sin distribución espacial. ScrollView: los elementos están dispuestos una columna; cuando estos no caben en la pantalla, se habilita un scroll con deslizamiento vertical. HorizontalScrollView: dispone de una fila de elementos; cuando estos no caben en la pantalla, se habilita un scroll con deslizamiento horizontal. ListView: dispone de una lista deslizable verticalmente de varios elementos. GridView: dispone un grid (cuadrícula) deslizable de filas-columnas. Parámetros de diseño Los atributos de diseño XML denominados layout_something definen parámetros de diseño para el objeto View que son adecuados para el objeto ViewGroup en el que reside. Cada clase ViewGroup implementa una clase anidada que extiende ViewGroup.LayoutParams. Esta subclase contiene tipos de propiedad que definen el tamaño y la posición de cada vista secundaria, según resulte apropiado para el grupo de vistas. Como puedes ver en la figura 1, el grupo de vistas principal define parámetros de diseño para cada vista secundaria (incluido el grupo de vistas secundario).
  • 49. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 48 Figura 1: Visualización de una jerarquía de vistas con parámetros de diseño asociados con cada vista. Ten en cuenta que cada subclase LayoutParams tiene su propia sintaxis para configurar valores. Cada elemento secundario debe definir LayoutParams adecuados para su elemento primario, aunque también puede definir diferentes LayoutParams para sus propios elementos secundarios. Todos los grupos de vistas incluyen un ancho y una altura (layout_width y layout_height), y cada vista debe definirlos. Muchos LayoutParams también incluyen márgenes y bordes opcionales. Puedes especificar el ancho y la altura con medidas exactas, aunque probablemente no quieras hacerlo con mucha frecuencia. Generalmente usarás una de estas constantes para establecer el ancho o la altura:  wrap_content indica a tu vista que modifique su tamaño conforme a los requisitos de este contenido.  match_parent indica a tu vista que se agrande tanto como lo permita su grupo de vistas principal. En general, no se recomienda especificar el ancho y la altura de un diseño con unidades absolutas como píxeles. En cambio, el uso de medidas relativas como unidades de píxeles independientes de la densidad (dp), wrap_content, o match_parent, es un mejor enfoque, ya que ayuda a garantizar que tu aplicación se muestre correctamente en dispositivos con pantallas de diferentes tamaños. Los tipos de medidas aceptados se definen en el documento
  • 50. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 49 8.2. Layouts en XML Los Layouts se pueden editar de forma gráfica; no obstante, realmente es un fichero .xml que internamente puede presentar el siguiente aspecto: Fichero .xml del Layout LinearLayout Los elementos están dispuestos en una fila o en una columna. Ejemplo de LinearLayout TableLayout Los elementos están distribuidos de forma tabla x/y. Ejemplo de LinearLayout
  • 51. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 50 RelativeLayout Los elementos están distribuidos en referencia a otro. Ejemplo de LinearLayout AbsoluteLayout Posiciona los elementos de forma específica absoluta, es decir, posicionar de forma fija un elemento. Ejemplo de LinearLayout FrameLayout Según dimensiones de la pantalla, permite la reorganización dinámica de los elementos que contiene sin distribución espacial. Ejemplo de LinearLayout
  • 52. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 51 8.3. Práctica - linearlayout La organización de los controles de Android en pantalla, se realiza mediante unos “contenedores” denominados Layout. NOTA: este ejercicio sólo se desarrolla paso a paso para que el alumno practique y observe las diferencias al cambiar las propiedades. No existe, por ello, ningún proyecto para importar. LinearLayout LinearLayout es el más simple y directo. Establece los componentes de derecha a izquierda o de arriba abajo. Uso de LinearLayout (paso 1)
  • 53. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 52 Podemos cambiar dicho comportamiento desde la propiedad Orientation: Uso de LinearLayout (paso 2) Explicación completa de la práctica en PDF: 8.4. Práctica - scrollview y linearlayout Las dimensiones de la pantalla de un dispositivo son múltiples, por ello necesitamos controles que puedan ir “más allá” de la pantalla, al menos de forma virtual mediante scrolling. Para ello, disponemos del control ScrollView y del control LinearLayout. NOTA: puesto que sólo incidimos sobre el layout XML, éste ejercicio no necesita la descripción de ficheros scr/*.java.
  • 54. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 53 Pondremos varios botones que superen la cantidad de espacio del dispositivo. Los numeramos del 1 en adelante: Ejemplo de LinearLayout Ejemplo de LinearLayout Explicación completa de la práctica en PDF:
  • 55. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 54 8.5. Icono de la aplicación Por defecto, al crear un proyecto, se asigna un icono estándar tal como este: Icono estándar Los elementos visuales externos, íconos e imágenes, están almacenados en res (resources), siendo cada carpeta denominada: Res/drawable-ldpi Res/drawable-mdpi Res/drawable-hdpi Res/drawable-xhdpi Y en cada una de estas hay un fichero denominado ic_launcher.png:
  • 56. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 55 Como las resoluciones de los dispositivos Android pueden ser muy distintos dependiendo del dispositivo, es recomendable copias de cada imagen de recursos a diferentes resoluciones, atendiendo a: Resoluciones por pixeles Problema: Desarrollaremos una aplicación con tres iconos (icon.png), con las resoluciones de 48, 36 y 72 píxeles respectivamente. Detalle de icono de app 8.6. Archivo de personalización strings El archivo strings.xml almacena constantes de strings (cadenas de caracteres) a modo de variables globales. Gracias a strings.xml tenemos todos los mensajes que muestra nuestra aplicación en un sitio, muy útil para diferentes idiomas sin cambiar los textos de la aplicación de manera local para cada idioma. Problema: Desarrollar un proyecto con la entrada de dos valores, permitir seleccionar qué operación efectuar y cuando se pulse un botón, mostrar el resultado.
  • 57. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 56 El SDK de Android genera automáticamente res/values/strings.xml: strings.xml Tiene predefinida tres cadenas llamadas app_name, hello_world y menu_settings: Cadenas por defecto Desde Resource podemos ingresar las distintas constantes de forma visual: Android Resources
  • 58. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 57 En nuestro proyecto, colocamos los controles que se ven en la imagen: Detalle de controles Enlazaremos los mensajes de los controles, de forma unificada, desde el archivo strings.xml, con "Resources", hacemos clic en "Add..." y seleccionamos "String": Enlace strings.xml-controles
  • 59. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 58 Establecemos las constantes de esta forma: Asociamos las constantes a los controles mediante el archivo activity_main.xml y seleccionamos un RadioButton y localizamos la propiedad Text, pulsando en el icono con tres puntos (…): Pulsamos sobre icono (...)
  • 60. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 59 Seleccionamos la constante deseada:
  • 61. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 60 El código fuente de la Activity: Recuerda… El atributo principal de LinearLayout es Orientación. El RelativeLayout funciona basándose en una estructura de hijos a padres (contenedores). Los Layouts son elementos que distribuyen los elementos de interfaz gráfica.
  • 62. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 61 9. MENÚ DE OPCIONES 9.1. Menú de opciones Por defecto, podrá visualizar en el margen inferior de la pantalla en formato de rejilla (grid) con o sin iconos. Ejemplo de Menú de opciones Son usados para menú de opciones (configuración de parámetros) u opciones extras de las aplicaciones. 9.2. Práctica - menú de opciones La implementación de un menú de opciones muestra opciones de una forma estándar entre aplicaciones. Al pulsar el botón Menú, los menús aparecen. Problema: Realizar una aplicación que muestre un menú con las opciones: a) que visualice el "Acerca de..." y b) para terminar el programa. Ejecutamos y obtenemos el menú
  • 63. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 62 Con el editor de menú de Eclipse, incluimos "ítem" del menú: Android Menú Android Menú
  • 64. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 63 Para añadir otra opción del menú, pulsamos sobre "Add" tal cómo vemos en la imagen: Android Menu - Add item Android Menú - Add ítem
  • 65. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 64 El código fuente de la Activity: Método que crea/abre el menú: Con el método onCreateOptionsMenu "abre" el menú ante un evento del botón del dispositivo:
  • 66. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 65 Método de selección/opciones del menú: En el método onOptionsItemSelected disponemos de las opciones del menú: Explicación completa de la práctica en PDF: 9.3. Práctica - menú de opciones con submenú Desplegaremos un submenú cuando se selecciona una opción del menú principal. Problema: Realizaremos una aplicación que muestre un menú con dos opciones: una que visualice el texto y a su vez, abra un submenú relacionado; la otra opción, que finalice el programa. Creamos un ítem: Crear ítem
  • 67. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 66 Volvemos a presionar "Add" y seleccionamos ahora "Sub-Menú": Crear submenú Añadiremos varios items al Sub-menú: ítems del submenú
  • 68. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 67 La estructura final debería ser: Estructura submenú
  • 69. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 68 El código fuente de la Activity: Explicación completa de la práctica en PDF:
  • 70. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 69 9.4. Práctica - menú de opciones con iconos También podemos ubicar gráficos dentro de los items del menú. Problema: Desarrollar una aplicación que muestre un menú con dos opciones, una opción que abrirá YouTube y la otra una red social. Ejemplo de ejecución Buscaremos dos iconos y los ubicaremos en las carpetas correspondientes: Ejemplo de ejecución Ahora tenemos que crear los dos Item y especificar las propiedades Title (con el texto que queremos que se muestre) y la propiedad Icon.
  • 71. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 70 El código fuente de la Activity: Explicación completa de la práctica en PDF: Recuerda… Un menú contextual es una “lista” que surge en la pantalla que aparece cuando el usuario mantiene presionado un elemento determinado Un submenú es una lista de opciones que surge cuando el usuario acciona un elemento del menú, que contiene otro menú anidado. Un menú principal es la colección primaria de una actividad, que aparece cuando el usuario acciona el botón “Menú” del dispositivo.
  • 72. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 71 10. CUADRO DE DIÁLOGOS Y NOTIFICACIONES 10.1. Cuadro de diálogos y notificaciones Los cuadros de diálogos son utilizados para mostrar una información de forma puntual al usuario de la aplicación. Usos generales:  Solicitar confirmación rápida.  Solicitud de elección simple o múltiple al usuario  Mostrar simplemente un mensaje al usuario Las notificaciones son mensajes temporales que desaparecen automáticamente tras unos segundos. Por lo cual, notifica al usuario sin interferir en las acciones que éste realiza con la aplicación. También las notificaciones pueden permanecer de forma constante tanto en la barra de estado o como en la notificación de Android. Un ejemplo de éstas son las notificaciones cuando tenemos una llamada pérdida o un SMS que no hemos visto. 10.2. Práctica - cuadro de diálogo simple Cuadro de diálogo con información al usuario que no desaparecerá hasta que él interactúe. Problema: Desarrollar una aplicación que muestre un cuadro diálogo inmediatamente al inicio de la misma. Una vez ejecutado el programa, se muestra: Ejecución del programa
  • 73. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 72 El código fuente de la Activity: Explicación completa de la práctica en PDF: 10.3. Práctica - cuadro de diálogo con botones de confirmar y cancelar Problema: Ampliamos la aplicación, una vez mostrado el cuadro de diálogo al inicio. Damos dos opciones al usuario sobre qué desea realizar. Salida en pantalla de la ejecución del programa: Ejecución del programa
  • 74. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 73 El código fuente de la Activity: Explicación de la práctica en PDF:
  • 75. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 74 10.4. Práctica - notificaciones La clase Toast muestra un mensaje superpuesto, por un período de tiempo, por encima de cualquier aplicación. El usuario no puede interactuar. Podría denominarse un mensaje emergente temporal. Problema: Desarrollo de una aplicación con pruebas de mensajes emergentes previa pulsación de un botón. Quedaría: Pantalla inicial con botones Mensaje por defecto Mensaje centrado Para generar un mensaje personalizado, creamos toast1.xml, quedando: toast1.xml Y al lanzar la aplicación con el mensaje personalizado o customizado: Ejemplo Toast personalizado
  • 76. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 75 El código fuente de la Activity: Explicación de la práctica en PDF: Recuerda… Un AlertDialog se recomienda usarlo para mostrar un título, un mensaje de texto, uno o varios botones, o una lista de elementos para seleccionar. Un mensaje Toast es un mensaje que dura unos segundos. Se puede cambiar de posición un Toast, mediante un setGravity.
  • 77. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 76 11. ALMACENAMIENTO 11.1. Almacenamiento Con Android podremos guardar la información atendiendo a la necesidad a cubrir de la aplicación. También atendiendo a las características técnicas del dispositivo (ej: no tenga slot para tarjetas SD), si pueden ser descargados desde un servicio web o base de datos remota o desde una base de datos local, etc. En definitiva, para actuar con los datos de una manera más intensiva. Si por el contrario, necesitamos compartir datos entre aplicaciones, usamos Content Provider; más directo y sin restricción alguna de seguridad. Por lo tanto, podremos almacenar los datos en:  Memoria interna del dispositivo  Memoria externa (SD u otra tarjeta o medio de almacenamiento)  Base de datos  Preferencias compartidas (Sharedpreferences) 11.2. Práctica - almacenamiento de datos mediante la clase SHAREDPREFERENCES Usaremos las preferencias compartidas (a través de SharedPreferences) para guardar y/o leer datos simples. Mejor dicho, poca información almacenada de forma local, concretamente en la ruta del dispositivo: "data/data/nombre_de_la_app_apk/shared_prefs/" Problema: Realizar una aplicación que guarde un dato (mail) ingresado en un campo de texto. Al iniciar de nuevo la aplicación, mostrar el mail que había sido guardado previamente, autorrellenando el campo de texto. Usaremos la siguiente interfaz: Detalle de interfaz
  • 78. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 77 Al hacer clic en el botón "Confirmar", grabamos en preferencias la variable "mail": Detalle de la función El código fuente de la Activity: Explicación completa en formato PDF:
  • 79. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 78 11.3. Práctica - almacenamiento de datos en la memoria interna Además de SharedPreferences, la aplicación podrá guardar datos en la memoria interna, compartiendo espacio con ficheros de sistema y de otras aplicaciones. Problema: Desarrollar una aplicación que guarde un dato, desde una caja de texto, hacia un fichero .txt (texto plano). Al iniciar la aplicación de nuevo, comprobaremos la existencia de tal fichero y, en caso de que exista, recuperar la información. Usaremos para interfaz: Detalle de interfaz
  • 80. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 79 El código fuente de la Activity:
  • 81. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 80 Explicación completa en formato PDF: 11.4. Práctica - almacenamiento de datos en una tarjeta SD Una de las situaciones más comunes es el almacenamiento/lectura hacia una memoria externa, en concreto a memorias SD mediante slot de expansión. Las ventajas son la capacidad y flexibilidad de intercambio de datos. Las desventajas, una mayor lentitud de acceso y la posibilidad de pérdida de datos en una extracción de la SD "en caliente". Problema: Realizar una aplicación que guarde unos datos, desde una caja de texto, en una tarjeta SD mediante un botón. También, mediante otro botón, la recuperación de los datos, Esta sería una aproximación de interfaz: Interfaz con controles Antes que nada, hay que solicitar permisos de acceso entre la aplicación y la tarjeta SD, para ello usamos AndroidManifest.xml, veamos: AndroidManifest.xml
  • 82. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 81 El código fuente de la Activity:
  • 83. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 82 Detalle de la función recuperar: Detalle de la función que extrae los datos, línea a línea, desde la SD: Explicación Completa en formato PDF: 11.5. Base de datos SQLITE QLite es un sistema gestor de bases de datos, no relacional, sin servidor y open source. Viene integrado en el SDK y ofrece un sistema CRUD (altas, bajas, modificaciones y búsquedas). 11.6. Práctica - almacenamiento en una base de datos sqlite Al estar integrado SQLite en el SDK de Android conlleva: configuración cero, sin ningún servidor corriendo para enlazar los datos y poco consumo de memoria. Problema: Desarrollar un programa que guarde datos, estos sean consultados y puedan ser eliminados y/o modificados.
  • 84. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 83 Nuestra propuesta de interfaz quedaría tal que así: Detalle de controles en interfaz El código fuente de la clase SQLite: Crearemos dos clases, una que "comunique" con el objeto SQLite (con la clase padre SQLiteOpenHelper y los métodos: onCreate y onUpgrade para gestionar tablas de la base de datos): Código clase 1
  • 85. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 84 Código de la clase CRUD: La segunda clase, implementará el sistema CRUD (consultas, altas, bajas y modificaciones):
  • 86. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 85 Explicación completa de la práctica en formato PDF: Recuerda… Necesitamos algún tipo de permiso de almacenamiento externo en el Manifest. Es interesante SQLite porque no necesita servidor El método Update, para evitar actualizar toda la tabla, necesita: - Una instrucción Where que filtre - Un filtrado de los datos a afectar Las sentencias SQL realizan una consulta de altas, bajas, modificaciones y creación de tablas. Para poder usar la clase que gestiona la base de datos debemos crear un objeto.
  • 87. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 86 12. MULTIMEDIA Hoy en día, los dispositivos móviles no solo se usan para hablar y mandar mensajes de texto. La gran mayoría de los mismos permiten, grabar y reproducir audio y video, así como realizar fotografías. En este tema, se intenta presentar todas las posibilidades mencionadas anteriormente, proporcionadas por Android, así como dar a conocer algunos ejemplos de implementación de pequeñas funciones para reproducir audio o hacer fotografías. El Framework proporcionado por Android para multimedia, permite capturar y reproducir audio, vídeo o imágenes en los formatos más comúnmente usados, pudiendo interactuar con archivos contenidos en el propio terminal Android, con archivos externos al dispositivo, o con aquellos dispuestos a través de Internet. Para la reproducción utiliza MediaPlayer o JetPlayer, siendo MediaRecorder el usado para grabar audio o vídeo, o hacer fotografías a través de la cámara del terminal. Android soporta varios formatos de audio, video e imágenes. Algunas de ellas como mp3, midi y flac para audio; 3gp y mpeg para videos; y jpg y png entre otros para imágenes. 12.1. Reproducción de audio El SDK de Android ofrece dos posibilidades para reproducir audio:  MediaPlayer: idónea para reproducir audio de larga duración, alta calidad con gran peso en bytes, o simplemente usados como "backgrounds" de aplicaciones (de fondo cómo un hilo musical de la app).  SoundPool: idónea para reproducir audio de poca duración y con la limitación de 1Mb de tamaño de archivo. 12.2. Reproducción de video El método más fácil y directo es usar un control que el SDK de Android nos provee. Dicho control es una vista de tipo VideoView. Puede probarlo creando un proyecto usando los siguientes ficheros:
  • 88. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 87 video.xml NOTA: no es recomendable probar una aplicación que ejecute video con el emulador. Más información: 12.3. Grabar sonido Las APIs (bibliotecas compartidas) de Android disponen de clases internas que facilitan la captura de audio y video. La clase MediaRecorder es fácil de usar y se implementa de una manera poco compleja en la aplicación. NOTA: Al igual que pasaba con los videos, se recomienda ejecutar la grabación desde un dispositivo real y no desde un emulador. 12.4. Práctica - reproducción de audio Los formatos de audio admitidos por Android son los estandar: mp3, ogg y wav. Problema: Dispondremos de dos botones que emitan sonidos almacenados en el dispositivo.
  • 89. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 88 Creamos una carpeta (raw) que alojará los archivos mp3: Detalle donde se alojan los ficheros de audio Creamos una interfaz con dos botones e inicializamos las propiedades Text y OnClick de cada botón: Detalle de interfaz
  • 90. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 89 Código fuente de la Activity: Explicación completa de la práctica en formato PDF: 12.5. Práctica - reproducción de audio desde archivo internet Reproducir un sonido almacenado desde un servidor en internet conlleva una autorización, por parte de nuestra aplicación, desde el archivo AndroidManifiest.xml Problema 1: La interfaz tendrá un botón que emitirá un sonido de un archivo alojado en una ruta remota, es decir, desde un servidor web.
  • 91. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 90 Lo primero es realizar la petición de autorización al archivo AndroidManifest.xml, veamos cómo: AndroidManifest.xml Detalle de propuesta de interfaz para la aplicación El código fuente de la Activity:
  • 92. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 91 Explicación completa de la práctica en formato PDF: Problema 2: Desarrollar una aplicación que "libere" la aplicación mientras carga el archivo de audio. De esta manera la aplicación no sufre ningún "lag" (retraso o "congelación") al extraer los datos. El código fuente de la Activity: Explicación completa de la práctica en formato PDF:
  • 93. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 92 12.6. Práctica - grabación de audio El SDK de Android tiene implementado, de forma nativa, un grabador/reproductor. Es decir, un objeto integrado muy fácil de usar en aplicaciones. Problema: Una aplicación con dos botones, uno para grabar y otro para reproducir audio respectivamente. Detalle de la propuesta de aplicación Al pulsar el botón de grabación, a través de Intent nos comunicamos con la aplicación nativa de Android para efectuar la grabación: Al finalizar la grabación, almacenamos la referencia de ubicación del archivo: Si deseamos reproducir el archivo grabado, usamos MediaPlayer:
  • 94. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 93 El código fuente de la Activity: Explicación completa de la práctica en formato PDF: Recuerda… La clase para reproducir audio/video se denomina MediaPlayer. Es necesario disponer de una aplicación de permisos efectivos de acceso para acceder a una tarjeta de memoria externa para leer/almacenar. Para que una aplicación pueda conectarse de forma automática en Internet, necesita: - Incorporar permisos de acceso. - Habilitar un archivo Manifest.
  • 95. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 94 13. GADGETS En el presente tema, por ser el último, se presume de habilidades y conocimientos suficientes para poder acometer (creando y modificando) ficheros esenciales de cada proyecto. Abordaremos elementos hardware directo presentes en la mayoría de dispositivos Android; tales como: cámara de fotos, sms vía gsm y sensor gps. 13.1. Práctica - tomar instantánea con cámara Desarrollaremos una aplicación que capture una foto y la almacene en la memoria externa (hacia una ruta concreta de la tarjeta SD). NOTA: con fines metodológicos y para no hacerlo bastante más complejo, el proyecto no comprueba si existe una tarjeta de memoria ni la capacidad necesaria para el almacenaje. Tampoco se comprueba si el dispositivo no dispone de cámara. Problema: Un proyecto que incluya un botón que pueda almacenar una foto, con un código único según fecha- hora, en una ruta fija. Aplicación ejecutada Permisos necesarios: En AndroidManifest.xml añadimos los permisos necesarios, que son: Detalle de activity_main.xml: El archivo activity_main.xml, contendrá el siguiente código:
  • 96. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 95 Código fuente de Activity:
  • 97. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 96
  • 98. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 97 Explicación completa de la práctica en formato PDF: 13.2. Práctica - envío de mensajes SMS Realizaremos un proyecto que envíe mensajes sms a un destinatario telefónico. Aplicación ejecutada NOTA: con fines metodológicos y para no hacerlo bastante más complejo, el proyecto no comprueba si existe una tarjeta sim, si está habilitado el modo avión, si existe cobertura de la red de telefonía móvil. Problema: Previo atajar el problema de manera completa, vamos a realizar una breve explicación de funcionamiento en Android, indicando los elementos necesarios para tal uso. Antes de escribir el código .java; necesitamos establecer el permiso de envío sms en nuestro manifest. El permiso concreto sería: Una vez hecho esto, el código estaría construido así:
  • 99. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 98 La función de envío se traduce como: XXXXXXXXX (siendo X dígitos del nº de teléfono a enviar sms), "texto de prueba" (el contenido del sms), null, null (para control y seguimiento del envío y recepción) El código fuente de la Activity principal:
  • 100. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 99 Detalle de la función enviarSMS: Donde toda la lógica se traduce en: Explicación completa de la práctica en formato PDF: 13.3. Práctica - posicionamiento con GPS Mostraremos la posición, de un dispositivo al aire libre o en exteriores, a través del componente hardware de geo posicionamiento (módulo GPS). Cabe destacar que también se puede localizar mediante triangulación de redes móviles GSM, donde exista cobertura, y a través de conexiones WIFI. Sobre todo en interiores, donde no funciona el GPS. NOTA: para no complicar más el código, damos por sentado que el dispositivo tiene GPS. Problema: Obtener la posición GPS siempre y cuando esté activado el componente en el dispositivo y se encuentre en exterior. De lo contrario Resultado mientras no obtengamos posiciones Abre un nuevo proyecto y ubica los siguientes códigos en sus respectivos archivos. Empezaremos los permisos. La información de geolocalización necesita de permisos especiales para hacerla funcionar con la aplicación:  ACCESS_FINE_LOCATION: autoriza al acceso de ubicación precisa.  ACCESS_COARSE_LOCATION: autoriza al acceso de ubicación aproximada.
  • 101. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 100 Permisos añadidos al manifiest Detalle de la interfaz gráfica: Código fuente de la Activity:
  • 102. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 101
  • 103. INTRODUCCIÓN A LA PROGRAMACIÓN ANDROIDE 102 Explicación completa de la práctica en formato PDF: Recuerda… Cuando el programa termina, usando el Gps, lo último que debemos controlar es el método OnDestroy para liberar el Gps. Para que una aplicación pueda hacer uso de un sensor, necesita: - Incorporar permisos de acceso - Habilitar un archivo Manifest El método para actualizar la posición del Gps cuando cambie es OnLocationChanged() Qué dos cosas necesitamos para usar un Gps en Android un controlador y un listener.