47
Creación de Aplicaciones Móviles con Android

Aplicaciones android

  • Upload
    edwin

  • View
    603

  • Download
    0

Embed Size (px)

DESCRIPTION

Conceptos basicos de los elementos de una Aplicacion Android

Citation preview

Page 1: Aplicaciones android

Creación de Aplicaciones Móviles con Android

Page 2: Aplicaciones android

Herramientas de Desarrollo (¿Qué se necesita?)

Paso 1: JDK de Java.

Paso 2: Eclipse (recomendado IDE for Java

Developers) Paso 3:

Android SDK (paquete con las herramientas básicas para desarrolar aplicaciones)▪ Incluye SDK y AVD Manager▪ Instalar los Targets necesarios.

Page 3: Aplicaciones android

Herramientas de Desarrollo (¿Qué se necesita?)

Paso 4: Android Development Tools (ADT) ▪ Plug-in para Eclipse ▪ Incluye vista DDMS▪ Procesos en ejecución▪ Navegación por el sistema de ficheros▪ Logs

▪ Proyecto, editor de vistas, compilación de recursos, firma y exportación de aplicaciones,…

Page 4: Aplicaciones android

Herramientas de Desarrollo (¿Qué se necesita?)

Paso 5: Configurar el Plugin ADT▪ En la ventana de configuración de Eclipse, se debe

acceder a la sección de Android e indicar la ruta en la que se ha instalado el SDK.

Paso 6: Configurar Android Virtual Device (AVD)▪ A la hora de probar y depurar aplicaciones Android

no tendremos que hacerlo necesariamente sobre un dispositivo físico, sino que podremos configurar un emulador o dispositivo virtual.

Page 5: Aplicaciones android

¿Qué es Android?

Android es un sistema operativo móvil basado en Linux, que junto con aplicaciones middleware está enfocado para ser utilizado en dispositivos móviles como teléfonos inteligentes, tabletas, Google TV y otros dispositivos. Es desarrollado por la Open Handset Alliance, la cual es liderada por Google.

Page 6: Aplicaciones android

Características

Framework de aplicación que habilita la reutilización y reemplazo de componentes.

Máquina virtual Dalvik optimizada para móviles.

Navegador integrado basado en WebKit . Gráficos optimizados por una librería

gráfica 2D propia; gráficos 3D basados en la especificación OpenGL.

SQLite para almacenamiento de datos estructurados.

Page 7: Aplicaciones android

Características

Soporte para gran variedad de archivos multimedia (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).

Telefonía GSM. Bluetooth, EDGE, 3G y WiFi (4G, WiMAX,…). Cámara, GPS, compás, acelerómetro,… Entorno de desarrollo completo incluyendo

emulador, herramientas de depuración, profiling de memoria y rendimiento y plugin para el IDE Eclipse.

Page 8: Aplicaciones android

Competidores

Apple - iPhone OS RIM – Blackberry

Microsoft - Windows Mobile 6.5, Phone 7 Series

Symbian Foundation - Symbian OS

Palm - WebOS

Page 9: Aplicaciones android

Dispositivos

HTC Dream, Magic (myTouch3G), Hero,

Tattoo, Nexus One(*), Desire, Legend Motorola

CLIQ, Droid (Milestone), DEXT Acer, Archos, Dell, Huawei, Lenovo,

LG, Samsumg, Sony Ericsson,…

Page 10: Aplicaciones android

Arquitectura

Kernel linux 2.6. Runtime basado en

VM Dalvik. Conjunto de librerias

C/C++. Framework común a

todas las aplicaciones basada en servicios.

Aplicaciones base implementadas en Java (todas reemplazables).

Page 11: Aplicaciones android

Modelo de Aplicaciones

Aplicaciones Escritas en Java y empaquetadas en

Android Package (apk) Cada aplicación es independiente▪ Se ejecuta en su propio proceso de Linux▪ Cada proceso tiene su propia máquina virtual

de Java▪ Cada aplicación tiene asignado un ID de

usuario de Linux▪ Solo ese ID de usuario tiene permisos para acceder a

los archivos de la aplicación

Page 12: Aplicaciones android

Estructura de un Proyecto Android

Cuando creamos un nuevo proyecto Android en Eclipse se genera automáticamente la estructura de carpetas necesaria para poder generar posteriormente la aplicación. Esta estructura será común a cualquier aplicación.

Page 13: Aplicaciones android

Elementos de la Estructura Carpeta /src/ Contiene todo el código

fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etc. Inicialmente, Eclipse creará por nosotros el código básico de la pantalla (Activity) principal de la aplicación, siempre bajo la estructura del paquete java definido.

Page 14: Aplicaciones android

Elementos de la EstructuraCarpeta /res/

Contiente todos los ficheros de recursos necesarios para el proyecto: imágenes, vídeos, cadenas de texto, etc. Los diferentes tipos de recursos de deberán distribuir entre las siguientes carpetas:

Page 15: Aplicaciones android

Elementos de la Estructura Carpeta /res/

/res/drawable/. Contienen las imágenes de la aplicación. Se puede dividir en /drawable-ldpi, /drawable-mdpi y /drawable-hdpi para utilizar diferentes recursos dependiendo de la resolución del dispositivo.

/res/layout/. Contienen los ficheros de definición de las diferentes pantallas de la interfaz gráfica. Se puede dividir en /layout y /layout-land para definir distintos layouts dependiendo de la orientación del dispositivo.

/res/anim/. Contiene la definición de las animaciones utilizadas por la aplicación.

/res/menu/. Contiene la definición de los menús de la aplicación. /res/values/. Contiene otros recursos de la aplicación como por ejemplo

cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), etc.

/res/xml/. Contiene los ficheros XML utilizados por la aplicación. /res/raw/. Contiene recursos adicionales, normalmente en formato

distinto a XML, que no se incluyan en el resto de carpetas de recursos.

Page 16: Aplicaciones android

Elementos de la Estructura Carpeta /gen/ Contiene una serie de

elementos de código generados automáticamente al compilar el proyecto. Cada vez que generamos nuestro proyecto, la maquinaria de compilación de Android genera por nosotros una serie de ficheros fuente en java dirigidos al control de los recursos de la aplicación.

Page 17: Aplicaciones android

Elementos de la Estructura Carpeta /gen/ El más importante dentro del

directorio, el fichero R.java, y la clase R.

Esta clase R contendrá en todo momento una serie de constantes con los ID de todos los recursos de la aplicación incluidos en la carpeta /res/, de forma que podamos acceder facilmente a estos recursos desde nuestro código a traves de este dato. Así, por ejemplo, la constante R.drawable.icon contendrá el ID de la imagen “icon.png” contenida en la carpeta /res/drawable/.

public final class R {

public static final class drawable {

public static final int icon=0x7f020000;

}public static final class layout {

public static final int main=0x7f030000;

}}

Page 18: Aplicaciones android

Elementos de la Estructura Carpeta /assets/ Contiene todos los demás ficheros auxiliares necesarios

para la aplicación (y que se incluirán en su propio paquete), como por ejemplo ficheros de configuración, de datos, etc.

La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos en la carpeta /assets/ es que para los primeros se generará un ID en la clase R y se deberá acceder a ellos con los diferentes métodos de acceso a recursos. Para los segundos sin embargo no se generarán ID y se podrá acceder a ellos por su ruta como a cualquier otro fichero del sistema.

Page 19: Aplicaciones android

Componentes de una Aplicación

En Java estamos acostumbrados a manejar conceptos como ventana, control, eventos o servicios como los elementos básicos en la construcción de una aplicación.

En Android vamos a disponer de esos mismos elementos básicos aunque con un pequeño cambio en la terminología y el enfoque.

Page 20: Aplicaciones android

Componentes de una Aplicación

Activity (Actividades) View (Vistas) Service (Servicios) Content Provider Broadcast Receiver Widget Intent

Page 21: Aplicaciones android

Componentes de una Aplicación Activity (Actividad)

Presenta una interfaz de usuario enfocada en algo que el usuario puede realizar.▪ Elegir un contacto, seleccionar una fotografía,…

Una aplicación consistirá en un conjunto de actividades independientes que trabajan juntas.▪ Una de las actividades se marca como la inicial al

arrancar una aplicación. Se puede pensar en una actividad como el

elemento análogo a una ventana en cualquier otro lenguaje visual.

Page 22: Aplicaciones android

Componentes de una Aplicación

View (Vista) Los objetos view son los componentes

básicos con los que se construye la interfaz gráfica de la aplicación, análogo por ejemplo a los controles de Java.

Android pone a disposición una gran cantidad de controles básicos, como cuadros de texto, botones, listas desplegables, imágenes, etc.

Page 23: Aplicaciones android

Componentes de una Aplicación Service (Servicio) No tiene UI Se ejecuta en background por periodo indefinido.▪ Ej. Reproductor de música

Expone una interfaz para interactuar.▪ Ej. Parar la reproducción de música

Es posible acceder desde otros componentes o aplicaciones.

Pueden realizar cualquier tipo de acciones, por ejemplo actualizar datos, lanzar notificaciones, o incluso mostrar elementos visuales (activities) si se necesita en algún momento la interacción con del usuario.

Page 24: Aplicaciones android

Componentes de una Aplicación

Content Provider Es un mecanismo que expone un

conjunto especifico de datos a otras aplicaciones.▪ Los datos pueden estar almacenados en

cualquier lugar: fichero, SQLite, internet,… Hace uso de un ContentResolver para

acceder a los datos expuestos por un Content Provider.

Page 25: Aplicaciones android

Componentes de una Aplicación Broadcast Receiver No realiza ningún acción por si mismo Recibe y reacciona ante anuncios de tipo broadcast

destinado a detectar y reaccionar ante determinados mensajes o eventos globales generados por el sistema.

Existen muchos originados por el sistema▪ Ej. Batería baja, SMS recibido, Tarjeta SD inserta, etc.

Las aplicaciones puede lanzar un mensaje broadcast, es decir, no dirigidos a una aplicación concreta sino a cualquiera que quiera escucharlo.

No tienen UI, aunque pueden iniciar una actividad (Activity) para atender al anuncio.

Page 26: Aplicaciones android

Componentes de una Aplicación

Widget 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.

Page 27: Aplicaciones android

Componentes de una Aplicación Intent

Un intent es el elemento básico de comunicación entre los distintos componentes Android.

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.

Page 28: Aplicaciones android

Activación de los Componentes Content Provider

Al recibir una petición desde un ContentResolver Activity, Service y Broadcast Receiver

Al recibir un mensaje asíncrono llamado Intent En un Activity y Service▪ Representa la intención de querer realizar algo.▪ Ej. La intención de seleccionar un contacto como

remitente. En Broadcast Receiver▪ Representa el anuncio del comienzo de una acción.▪ Ej. Anunciar que se ha pulsado el botón de la cámara.

Page 29: Aplicaciones android

El fichero de manifiesto

Contiene la definición en XML de los aspectos principales de la aplicación (AndroidManifest.xml).

Propiedades de la aplicación Identificación (nombre, versión, icono, …),

Declaración de todos los componentes existentes en la aplicación. Intent filters▪ Un componente indica a que intent puede

responder

Page 30: Aplicaciones android

El fichero de manifiesto

Declaración de los permisos requeridos uses-permission Acceso a determinado, estado del telefono,

acceso a internet, etc. Los permisos que requiere se muestran al

usuario al instalar la aplicación

Declaración de permisos propios Restringe que aplicaciones pueden hacer

uso de un determinado componente

Page 31: Aplicaciones android

Una aplicación sencilla

Page 32: Aplicaciones android

Aplicaciones

Las aplicaciones en Android solo tienen un primer plano que ocupa toda la pantalla.

Las aplicaciones están formadas por actividades (Activitys).

En un momento dado una actividad (Activity) pasa al primer plano y se coloca por encima de otra formado una pila de actividades (Activitys).

El botón back cierra la actividad (Activity) y recupera de la pila la anterior.

Page 33: Aplicaciones android

Aplicaciones

La aplicaciones en Android no tienen control de su ciclo de vida.

Deben estar preparadas para su terminación en

cualquier momento.

Cada aplicación se ejecuta en su propio proceso.

El runtime de Android gestiona el proceso de cada aplicación y por extensión de cada Actividad que contenga.

Page 34: Aplicaciones android

Actividades (Activitys)

Corresponden con una pantalla de la interfaz de usuario.

Muestra los controles de la interfaz de usuario y reacciona ante las interacciones del mismo.

Es una clases derivada de la clase Activity.

Toda actividad se declara en el archivo AndroidManifest.xml .

Representa una cosa concreta que puede hacer el usuario

Page 35: Aplicaciones android

Actividades (Activitys)

Cada pantalla se implementa como una actividad.

Moverse a la siguiente actividad supone llamar al método

startActivity() startActivityForResult()

Una aplicación puede reusar actividades de android o de otras aplicaciones

Normalmente una aplicación consta de varias actividades

Page 36: Aplicaciones android

Actividades (Activitys)

Una actividad se compone de todo tipo de controles o widgets llamados View en Android.

La clase View es la clase base de todos los widgets. (Button, EditText, TextView…) .

La clase ViewGroup es la clase base de los layouts y de otras vistas compuestas.

Page 37: Aplicaciones android

Actividades (Activitys)

onCreate: Se llama a este método cuando se crea la actividad

setContentView: Asigna a la vista el contenido del recurso layout

R.layout.main: Recurso de layout de la aplicación

Creando una Actividad (Activity)

Page 38: Aplicaciones android

Actividades (Activitys)

Lanza una nueva actividad sin recibir el resultado startActivity(intent);

Lanza una nueva actividad y espera el resultado startActivityForResult(intent, requestCode);

Cuando retorna la actividad llamada, se invoca al método onActivityResult pasándole el requestCode con el que se lanzó desde la actividad.

onActivityResult(int requestCode, int resultCode, Intent

result)

Moverse a la siguiente actividad

Page 39: Aplicaciones android

Ciclo de Vida

onCreate(Bundle) Se invoca cuando la Actividad se arranca por primera vez. Se utiliza para tareas de inicialización como crear la interfaz de

usuario de la Actividad. Su parámetro es null o información de estado guardada

previamente por onSaveInstanceState()

onStart() Se invoca cuando la Actividad va a ser mostrada al usuario

onResume()

Se invoca cuando la actividad va a empezar a interactuar con el usuario

Métodos de transacción de estados

Page 40: Aplicaciones android

Ciclo de Vida

onPause() Se invoca cuando la actividad va a pasar al fondo porque

otra actividad ha sido lanzada para ponerse delante. Se utiliza para guardar el estado de la Actividad

onStop()

Se invoca cuando la actividad va a dejar de ser visible y no se necesitará durante un tiempo.

Si hay escasez de recursos en el sistema, este método podría no llegar a ser invocado y la actividad ser destruida directamente

Métodos de transacción de estados

Page 41: Aplicaciones android

Ciclo de Vida

onRestart() Se invoca cuando una actividad parada pasa a

estar activa.

onDestory() Se invoca cuando la Actividad va a ser

destruida. Si hay escasez de recursos en el sistema, este

método podría no llegar a ser invocado y la actividad ser destruida directamente.

Métodos de transacción de estados

Page 42: Aplicaciones android

Ciclo de Vida

onSaveInstanceState(Bundle) Se invoca para permitir a la actividad guardar

su estado de la ui Normalmente no necesita ser redefinido

onRestoreInstanceState(Bundle) Se invoca para recuperar el estado guardado

por onSaveInstanceState(). Normalmente no necesita ser redefinido

Métodos de transacción de estados

Page 43: Aplicaciones android

Ciclo de Vida

Page 44: Aplicaciones android

Intenciones (Intents)

Representan la “intención” o solicitud de que alguno de los componentes lleve a cabo una tarea.

Las intenciones ofrecen un servicio de paso de mensajes que permite interconectar componentes de la misma o de distintas aplicaciones.

Las intenciones se utilizan para: Arrancar actividades Enviar eventos a múltiples destinatarios

Page 45: Aplicaciones android

Intenciones (Intents)

Invocación explícita Se expecifica explícitamente en código que

componente es el encargado de manejar la intención.

Invocación implícita Es la plataforma la que determina, a través de un

proceso de resolución de intenciones, que componente es el más apropiado para manerjar la intención. Un componente declara su capacidad para atender a una intención mediante el tag <intent-filter> en el archivo AndroidManifest.xml

Hay dos formas de invocar a una intención: explícita, implícita

Page 46: Aplicaciones android

Intenciones (Intents)

Las intenciones se pueden usar para moverse entre actividades.

La intención puede ser explícita indicando la actividad destino

o implícita especificando una acción y unos datos y dejando que se encuentre la actividad adecuada en tiempo de ejecución

Lanzar una actividad de manera explícita

Intent intent = new Intent(Context, Activity.class); startActivity(intent);

Lanzar una actividad de manera implícita Intent intent = new Intent(Intent.ACTION_DIAL, URI.parse(tel:928-76-

34-26)); startActivity(intent);

Page 47: Aplicaciones android