Introducción a Android

21
INTRODUCCIÓN A ANDROID Creación de aplicaciones móviles para Android Por Francisco J. Recio Portillo para → http://www.toString.es

Transcript of Introducción a Android

INTRODUCCIÓN A ANDROIDCreación de aplicaciones móviles para Android

Por Francisco J. Recio Portillo para → http://www.toString.es

Historia [0]Creación de aplicaciones móviles para Android

● Julio 2005● Google adquiere Android, Inc.● Pequeña empresa que desarrolla software para móviles (hasta

entonces una gran desconocida)● Noviembre 2007

● Nace la Open Handset Alliance● Consorcio de empresas unidas con el objetivo de desarrollar

estándares abiertos para móviles● Texas Instruments, Broadcom co., Google, HTC, Intel, LG, Marvel

Tech., Motorola, Nvidia, Qualcomm, Samsumg Electonics, Sprint Nextel, T-Mobile

● Se anuncia su primer producto, Android, plataforma para móviles construida sobre el kernel de Linux 2.6

● Octubre 2008● Publicado el proyecto open source Android

● Distribuido principalmente con licencia Apache 2.0● Partes en otras licencias, p.e. GPL v2 para el núcleo

● Se abre el Android Market● HTC Dream (G1), primer teléfono con Android

● Diciembre 2008● Nuevas incorporaciones

● ARM Holdings, Athreos Communications, Asustek ComputerInc., Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp y Vodafone Group Plc.

Historia [1]Creación de aplicaciones móviles para Android

● Noviembre 2009● Motorola Droid

● Consigue vender 1.05 millones de unidades en 74 días, superando el record establecido por el iPhone de Apple

● Diciembre 2009● 16.000 aplicaciones en el Market

● 60% gratuitas, 30% de pago aproximadamente

● Febrero 2010● Google anuncia la buena marcha de Android

● 60.000 teléfonos con Android vendidos al día

Historia [2]Creación de aplicaciones móviles para 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 ES 3.0● SQLite para almacenamiento de datos estructurados● Multi-táctil soporte nativo para pantallas capacitivas● Soporte para gran variedad de archivos multimedia (MPEG4, H.264, ● MP3, AAC, AMR, JPG, PNG, GIF)● Telefonía GSM● Bluetooth, EDGE, 4G y WiFi (4G, WiMAX,...)● Cámara, GPS, compás, acelerómetro...● Tethering: usar al dispositivo como punto de acceso inalámbrico● Entorno de desarrollo completo incluyendo emulador, herramientas ● de depuración, profiling de memoria y rendimiento.● IDE → Android Studio y Eclipse

CaracterísticasCreación de aplicaciones móviles para Android

ArquitecturaCreación de aplicaciones móviles para Android

● 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

● Componentes básicos de una aplicación● Actividades● Servicios● Broadcast receivers● Content providers

Modelo de Aplicaciones [0]Creación de aplicaciones móviles para Android

● 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 actividadesindependientes que trabajan juntas● Una de las actividades se marca como la inicial al arrancar una aplicación

● 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

Modelo de Aplicaciones [1]Creación de aplicaciones móviles para Android

● Broadcast receivers● No realiza ningún acción por si mismo● Recibe y reacciona ante anuncios de tipo broadcast● Existen muchos originados por el sistema

● Ej. Batería baja● Las aplicaciones puede lanzar un broadcast● No tienen UI, aunque pueden iniciar una actividad para

atender al anuncio

● Content providers● 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

Modelo de Aplicaciones [2]Creación de aplicaciones móviles para Android

● Activación de los componentes● Content providers

● Al recibir una petición desde un ContentResolver● Actividades, Servicios y Broadcast Receivers

● Al recibir un mensaje asíncrono llamado Intención (Intent)● En actividades y servicios

● Representa la intención de querer realizar algo● Ej. La intención de seleccionar un contacto como remitente

● En broadcast receivers● Representa el anuncio del comienzo de una acción● Ej. Anunciar que se ha pulsado el botón de la cámara

● Parada de componentes:● Los content providers y broadcast receivers tienen por definición● un tiempo limitado de actividad, no necesitan pararse explícitamente.● Android proporciona métodos para parar de forma ordenada

Activities y services que están en ejecución.● Cualquier componente puede ser finalizado por el sistema cuando

se detecta que no va a utilizarse o se necesitan recursos extras.

Modelo de Aplicaciones [3]Creación de aplicaciones móviles para Android

● El fichero de manifiesto● Propiedades de la aplicación● Declaración de todos los componentes existentes en la aplicación● Intent filters● Un componente indica a intenciones puede responder● 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

Modelo de Aplicaciones [4]Creación de aplicaciones móviles para Android

● La aplicaciones en Android solo tienen un primer plano que ocupatoda la pantalla

● Las aplicaciones están formadas por actividades● En un momento dado una actividad pasa al primer plano y se● coloca por encima de otra formado una pila de actividades● El botón back cierra la actividad y recupera de la pila la anterior● 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.● Para programar en Android se requiere un conocimiento de JAVA

Aplicaciones [0]Creación de aplicaciones móviles para Android

● Representa una cosa concreta que puede hacer el usuario

- 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

Aplicaciones [1]Creación de aplicaciones móviles para Android

● Normalmente una aplicación consta de varias actividades - 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

Aplicaciones [2]Creación de aplicaciones móviles para Android

● Android provee de un conjunto de Views para ayudarnos a crear interfaces simples

● y modificarlos o extenderlos.● View

● 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

● Creando una actividad

ActividadesCreación de aplicaciones móviles para Android

public class HolaMundo extends Activity {@Overridepublic void onCreate(Bundle saveInstanceState) {

super.onCreate(saveInstanceState);setContentView(R.layout.main);

}}

● Estados de una actividad● Activo (Running): La actividad está encima de la pila, es visible,

tiene el foco.● Pausado (Paused): La actividad es visible pero no tiene el foco.

Se alcanza este estado cuando pasa a activa otra actividad transparente o que no ocupa toda la pantalla. Cuando una Actividad es tapada por completo pasa a estar parada.● Parado (Stopped): Cuando la actividad no es visible. Se recomienda

guardar el estado de la ui, preferencias, etc● Destruido (Destroyed): Cuando la Actividad termina, o es matada

por el runtime de Android. Sale de la Pila de Actividades.

Ciclo de Vida [0]Creación de aplicaciones móviles para Android

● Métodos de transición de estados● 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● onPause()

● Se invoca cuando la actividad va a pasar al fondo porque otra actividadha sido lanzada para ponerse delante.

● Se utiliza para guardar el estado de la Actividad

Ciclo de Vida [1]Creación de aplicaciones móviles para Android

● Métodos de transición de estados● onStop()

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

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

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

Ciclo de Vida [2]Creación de aplicaciones móviles para Android

Ciclo de Vida [3]Creación de aplicaciones móviles para Android

● Representan la “intención” o solicitud de que alguno de loscomponentes 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

● Hay dos formas de invocar a una intención: explícita, implícita● 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

Intenciones (Intent) [0]Creación de aplicaciones móviles para Android

● 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 seencuentre la actividad adecuada en tiempo de ejecución

● Lanzar una actividad de manera explícitaIntent intent = new Intent(Context, Activity.class);startActivity(intent);

● Lanzar una actividad de manera implícitaIntent intent = new Intent(Intent.ACTION_DIAL, URI.parse(tel:...));startActivity(intent);

● Una actividad también se puede lanzar para que devuelva unresultado mediante el método startActivityForResult

● Cuando termina esta subactividad se llama al método● onActivityResult de la actividad padre desde

la que fue arrancada

Intenciones (Intent) [1]Creación de aplicaciones móviles para Android