Post on 25-Jul-2015
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
● 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
● 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