Introducción a Android
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Introducción a Android: un poco de historia
Introducción a Android: releases Versión Android Fecha release Android 1.5 (Cupcake) 30 abril de 2009 Android 1.6 (Donut) ...
Introducción a Android: un poco de historia (II) Prototipo HTC Dream Nexus One Xperia x10 HTC Liquid GeeksPhone Samsung I7...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Introducción a Android: ¿qué es Android? <ul><li>¿Qué es? </li></ul><ul><li>Conjunto de software libre que incluye sistema...
Introducción a Android: ¿qué es Android? (II) <ul><li>Características: </li></ul><ul><li>Conectividad: </li></ul><ul><ul><...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Arquitectura Android
Arquitectura Android :Linux Kernel <ul><li>Versión 2.6 del kernel de Linux </li></ul><ul><li>Android aprovecha la segurida...
Arquitectura Android:Linux Kernel (II) <ul><li>Relación versiones Linux por versión Android </li></ul>Versión Android Vers...
Arquitectura Android :Android runtime <ul><li>Utiliza el Kernel de Linux para la ejecución de aplicaciones, procesos y ges...
Arquitectura Android : Dalvik Virtual Machine <ul><li>Condicionantes de los dispositivos móviles: </li></ul><ul><ul><li>Po...
Librerías Android (I) <ul><li>android.util: paquete de utilidades del core, clases de bajo nivel </li></ul><ul><li>android...
Librerías Android (II) <ul><li>android.app: acceso al contexto de la aplicación, Actividades y API de servicios </li></ul>...
Arquitectura Android : Framework de aplicaciones <ul><li>Proporciona una plataforma abierta para el desarrollo </li></ul><...
Arquitectura Android: Capa de aplicaciones <ul><li>En esta capa de ubicarán las aplicaciones desarrolladas por el desarrol...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Arquitectura de las aplicaciones: Componentes de aplicación Principales componentes para el  desarrollo  de aplicaciones e...
Entorno de desarrollo: AndroidManifest.xml <ul><li>Cada aplicación debe tener un archivo AndroidManifest.xml en el directo...
<ul><li>Contiene una interfaz visual gráfica </li></ul><ul><li>Cada Activity debe tener una responsabilidad propia (alta c...
Ciclo de vida de la Activity <ul><li>ANR si la Activity no responde a un evento en 5 segundos </li></ul>Mensaje ANR
Arquitectura de las aplicaciones: Componente Service <ul><li>Se ejecutan en el background (no tienen UI).  </li></ul><ul><...
Ciclo de vida del Service (según creación)
Arquitectura de las aplicaciones: Componente Content Provider <ul><li>Mecanismo genérico para compartir datos entre aplica...
Arquitectura de las aplicaciones: Intents <ul><li>Intent: usado como mecanismo para el paso de mensajes, declara la intenc...
Arquitectura de las aplicaciones: Intents (II) <ul><li>Contienen : </li></ul><ul><ul><li>Action: La acción general a reali...
Arquitectura de las aplicaciones: Intents (III) <ul><li>Atributos adicionales: </li></ul><ul><ul><li>Category: ofrece info...
Arquitectura de las aplicaciones: Intents (V) <ul><li>En los Intents, se puede especificar el destinatario o no: </li></ul...
Intents: Acciones predeterminadas <ul><li>ACTION_ANSWER: Abre una Actividad para gestionar llamadas entrantes. </li></ul><...
Arquitectura de las aplicaciones: Intent filters Intent Intent
Arquitectura de las aplicaciones: Broadcast Intents Intent Intents
Arquitectura de las aplicaciones: Componente Broadcast Receiver <ul><li>Broadcast Receivers son utilizados para escuchar B...
Arquitectura de las aplicaciones: Resources <ul><li>Los recursos (Resources) son elementos externos que se quieren incluir...
Arquitectura de las aplicaciones: Interfaces de usuario <ul><li>En Android, las interfaces se construyen utilizando los ob...
Interfaces de usuario: Layouts <ul><li>También conocidos como Layout Managers </li></ul><ul><li>Son extensiones de ViewGro...
Interfaces de usuario: Layouts (II) <ul><li>FrameLayout: el más simple, añade cada View hija en la esquina superior izquie...
Arquitectura de las aplicaciones: Notificaciones al usuario <ul><li>Algunos sucesos requieren ser notificados al usuario <...
Interfaces de usuario: componentes compuestos (I) <ul><li>Normalmente hacen referencia a Views con funcionalidad compleja ...
Interfaces de usuario: componentes compuestos (II) TextView EditText con un Button ListView Spinner
Interfaces de usuario: componentes compuestos (III) DatePicker TimePicker AutoComplete
Interfaces de usuario: Menus <ul><li>Revelan la funcionalidad de la aplicación </li></ul><ul><li>Tres tipos de menús de ap...
Menus: Options Menu <ul><li>Contiene un máximo de 6 elementos </li></ul><ul><li>Si se necesitan más, se incluyen en el men...
Menus: Context Menu <ul><li>Conceptualmente similar al botón contextual del ratón en el PC </li></ul><ul><li>Presión sobre...
Menus: Submenus <ul><li>Se puede añadir dentro de cualquier menú, excepto de otro submenú </li></ul><ul><li>Se añade a niv...
Arquitectura de las aplicaciones: Seguridad y permisos <ul><li>Seguridad basada en el Kernel de Linux, cada paquete tiene ...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Entorno de desarrollo: emulador Android <ul><li>El SDK contiene un emulador para testear las aplicaciones desarrolladas </...
Entorno de desarrollo: DDMS <ul><li>Siglas de Dalvik Debug Monitor Server </li></ul><ul><li>Incluido en el SDK </li></ul><...
Entorno de desarrollo: Hello Android!  package com.android.helloandroid; import android.app.Activity; import android.os.Bu...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Almacenamiento de datos <ul><li>En aplicaciones típicas de escritorio, el sistema operativo ofrece el sistema de ficheros ...
Almacenamiento de datos: Preferences <ul><li>Técnica ágil para guardar datos simples de la aplicación </li></ul><ul><li>Lo...
Almacenamiento de datos: ficheros locales <ul><li>Por defecto, sólo la aplicación puede acceder a esos ficheros (permisos ...
Almacenamiento de datos: SQLite <ul><li>Cada base de datos es privada para la aplicación, pero pueden acceder todas las cl...
Almacenamiento de datos: SQLite (II) <ul><li>Base de datos Open Source </li></ul><ul><li>Cumplimenación de estándares de B...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Android como negocio: Android Market <ul><li>Almacén de software online para dispositivos Android </li></ul><ul><li>La apl...
Android como negocio: Android Market <ul><li>Se inicia el 28 de octubre de 2008 para disponer de un repositorio centraliza...
Android como negocio: Android Market
Android como negocio: licencia Android <ul><li>L a licencia Android se aplica a productos tanto gratuitos como de pago </l...
Android como negocio: Modelos de negocio (II) ¿Se gana de verdad dinero?
<ul><li>Versión Lite / Premium:   </li></ul><ul><ul><li>Desarrollar una aplicación gratuita con menor funcionalidad y otra...
<ul><li>Acciones formativas:   </li></ul><ul><ul><li>Cursos, webinars, laboratorios o charlas en eventos </li></ul></ul><u...
Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Ar...
Futuro de Android: versiones de Android <ul><li>Android 1.5 (CupCake) </li></ul><ul><ul><li>Release en abril de 2009 </li>...
<ul><li>Android 1.6 (Donut) </li></ul><ul><ul><li>Quick Search Box, caja de búsqueda en la pantalla de inicio para buscar ...
<ul><li>Android 2.0 (Eclair) </li></ul><ul><ul><li>Release Android 2.0 en noviembre de 2009 </li></ul></ul><ul><ul><li>Red...
<ul><li>Android 2.1 (Eclair) </li></ul><ul><ul><li>Release Android 2.1 enero de 2010 </li></ul></ul><ul><ul><li>Reconocimi...
<ul><li>Android 2.2 (Froyo) </li></ul><ul><ul><li>Anunciado en mayo de 2010 </li></ul></ul><ul><ul><li>Soporte para compil...
Futuro de Android: evolución de las versiones (julio 2010)
Futuro de Android: crecimiento de Android <ul><li>El primer trimestre de 2010, los dispositivos con Android se han vendido...
Futuro de Android: crecimiento de Android
Futuro de Android: comparativa de funcionalidad
Futuro de Android: tendencias de uso de SOs en smartphones
Futuro de Android: comparativa apps de pago vs gratuitas Gratis vs De Pago Mayo 2010 - Distimo
Futuro de Android: comparativa media de precios Comparativas de precio Precio medio app de pago  (Distimo Mayo 2010)
Futuro de Android: número de aplicaciones (junio 2010) Tamaño de las tiendas  Número total de apps 15 Junio 2010 - Diistimo
Futuro de Android: crecimiento de aplicaciones (mayo 2010) Crecimiento tiendas Mayo 2010 - Distimo
El precio se igualará Precio medio app de pago  Futuro de Android: estimaciones en precios
Futuro de Android: tendencias en el desarrollo
Upcoming SlideShare
Loading in...5
×

Curso Introducción a android

28,907

Published on

Curso introductorio al desarrollo en la plataforma Android.

Published in: Technology
19 Comments
48 Likes
Statistics
Notes
  • si pudieras mandármelo al correo te lo agradecería mucho, divad_1993@hotmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Estoy interesado en un curso de android pueden enviarla a hazaelnmtz@gmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • hola,estoy interesado en la diapositiva me la mandas al correo djdmelo@live.com
    gracias
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Estoy interesado en un curso de android... vivo en valencia, venezuela.. agradezco cualquier información .Pueden enviarla a
    mendez_fumeta@hotmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Amigo me ayudarias con las diapositivas porfavor me harias un gran favor te dejo mi email allierilink@hotmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
28,907
On Slideshare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
13
Comments
19
Likes
48
Embeds 0
No embeds

No notes for slide

Transcript of "Curso Introducción a android"

  1. 1. Introducción a Android
  2. 2. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  3. 3. Introducción a Android: un poco de historia
  4. 4. Introducción a Android: releases Versión Android Fecha release Android 1.5 (Cupcake) 30 abril de 2009 Android 1.6 (Donut) 15 septiembre de 2009 Android 2.0 (Eclair) 26 octubre de 2009 Android 2.2 (FroYo) Mayo de 2010 Gingerbread Finales de 2010
  5. 5. Introducción a Android: un poco de historia (II) Prototipo HTC Dream Nexus One Xperia x10 HTC Liquid GeeksPhone Samsung I7500
  6. 6. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  7. 7. Introducción a Android: ¿qué es Android? <ul><li>¿Qué es? </li></ul><ul><li>Conjunto de software libre que incluye sistema operativo, middleware y aplicaciones. </li></ul><ul><li>Su objetivo es abstraer el hardware y facilitar el desarrollo de nuevas aplicaciones. </li></ul><ul><li>SDK: soporte y API para desarrollo de aplicaciones Android. </li></ul><ul><li>¿Qué no es? </li></ul><ul><li>Únicamente un dispositivo móvil </li></ul><ul><li>Una implementación JAVA ME. </li></ul><ul><li>Una marca de telefonía ni depende de ningún fabricante </li></ul><ul><li>La respuesta de Google al IPhone. </li></ul>
  8. 8. Introducción a Android: ¿qué es Android? (II) <ul><li>Características: </li></ul><ul><li>Conectividad: </li></ul><ul><ul><li>Navegador integrado, basado en WebKit </li></ul></ul><ul><ul><li>Soporte telefonía GSM, depende del hardware del teléfono </li></ul></ul><ul><ul><li>Bluetooth, EDGE, 3G y WI-FI, depende del hardware del teléfono </li></ul></ul><ul><li>Software: </li></ul><ul><ul><li>Gráficos optimizados con OpenGL ES 1.0 (Android 2.0 OpenGL ES 2.0) </li></ul></ul><ul><ul><li>SQLite para el almacenamiento de datos estructurados (Bases de datos) </li></ul></ul><ul><ul><li>Entorno de desarrollo: emulador, debugger, herramientas de profiling </li></ul></ul><ul><li>Hardware y multimedia </li></ul><ul><ul><li>Soporte multimedia, tipo MPEG4, MP3, AMR, JPG, GIF... </li></ul></ul><ul><ul><li>Camara, GPS, Brújula, acelerómetro, depende del hardware del teléfono </li></ul></ul>
  9. 9. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  10. 10. Arquitectura Android
  11. 11. Arquitectura Android :Linux Kernel <ul><li>Versión 2.6 del kernel de Linux </li></ul><ul><li>Android aprovecha la seguridad, gestión de memoria, gestión de procesos, red y modelo de drivers </li></ul><ul><li>Capa de abstracción entre el hardware y el software </li></ul>
  12. 12. Arquitectura Android:Linux Kernel (II) <ul><li>Relación versiones Linux por versión Android </li></ul>Versión Android Versión Linux Android 1.5 (Cupcake) 2.6.27 Android 1.6 (Donut) 2.6.29 Android 2.0 (Eclair) 2.6.29 Android 2.2 (Froyo) 2.6.32 Gingerbread 2.6.33
  13. 13. Arquitectura Android :Android runtime <ul><li>Utiliza el Kernel de Linux para la ejecución de aplicaciones, procesos y gestión de memoria. </li></ul><ul><li>Formado por un conjunto de librerías base, para ofrecer funcionalidad elemental y de bajo nivel, escritas en C y C++ </li></ul><ul><li>Máquina virtual Dalvik, con código preparado teniendo en cuenta la duración de las baterías y la limitación de memoria. </li></ul>
  14. 14. Arquitectura Android : Dalvik Virtual Machine <ul><li>Condicionantes de los dispositivos móviles: </li></ul><ul><ul><li>Poca duración de la batería </li></ul></ul><ul><ul><li>Recursos muy escasos (memoria, cpu) </li></ul></ul><ul><ul><li>Limitaciones visuales (pantallas poca resolución) </li></ul></ul><ul><ul><li>Compartición y priorización de recursos </li></ul></ul><ul><li>Características de la DVM </li></ul><ul><ul><li>Usada en entornos con restricciones de memoria y procesador </li></ul></ul><ul><ul><li>Herramienta dx convierte .class (clase o aplicación en JAVA) a dex </li></ul></ul><ul><ul><li>Ejecuta aplicaciones en formato .dex (Dalvik Executable) </li></ul></ul><ul><ul><li>Permite la ejecución de varias instancias a la vez </li></ul></ul><ul><ul><li>No es una JVM, no ejecuta bytecode </li></ul></ul><ul><ul><li>Clases de Java ME classes, AWT o Swing no están soportadas </li></ul></ul>
  15. 15. Librerías Android (I) <ul><li>android.util: paquete de utilidades del core, clases de bajo nivel </li></ul><ul><li>android.os: acceso a servicios básicos del sistema operativo: (mensajes, reloj...) </li></ul><ul><li>android.text: mostrar y parsear (transformar) cadenas de texto </li></ul><ul><li>android.database: gestión de las DBs, cursores, etc </li></ul><ul><li>android.content: servicios para el acceso a distintos tipos de recursos </li></ul><ul><li>android.view: clases para la gestión de las vistas </li></ul><ul><li>android.widget: artefactos nativos de Android: listas, botones ... </li></ul><ul><li>com.google.android.maps: acceso a controles nativos para mapas </li></ul>
  16. 16. Librerías Android (II) <ul><li>android.app: acceso al contexto de la aplicación, Actividades y API de servicios </li></ul><ul><li>android.provider: acceso a ciertos Content Providers </li></ul><ul><li>android.telephony: acceso a los dispositivos del telefono para comunicación (call, send SMS...) </li></ul><ul><li>android.location: servicios basados en localización </li></ul><ul><li>android.media: grabación y reproducción de audio, video, imagenes.. </li></ul><ul><li>android.opengl: motor de renderización 3D </li></ul><ul><li>android.hardware: acceso a la cámara, acelerómetro, brújula... </li></ul><ul><li>Otras librerías: OpenGL, FreeType, SGL, libc, SQLite, SSL </li></ul>
  17. 17. Arquitectura Android : Framework de aplicaciones <ul><li>Proporciona una plataforma abierta para el desarrollo </li></ul><ul><li>El desarrollador puede acceder a los dispositivos, información de ubicación, ejecutar servicios, etc, a través del framework </li></ul><ul><li>Las aplicaciones del core utilizan este mismo framework </li></ul><ul><li>Views, Content Providers, Managers... </li></ul>
  18. 18. Arquitectura Android: Capa de aplicaciones <ul><li>En esta capa de ubicarán las aplicaciones desarrolladas por el desarrollador </li></ul><ul><li>Aplicaciones escritas en lenguaje JAVA </li></ul><ul><li>Aplicaciones incluidas por defecto: </li></ul><ul><ul><li>Cliente email </li></ul></ul><ul><ul><li>Gestor SMS </li></ul></ul><ul><ul><li>Navegador </li></ul></ul><ul><ul><li>Contactos </li></ul></ul>
  19. 19. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  20. 20. Arquitectura de las aplicaciones: Componentes de aplicación Principales componentes para el desarrollo de aplicaciones en Android:
  21. 21. Entorno de desarrollo: AndroidManifest.xml <ul><li>Cada aplicación debe tener un archivo AndroidManifest.xml en el directorio raíz que define los componentes de aplicación (Activities, Services, etc) que se verán a continuación </li></ul><ul><li>Da un nombre único a la aplicación, con formato package de Java (com.slashmobility.helloWorld ...) </li></ul><ul><li>Se declaran permisos y librerías necesarios para ejecutar la aplicación </li></ul><? xml version = &quot;1.0&quot; encoding = &quot;utf-8&quot; ?> < manifest xmlns:android = &quot;http://schemas.android.com/apk/res/android&quot; package = &quot;prueba.Android&quot; android:versionCode = &quot;1&quot; android:versionName = &quot;1.0&quot; > < application android:icon = &quot;@drawable/icon&quot; android:label = &quot;@string/app_name&quot; > < activity android:name = &quot;.HelloWord&quot; android:label = &quot;@string/app_name&quot; > < intent-filter > < action android:name = &quot;android.intent.action.MAIN&quot; /> < category android:name = &quot;android.intent.category.LAUNCHER&quot; /> </ intent-filter > </ activity > </ application > < uses-sdk android:minSdkVersion = &quot;7&quot; /> </ manifest >
  22. 22. <ul><li>Contiene una interfaz visual gráfica </li></ul><ul><li>Cada Activity debe tener una responsabilidad propia (alta cohesión, bajo acoplamiento) </li></ul><ul><li>Una aplicación Android puede contener varias Activity, una de ellas marcada como principal </li></ul><ul><li>Pueden usar componentes visuales, servicios, crear Intents, etc </li></ul><ul><li>Una Activity puede invocar a otra (subActivity) </li></ul>Arquitectura de las aplicaciones: Componente Activity
  23. 23. Ciclo de vida de la Activity <ul><li>ANR si la Activity no responde a un evento en 5 segundos </li></ul>Mensaje ANR
  24. 24. Arquitectura de las aplicaciones: Componente Service <ul><li>Se ejecutan en el background (no tienen UI). </li></ul><ul><li>Pueden actualizar Content Providers, lanzar Intents, notificaciones... </li></ul><ul><li>Tienen más prioridad que la Activity estándar </li></ul><ul><li>Aplicaciones que no necesitan interacción con el usuario son buenas candidatas a ser servicios </li></ul><ul><li>Location Manager, Media Controller, Notification Manager son ejemplos de Services. </li></ul>
  25. 25. Ciclo de vida del Service (según creación)
  26. 26. Arquitectura de las aplicaciones: Componente Content Provider <ul><li>Mecanismo genérico para compartir datos entre aplicaciones </li></ul><ul><li>Permite desacoplar la capa de aplicación de la capa de datos (data-source agnostic) </li></ul><ul><li>Accesible utilizando una simple URI </li></ul><ul><li>Browser: permite leer o modificar bookmarks, historial del navegador, o búsquedas web </li></ul><ul><li>CallLog: permite ver o modificar el historial de llamadas (entrantes o salientes) </li></ul><ul><li>Contacts: Recupera, modifica, o almacena detalles de contactos </li></ul>
  27. 27. Arquitectura de las aplicaciones: Intents <ul><li>Intent: usado como mecanismo para el paso de mensajes, declara la intención de realizar una acción </li></ul><ul><li>Utilizados para iniciar Activities o difundir mensajes. </li></ul><ul><li>Útiles para desacoplar componentes (no necesitan conocer implementaciones) </li></ul><ul><li>Existen acciones nativas que pueden ser lanzadas con los Intents (crean las Actividades para realizar esas acciones) </li></ul>
  28. 28. Arquitectura de las aplicaciones: Intents (II) <ul><li>Contienen : </li></ul><ul><ul><li>Action: La acción general a realizar, tal como ACTION_VIEW, ACTION_EDIT... </li></ul></ul><ul><ul><li>Data: Los datos sobre los que la acción debe operar. Estos se expresan en forma URI (Uniform Resource Identifier) </li></ul></ul><ul><li>Ejemplo de pares Action / Data: </li></ul><ul><ul><li>ACTION_VIEW: content://contacts/people/1 </li></ul></ul><ul><ul><li>ACTION_DIAL: tel://687123456 </li></ul></ul><ul><ul><li>ACTION_DIAL: content://contacts/people/2 </li></ul></ul>
  29. 29. Arquitectura de las aplicaciones: Intents (III) <ul><li>Atributos adicionales: </li></ul><ul><ul><li>Category: ofrece información adicional sobre el tipo de componente que debe recoger el Intent </li></ul></ul><ul><ul><li>Type: tipo MIME de los datos del Intent. No es necesario por defecto </li></ul></ul><ul><ul><li>Component: indica qué componente (clase) especificado en AndroidManifest.xml realizará la acción del Intent. Si se especifica, se entregará a una instancia de esa clase, si no Android buscará el componente que mejor considere. </li></ul></ul><ul><ul><li>Extras: información adicional, con pares key-value </li></ul></ul>
  30. 30. Arquitectura de las aplicaciones: Intents (V) <ul><li>En los Intents, se puede especificar el destinatario o no: </li></ul><ul><ul><li>Si se establece un destinatario (vía setComponent(ComponentName)), se le envía directamente. </li></ul></ul><ul><ul><li>Si no hay destinatario, se debe incluir suficiente información para que Android determine el mejor componente candidato para ejecutar el Intent </li></ul></ul><ul><li>Android utiliza los Intent-filters para buscar el mejor candidato </li></ul>
  31. 31. Intents: Acciones predeterminadas <ul><li>ACTION_ANSWER: Abre una Actividad para gestionar llamadas entrantes. </li></ul><ul><li>ACTION_CALL: Inicia una llamada utilizando el número pasado en el URI. </li></ul><ul><li>ACTION_DELETE: Borra una entrada de datos especificados en el URI. </li></ul><ul><li>ACTION_DIAL: Aparece el dialer con el número especificado. </li></ul><ul><li>ACTION_EDIT: Invoca una actividad para editar la información del URI. </li></ul><ul><li>ACTION_INSERT: inserta nuevos items (por ejemplo, lista de contactos) </li></ul><ul><li>ACTION_PICK: recupera información de un item </li></ul><ul><li>ACTION_SEARCH: Invoca una actividad para realizar búsquedas. </li></ul><ul><li>ACTION_SENDTO: envia un mensaje a un contacto. </li></ul><ul><li>ACTION_SEND: envía la información especificada en el URI. </li></ul><ul><li>ACTION_VIEW: petición para ver una información de la mejor manera posible. </li></ul><ul><li>ACTION_WEB_SEARCH: realiza búsquedas Web de la información del URI. </li></ul>
  32. 32. Arquitectura de las aplicaciones: Intent filters Intent Intent
  33. 33. Arquitectura de las aplicaciones: Broadcast Intents Intent Intents
  34. 34. Arquitectura de las aplicaciones: Componente Broadcast Receiver <ul><li>Broadcast Receivers son utilizados para escuchar Broadcast Intents. </li></ul><ul><li>Para utilizarlos, necesitan ser registrados (via código o AndroidManifest.xml) </li></ul><ul><li>Se utilizan Intent Filters para especificar que Intents se están esperando </li></ul>
  35. 35. Arquitectura de las aplicaciones: Resources <ul><li>Los recursos (Resources) son elementos externos que se quieren incluir y referenciar en la aplicación </li></ul><ul><li>Ejemplos: Imagenes, videos, audio, textos... </li></ul><ul><li>Los recursos de /res son accesibles a través de la clase R (compilada por Android automáticamente) con R.carpeta.recurso </li></ul><ul><li>Soporte para i18n </li></ul>
  36. 36. Arquitectura de las aplicaciones: Interfaces de usuario <ul><li>En Android, las interfaces se construyen utilizando los objetos View y ViewGroup </li></ul><ul><li>Las Views son el punto de interacción con el usuario </li></ul><ul><li>Las ViewGroup son una agrupación lógica de elementos visuales </li></ul>
  37. 37. Interfaces de usuario: Layouts <ul><li>También conocidos como Layout Managers </li></ul><ul><li>Son extensiones de ViewGroup </li></ul><ul><li>Su objetivo es controlar la posición de las Views hijas en la pantalla </li></ul><ul><li>Se pueden anidar, es decir, incluir Layouts dentro de Layouts </li></ul><ul><li>Android proporciona una serie de Layouts por defecto </li></ul>
  38. 38. Interfaces de usuario: Layouts (II) <ul><li>FrameLayout: el más simple, añade cada View hija en la esquina superior izquierda. Cada vez que se añade una, tapa la anterior, diseñado para mostrar un único elemento. </li></ul><ul><li>LinearLayout: añade cada View hija en linea recta (horizontal o vertical) </li></ul><ul><li>RelativeLayout: añade las Views relativamente unas a otras </li></ul><ul><li>TableLayout: añade las Views usando un grid (cuadrícula), a través de filas y columnas. Es similar a las tablas HTML. </li></ul><ul><li>AbsoluteLayout: añade las vistas dando coordenadas absolutas </li></ul>LinearLayout RelativeLayout AbsoluteLayout
  39. 39. Arquitectura de las aplicaciones: Notificaciones al usuario <ul><li>Algunos sucesos requieren ser notificados al usuario </li></ul><ul><li>Algunas notificaciones requieren respuesta del usuario, otras no </li></ul><ul><li>Ejemplos: batería baja, confirmación de recepción de un archivo, barras de progreso, etc </li></ul><ul><li>Para cada tipo de notificación se requerirá una manera concreta de informar al usuario: vibración, iluminación LEDs </li></ul>Toast Status Ba r Dialog
  40. 40. Interfaces de usuario: componentes compuestos (I) <ul><li>Normalmente hacen referencia a Views con funcionalidad compleja añadida </li></ul><ul><li>Para crear widgets, se pueden crear Views y añadirle métodos para la gestión de eventos, componentes visuales, etc </li></ul><ul><li>Se pueden extender (heredar) widgets de Android por defecto, sobreescribiendo la funcionalidad que se necesite </li></ul>
  41. 41. Interfaces de usuario: componentes compuestos (II) TextView EditText con un Button ListView Spinner
  42. 42. Interfaces de usuario: componentes compuestos (III) DatePicker TimePicker AutoComplete
  43. 43. Interfaces de usuario: Menus <ul><li>Revelan la funcionalidad de la aplicación </li></ul><ul><li>Tres tipos de menús de aplicación: </li></ul><ul><ul><li>Options Menu </li></ul></ul><ul><ul><li>Context Menu </li></ul></ul><ul><ul><li>Submenu </li></ul></ul>
  44. 44. Menus: Options Menu <ul><li>Contiene un máximo de 6 elementos </li></ul><ul><li>Si se necesitan más, se incluyen en el menú extendido (aparece al pusar el botón + ) </li></ul><ul><li>La primera vez que se abra, Android llamará al método onCreateOptionsMenu() de la Activity </li></ul><ul><li>Cuando el usuario presione una opción del menú, se invocará el método onOptionsItemSelected() </li></ul>
  45. 45. Menus: Context Menu <ul><li>Conceptualmente similar al botón contextual del ratón en el PC </li></ul><ul><li>Presión sobre la vista unos dos segundos </li></ul><ul><li>Al aparecer, se invocará el método onCreateContextMenu() </li></ul><ul><li>Al seleccionar, se invocará el método onContextItemSelected() </li></ul>
  46. 46. Menus: Submenus <ul><li>Se puede añadir dentro de cualquier menú, excepto de otro submenú </li></ul><ul><li>Se añade a nivel de código desde el método onCreateOptionsMenu() </li></ul><ul><li>Igual que en los Option Menu, al pulsar de invocará el método onOptionsItemSelected() </li></ul>
  47. 47. Arquitectura de las aplicaciones: Seguridad y permisos <ul><li>Seguridad basada en el Kernel de Linux, cada paquete tiene un único userID y procesos en sandbox, por lo que no pueden ser afectados entre sí </li></ul><ul><li>Los permisos son un mecanismo a nivel de aplicación, que permiten el acceso a un recurso determinado (Red, envío de SMS..) </li></ul><ul><li>Se pueden crear en AndroidManifest.xml </li></ul>< permission android:name=”com.paad.DETONATE_DEVICE” android:protectionLevel=”dangerous” android:label=”Self Destruct” android:description=”@string/detonate_description”> </ permission > Y se pueden asignar en el tag activity: < activity android:name=”.MyActivity” android:label=”@string/app_name” android:permission=”com.paad.DETONATE_DEVICE” > </ activity >
  48. 48. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  49. 49. Entorno de desarrollo: emulador Android <ul><li>El SDK contiene un emulador para testear las aplicaciones desarrolladas </li></ul><ul><li>Emula tanto hardware como software </li></ul><ul><li>El emulador soporta configuraciones AVD (Android Virtual Devices), para testear sobre distintas plataformas Android </li></ul>
  50. 50. Entorno de desarrollo: DDMS <ul><li>Siglas de Dalvik Debug Monitor Server </li></ul><ul><li>Incluido en el SDK </li></ul><ul><li>Proporciona información del estado de una instancia Android </li></ul><ul><li>Se conecta al ADB (Android Debugger) y monitoriza una instancia de máquina virtual </li></ul><ul><li>En IDE Eclipse se puede acceder de forma integrada </li></ul>
  51. 51. Entorno de desarrollo: Hello Android! package com.android.helloandroid; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(&quot;Hello, Android&quot;); setContentView(tv); } }
  52. 52. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  53. 53. Almacenamiento de datos <ul><li>En aplicaciones típicas de escritorio, el sistema operativo ofrece el sistema de ficheros para compartir datos entre aplicaciones </li></ul><ul><li>En Android, los ficheros son privados por aplicación </li></ul><ul><li>Para compartir información, se utilizan los Content Providers </li></ul>
  54. 54. Almacenamiento de datos: Preferences <ul><li>Técnica ágil para guardar datos simples de la aplicación </li></ul><ul><li>Los datos se almacenan en pares key/value </li></ul><ul><li>Usado típicamente para guardar las preferencias de la aplicación (fuentes, colores..) </li></ul>
  55. 55. Almacenamiento de datos: ficheros locales <ul><li>Por defecto, sólo la aplicación puede acceder a esos ficheros (permisos Unix) </li></ul><ul><li>Acceso similar a Java estándar, se deben crear inputs y outpus streams </li></ul><ul><li>Sólo se soportan archivos creados en la misma carpeta que la aplicación </li></ul><ul><li>Las aplicaciones van a la ruta: /data/app (gratuitas) y /data/app-private (de pago), las nuevas versiones soportan almacenamiento en la SDCard </li></ul>
  56. 56. Almacenamiento de datos: SQLite <ul><li>Cada base de datos es privada para la aplicación, pero pueden acceder todas las clases de esta </li></ul><ul><li>Android ofrece clases wrapper para almacenar la información en la base de datos (p.e. información de contactos) </li></ul><ul><li>Las bases de datos se almacenan en la carpeta /data/data/ nombre_package /databases </li></ul><ul><li>Para compartir la información utilizar ContentProviders </li></ul>
  57. 57. Almacenamiento de datos: SQLite (II) <ul><li>Base de datos Open Source </li></ul><ul><li>Cumplimenación de estándares de BDs </li></ul><ul><li>Ligera, no requiere excesivos recursos </li></ul><ul><li>Las querys (consultas) se devuelven como objetos Cursor, apuntando a la información </li></ul><ul><li>Utilizada en reproductores MP3, iPhone y iPods </li></ul><ul><li>Para información detallada: http://www.sqlite.org </li></ul>
  58. 58. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  59. 59. Android como negocio: Android Market <ul><li>Almacén de software online para dispositivos Android </li></ul><ul><li>La aplicación Market viene preinstalada ya en la mayoría de dispositivos </li></ul><ul><li>Permiten al usuario navegar y descargar aplicaciones desarrolladas por terceros </li></ul>
  60. 60. Android como negocio: Android Market <ul><li>Se inicia el 28 de octubre de 2008 para disponer de un repositorio centralizado de distribución de aplicaciones </li></ul><ul><li>Marzo 2009: 2.300 aplicaciones, Diciembre 2009: 20.000, abril 2010: unas 50.000, con un crecimiento cercano a las 10.000 aplicaciones mensuales </li></ul><ul><li>Actualmente se permite subir aplicaciones de pago o gratuitas </li></ul><ul><li>L icencia de desarrollador (25$ USD) </li></ul><ul><li>El control de aplicaciones no es tan estricto como otros repositorios (AppStore) </li></ul><ul><li>Los usuarios evalúan la calidad de la aplicación y esto influye en su posicionamiento visual </li></ul>
  61. 61. Android como negocio: Android Market
  62. 62. Android como negocio: licencia Android <ul><li>L a licencia Android se aplica a productos tanto gratuitos como de pago </li></ul><ul><li>En Android Market se pueden distribuir productos, no servicios </li></ul><ul><li>Las aplicaciones de pago pueden ser devueltas y reembolsadas en un plazo de 48 horas. </li></ul><ul><li>Las devoluciones no se permiten a datos facilmente copiables (fondos, tonos...) </li></ul><ul><li>Las gestiones de pago se realiza ba n a través de Google Checkout , aunque ya hay mas opciones. </li></ul><ul><li>70% de los ingresos para el desarrollador </li></ul>
  63. 63. Android como negocio: Modelos de negocio (II) ¿Se gana de verdad dinero?
  64. 64. <ul><li>Versión Lite / Premium: </li></ul><ul><ul><li>Desarrollar una aplicación gratuita con menor funcionalidad y otra de pago con toda la funcionalidad. </li></ul></ul><ul><li>Por publicidad : </li></ul><ul><ul><li>Poner la aplicación de manera gratuita en el market y poner un banner ( Admob , iAd , …) que reportará ingresos recurrentes en base al número de visitas que tenga la app </li></ul></ul><ul><ul><li>Modelo en crecimiento (Ingresos por publicidad respecto al totales 2009 = 7%, 2010 = 10%… 2013 = 25%) . </li></ul></ul><ul><li>Por subscripción : </li></ul><ul><ul><li>Desarrollar la app en base a un servicio y se nos paga una cuota periódica por disfrutar del servicio ofrecido. </li></ul></ul><ul><ul><li>Orientado a producto. ( mobile marketing ) </li></ul></ul>Android como negocio: Modelos de negocio (III)
  65. 65. <ul><li>Acciones formativas: </li></ul><ul><ul><li>Cursos, webinars, laboratorios o charlas en eventos </li></ul></ul><ul><li>Consultoría : </li></ul><ul><ul><li>Asesorar tecnológicamente a una empresa en cómo beneficiar se de las apps móviles. </li></ul></ul><ul><li>Ayuda en desarrollo: </li></ul><ul><ul><li>Prestar servicios de desarrollo a otra empresa u otro desarrollador que tenga un proyecto ya empezado. </li></ul></ul>
  66. 66. Índice <ul><li>Historia </li></ul><ul><li>¿Qué es Android? </li></ul><ul><li>Arquitectura del sistema </li></ul><ul><li>Arquitectura de las aplicaciones </li></ul><ul><li>Entorno de desarrollo </li></ul><ul><li>Almacenamiento de datos </li></ul><ul><li>Android como negocio </li></ul><ul><li>Futuro de Android </li></ul>
  67. 67. Futuro de Android: versiones de Android <ul><li>Android 1.5 (CupCake) </li></ul><ul><ul><li>Release en abril de 2009 </li></ul></ul><ul><ul><li>Rediseño completo de las interfaces visuales </li></ul></ul><ul><ul><li>Animación en transición entre ventanas </li></ul></ul><ul><ul><li>Mejoras en velocidad de navegador Web </li></ul></ul><ul><ul><li>AGPS </li></ul></ul><ul><ul><li>Copy/Paste dentro de una página web </li></ul></ul><ul><ul><li>Inclusión de teclado en pantalla con soporte para orientación vertical y horizontal </li></ul></ul>
  68. 68. <ul><li>Android 1.6 (Donut) </li></ul><ul><ul><li>Quick Search Box, caja de búsqueda en la pantalla de inicio para buscar en distintas fuentes (contactos, historial navegador...) </li></ul></ul><ul><ul><li>Optimización en la cámara </li></ul></ul><ul><ul><li>Conexión VPN y 802.1x </li></ul></ul><ul><ul><li>Pantalla para la gestión de batería y aplicaciones </li></ul></ul><ul><ul><li>Aplicaciones de Android Market ordenadas por categoría, permite consultar actualizaciones </li></ul></ul><ul><ul><li>Motor para convertir de texto a voz </li></ul></ul>Futuro de Android: versiones de Android
  69. 69. <ul><li>Android 2.0 (Eclair) </li></ul><ul><ul><li>Release Android 2.0 en noviembre de 2009 </li></ul></ul><ul><ul><li>Rediseño interfaz de navegador y soporte para HTML5 </li></ul></ul><ul><ul><li>Cámara con zoom digital,modo scene, balance de blanco y efectos de color. </li></ul></ul><ul><ul><li>Mejoras en el teclado virtual </li></ul></ul><ul><ul><li>Soporte para nuevas resoluciones de pantalla </li></ul></ul><ul><ul><li>Bluetooth 2.1 </li></ul></ul><ul><ul><li>Soporte nativo para Facebook </li></ul></ul><ul><ul><li>Mejoras en Google Maps </li></ul></ul>Futuro de Android: versiones de Android
  70. 70. <ul><li>Android 2.1 (Eclair) </li></ul><ul><ul><li>Release Android 2.1 enero de 2010 </li></ul></ul><ul><ul><li>Reconocimiento de voz en cualquier campo </li></ul></ul><ul><ul><li>Mejoras en el teclado virtual </li></ul></ul><ul><ul><li>Galerías 3D </li></ul></ul><ul><ul><li>Uso de “pellizcar” en galerías y Google Maps </li></ul></ul><ul><ul><li>Mejoras en Google Maps </li></ul></ul><ul><ul><li>Google Goggles para realidad aumentada </li></ul></ul><ul><ul><li>Mejoras en la optimización de la batería </li></ul></ul>Futuro de Android: versiones de Android
  71. 71. <ul><li>Android 2.2 (Froyo) </li></ul><ul><ul><li>Anunciado en mayo de 2010 </li></ul></ul><ul><ul><li>Soporte para compilador JIT en Dalvik para optimizar el rendimiento </li></ul></ul><ul><ul><li>Instalación de aplicaciones en la tarjeta SD, actualización automática de aplicaciones </li></ul></ul><ul><ul><li>Soporte integrado de Flash 10.1 </li></ul></ul><ul><ul><li>Modo hotspot con el que el terminal puede crear una nueva red inalambrica y permitir conexiones </li></ul></ul>Futuro de Android: versiones de Android
  72. 72. Futuro de Android: evolución de las versiones (julio 2010)
  73. 73. Futuro de Android: crecimiento de Android <ul><li>El primer trimestre de 2010, los dispositivos con Android se han vendido más con respecto a IPhone (28% vs 21%) </li></ul><ul><li>El mercado sigue dominado por los dispositivos BlackBerry, con un 36% </li></ul><ul><li>Actualmente, hay unas 38000 aplicaciones disponibles en Android, 1014 para WindowsMobile y unas 200000 para IPhone </li></ul><ul><li>Un total de unos 400 millones de descargas para Android y unos 4000 millones para IPhone </li></ul><ul><li>La Developer Revenue Share es de aproximadamente 70% tanto para Android, WindowsMobile y IPhone </li></ul><ul><li>El alta para desarrollar sobre Android es de 25$, para desarrollar sobre WindowsMobile y IPhone de 99$ </li></ul>
  74. 74. Futuro de Android: crecimiento de Android
  75. 75. Futuro de Android: comparativa de funcionalidad
  76. 76. Futuro de Android: tendencias de uso de SOs en smartphones
  77. 77. Futuro de Android: comparativa apps de pago vs gratuitas Gratis vs De Pago Mayo 2010 - Distimo
  78. 78. Futuro de Android: comparativa media de precios Comparativas de precio Precio medio app de pago (Distimo Mayo 2010)
  79. 79. Futuro de Android: número de aplicaciones (junio 2010) Tamaño de las tiendas Número total de apps 15 Junio 2010 - Diistimo
  80. 80. Futuro de Android: crecimiento de aplicaciones (mayo 2010) Crecimiento tiendas Mayo 2010 - Distimo
  81. 81. El precio se igualará Precio medio app de pago Futuro de Android: estimaciones en precios
  82. 82. Futuro de Android: tendencias en el desarrollo

×