1. INTRODUCCIÓN A ANDROID
Creación de aplicaciones móviles para Android
Por Francisco J. Recio Portillo para → http://www.toString.es
2. 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
3. ● 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 Computer
Inc., Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp y
Vodafone Group Plc.
Historia [1]
Creación de aplicaciones móviles para Android
4. ● 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
5. ● 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ísticas
Creación de aplicaciones móviles para Android
7. ● 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
8. ● 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
● 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
9. ● 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
10. ● 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
11. ● 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
12. ● La aplicaciones en Android solo tienen un primer plano que ocupa
toda 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
13. ● 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
14. ● 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
15. ● 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
Actividades
Creación de aplicaciones móviles para Android
public class HolaMundo extends Activity {
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.main);
}
16. ● 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
17. ● 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 actividad
ha 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
18. ● Métodos de transición de estados
● 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
● 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
19. Ciclo de Vida [3]
Creación de aplicaciones móviles para Android
20. ● 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
● 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
21. ● 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:...));
startActivity(intent);
● Una actividad también se puede lanzar para que devuelva un
resultado 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