Your SlideShare is downloading. ×

Curso introducción a Android

5,466

Published on

Curso para adquirir las nociones necesarias para entender la plataforma Android así como nociones de los distintos modelos de negocio utilizados.

Curso para adquirir las nociones necesarias para entender la plataforma Android así como nociones de los distintos modelos de negocio utilizados.

Published in: Technology
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,466
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
11
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introducción a Android
  • 2. Índice
    • Historia
    • ¿Qué es Android?
    • Arquitectura del sistema
    • Arquitectura de las aplicaciones
    • Entorno de desarrollo
    • Almacenamiento de datos
  • 3. Introducción a Android: un poco de historia
  • 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. Introducción a Android: un poco de historia (II) Prototipo HTC Dream Nexus One Xperia x10 HTC Liquid GeeksPhone Samsung I7500
  • 6. Índice
    • Historia
    • ¿Qué es Android?
    • Arquitectura del sistema
    • Arquitectura de las aplicaciones
    • Entorno de desarrollo
    • Almacenamiento de datos
  • 7. Introducción a Android: ¿qué es Android?
    • ¿Qué es?
    • Conjunto de software libre que incluye sistema operativo, middleware y aplicaciones.
    • Su objetivo es abstraer el hardware y facilitar el desarrollo de nuevas aplicaciones.
    • SDK: soporte y API para desarrollo de aplicaciones Android.
    • ¿Qué no es?
    • Únicamente un dispositivo móvil
    • Una implementación JAVA ME.
    • Una marca de telefonía ni depende de ningún fabricante
    • La respuesta de Google al IPhone.
  • 8. Introducción a Android: ¿qué es Android? (II)
    • Características:
    • Conectividad:
      • Navegador integrado, basado en WebKit
      • Soporte telefonía GSM, depende del hardware del teléfono
      • Bluetooth, EDGE, 3G y WI-FI, depende del hardware del teléfono
    • Software:
      • Gráficos optimizados con OpenGL ES 1.0 (Android 2.0 OpenGL ES 2.0)
      • SQLite para el almacenamiento de datos estructurados (Bases de datos)
      • Entorno de desarrollo: emulador, debugger, herramientas de profiling
    • Hardware y multimedia
      • Soporte multimedia, tipo MPEG4, MP3, AMR, JPG, GIF...
      • Camara, GPS, Brújula, acelerómetro, depende del hardware del teléfono
  • 9. Índice
    • Historia
    • ¿Qué es Android?
    • Arquitectura del sistema
    • Arquitectura de las aplicaciones
    • Entorno de desarrollo
    • Almacenamiento de datos
  • 10. Arquitectura Android
  • 11. Arquitectura Android :Linux Kernel
    • Versión 2.6 del kernel de Linux
    • Android aprovecha la seguridad, gestión de memoria, gestión de procesos, red y modelo de drivers
    • Capa de abstracción entre el hardware y el software
  • 12. Arquitectura Android:Linux Kernel (II)
    • Relación versiones Linux por versión Android
    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. Arquitectura Android :Android runtime
    • Utiliza el Kernel de Linux para la ejecución de aplicaciones, procesos y gestión de memoria.
    • Formado por un conjunto de librerías base, para ofrecer funcionalidad elemental y de bajo nivel, escritas en C y C++
    • Máquina virtual Dalvik, con código preparado teniendo en cuenta la duración de las baterías y la limitación de memoria.
  • 14. Arquitectura Android : Dalvik Virtual Machine
    • Condicionantes de los dispositivos móviles:
      • Poca duración de la batería
      • Recursos muy escasos (memoria, cpu)
      • Limitaciones visuales (pantallas poca resolución)
      • Compartición y priorización de recursos
    • Características de la DVM
      • Usada en entornos con restricciones de memoria y procesador
      • Herramienta dx convierte .class (clase o aplicación en JAVA) a dex
      • Ejecuta aplicaciones en formato .dex (Dalvik Executable)
      • Permite la ejecución de varias instancias a la vez
      • No es una JVM, no ejecuta bytecode
      • Clases de Java ME, AWT o Swing no están soportadas
  • 15. Librerías Android (I)
    • android.util: paquete de utilidades del core, clases de bajo nivel
    • android.os: acceso a servicios básicos del sistema operativo: (mensajes, reloj...)
    • android.text: mostrar y parsear (transformar) cadenas de texto
    • android.database: gestión de las DBs, cursores, etc
    • android.content: servicios para el acceso a distintos tipos de recursos
    • android.view: clases para la gestión de las vistas
    • android.widget: artefactos nativos de Android: listas, botones ...
    • com.google.android.maps: acceso a controles nativos para mapas
  • 16. Librerías Android (II)
    • android.app: acceso al contexto de la aplicación, Actividades y API de servicios
    • android.provider: acceso a ciertos Content Providers
    • android.telephony: acceso a los dispositivos del telefono para comunicación (call, send SMS...)
    • android.location: servicios basados en localización
    • android.media: grabación y reproducción de audio, video, imagenes..
    • android.opengl: motor de renderización 3D
    • android.hardware: acceso a la cámara, acelerómetro, brújula...
    • Otras librerías: OpenGL, FreeType, SGL, libc, SQLite, SSL
  • 17. Arquitectura Android : Framework de aplicaciones
    • Proporciona una plataforma abierta para el desarrollo
    • El desarrollador puede acceder a los dispositivos, información de ubicación, ejecutar servicios, etc, a través del framework
    • Las aplicaciones del core utilizan este mismo framework
    • Views, Content Providers, Managers...
  • 18. Arquitectura Android: Capa de aplicaciones
    • En esta capa de ubicarán las aplicaciones desarrolladas por el desarrollador
    • Aplicaciones escritas en lenguaje JAVA
    • Aplicaciones incluidas por defecto:
      • Cliente email
      • Gestor SMS
      • Navegador
      • Contactos
    .JAVA .CLASS .DEX javac dx JVM DVM
  • 19. Índice
    • Historia
    • ¿Qué es Android?
    • Arquitectura del sistema
    • Arquitectura de las aplicaciones
    • Entorno de desarrollo
    • Almacenamiento de datos
  • 20. Arquitectura de las aplicaciones: Componentes de aplicación Principales componentes para el desarrollo de aplicaciones en Android:
  • 21. Entorno de desarrollo: AndroidManifest.xml
    • 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
    • Da un nombre único a la aplicación, con formato package de Java (com.slashmobility.helloWorld ...)
    • Se declaran permisos y librerías necesarios para ejecutar la aplicación
    <? 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.
    • Contiene una interfaz visual gráfica
    • Cada Activity debe tener una responsabilidad propia (alta cohesión, bajo acoplamiento)
    • Una aplicación Android puede contener varias Activity, una de ellas marcada como principal
    • Pueden usar componentes visuales, servicios, crear Intents, etc
    • Una Activity puede invocar a otra (subActivity)
    Arquitectura de las aplicaciones: Componente Activity
  • 23. Ciclo de vida de la Activity
    • ANR si la Activity no responde a un evento en 5 segundos
    Mensaje ANR Estados de la Activity
  • 24. Arquitectura de las aplicaciones: Componente Service
    • Se ejecutan en el background (no tienen UI).
    • Pueden actualizar Content Providers, lanzar Intents, notificaciones...
    • Tienen más prioridad que la Activity estándar
    • Aplicaciones que no necesitan interacción con el usuario son buenas candidatas a ser servicios
    • Location Manager, Media Controller, Notification Manager son ejemplos de Services.
  • 25. Ciclo de vida del Service (según creación)
  • 26. Arquitectura de las aplicaciones: Componente Content Provider
    • Mecanismo genérico para compartir datos entre aplicaciones
    • Permite desacoplar la capa de aplicación de la capa de datos (data-source agnostic)
    • Accesible utilizando una simple URI
    • Browser: permite leer o modificar bookmarks, historial del navegador, o búsquedas web
    • CallLog: permite ver o modificar el historial de llamadas (entrantes o salientes)
    • Contacts: Recupera, modifica, o almacena detalles de contactos
  • 27. Arquitectura de las aplicaciones: Intents
    • Intent: usado como mecanismo para el paso de mensajes, declara la intención de realizar una acción
    • Utilizados para iniciar Activities o difundir mensajes.
    • Útiles para desacoplar componentes (no necesitan conocer implementaciones)
    • Existen acciones nativas que pueden ser lanzadas con los Intents (crean las Actividades para realizar esas acciones)
  • 28. Arquitectura de las aplicaciones: Intents (II)
    • Contienen :
      • Action: La acción general a realizar, tal como ACTION_VIEW, ACTION_EDIT...
      • Data: Los datos sobre los que la acción debe operar. Estos se expresan en forma URI (Uniform Resource Identifier)
    • Ejemplo de pares Action / Data:
      • ACTION_VIEW: content://contacts/people/1
      • ACTION_DIAL: tel://687123456
      • ACTION_DIAL: content://contacts/people/2
  • 29. Arquitectura de las aplicaciones: Intents (III)
    • Atributos adicionales:
      • Category: ofrece información adicional sobre el tipo de componente que debe recoger el Intent
      • Type: tipo MIME de los datos del Intent. No es necesario por defecto
      • 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.
      • Extras: información adicional, con pares key-value
  • 30. Arquitectura de las aplicaciones: Intents (V)
    • En los Intents, se puede especificar el destinatario o no:
      • Si se establece un destinatario (vía setComponent(ComponentName)), se le envía directamente.
      • Si no hay destinatario, se debe incluir suficiente información para que Android determine el mejor componente candidato para ejecutar el Intent
    • Android utiliza los Intent-filters para buscar el mejor candidato
  • 31. Intents: Acciones predeterminadas
    • ACTION_ANSWER: Abre una Actividad para gestionar llamadas entrantes.
    • ACTION_CALL: Inicia una llamada utilizando el número pasado en el URI.
    • ACTION_DELETE: Borra una entrada de datos especificados en el URI.
    • ACTION_DIAL: Aparece el dialer con el número especificado.
    • ACTION_EDIT: Invoca una actividad para editar la información del URI.
    • ACTION_INSERT: inserta nuevos items (por ejemplo, lista de contactos)
    • ACTION_PICK: recupera información de un item
    • ACTION_SEARCH: Invoca una actividad para realizar búsquedas.
    • ACTION_SENDTO: envia un mensaje a un contacto.
    • ACTION_SEND: envía la información especificada en el URI.
    • ACTION_VIEW: petición para ver una información de la mejor manera posible.
    • ACTION_WEB_SEARCH: realiza búsquedas Web de la información del URI.
  • 32. Arquitectura de las aplicaciones: Intent filters Intent Intent
  • 33. Arquitectura de las aplicaciones: Broadcast Intents Intent Intents
  • 34. Arquitectura de las aplicaciones: Componente Broadcast Receiver
    • Broadcast Receivers son utilizados para escuchar Broadcast Intents.
    • Para utilizarlos, necesitan ser registrados (via código o AndroidManifest.xml)
    • Se utilizan Intent Filters para especificar que Intents se están esperando
  • 35. Arquitectura de las aplicaciones: Resources
    • Los recursos (Resources) son elementos externos que se quieren incluir y referenciar en la aplicación
    • Ejemplos: Imagenes, videos, audio, textos...
    • Los recursos de /res son accesibles a través de la clase R (compilada por Android automáticamente) con R.carpeta.recurso
    • Soporte para i18n
  • 36. Arquitectura de las aplicaciones: Interfaces de usuario
    • En Android, las interfaces se construyen utilizando los objetos View y ViewGroup
    • Las Views son el punto de interacción con el usuario
    • Las ViewGroup son una agrupación lógica de elementos visuales
  • 37. Interfaces de usuario: Layouts
    • También conocidos como Layout Managers
    • Son extensiones de ViewGroup
    • Su objetivo es controlar la posición de las Views hijas en la pantalla
    • Se pueden anidar, es decir, incluir Layouts dentro de Layouts
    • Android proporciona una serie de Layouts por defecto
  • 38. Interfaces de usuario: Layouts (II)
    • 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.
    • LinearLayout: añade cada View hija en linea recta (horizontal o vertical)
    • RelativeLayout: añade las Views relativamente unas a otras
    • TableLayout: añade las Views usando un grid (cuadrícula), a través de filas y columnas. Es similar a las tablas HTML.
    • AbsoluteLayout: añade las vistas dando coordenadas absolutas
    LinearLayout RelativeLayout AbsoluteLayout
  • 39. Arquitectura de las aplicaciones: Notificaciones al usuario
    • Algunos sucesos requieren ser notificados al usuario
    • Algunas notificaciones requieren respuesta del usuario, otras no
    • Ejemplos: batería baja, confirmación de recepción de un archivo, barras de progreso, etc
    • Para cada tipo de notificación se requerirá una manera concreta de informar al usuario: vibración, iluminación LEDs
    Toast Status Ba r Dialog
  • 40. Interfaces de usuario: componentes compuestos (I)
    • Normalmente hacen referencia a Views con funcionalidad compleja añadida
    • Para crear widgets, se pueden crear Views y añadirle métodos para la gestión de eventos, componentes visuales, etc
    • Se pueden extender (heredar) widgets de Android por defecto, sobreescribiendo la funcionalidad que se necesite
  • 41. Interfaces de usuario: componentes compuestos (II) TextView EditText con un Button ListView Spinner
  • 42. Interfaces de usuario: componentes compuestos (III) DatePicker TimePicker AutoComplete
  • 43. Interfaces de usuario: Menus
    • Revelan la funcionalidad de la aplicación
    • Tres tipos de menús de aplicación:
      • Options Menu
      • Context Menu
      • Submenu
  • 44. Menus: Options Menu
    • Contiene un máximo de 6 elementos
    • Si se necesitan más, se incluyen en el menú extendido (aparece al pusar el botón + )
    • La primera vez que se abra, Android llamará al método onCreateOptionsMenu() de la Activity
    • Cuando el usuario presione una opción del menú, se invocará el método onOptionsItemSelected()
  • 45. Menus: Context Menu
    • Conceptualmente similar al botón contextual del ratón en el PC
    • Presión sobre la vista unos dos segundos
    • Al aparecer, se invocará el método onCreateContextMenu()
    • Al seleccionar, se invocará el método onContextItemSelected()
  • 46. Menus: Submenus
    • Se puede añadir dentro de cualquier menú, excepto de otro submenú
    • Se añade a nivel de código desde el método onCreateOptionsMenu()
    • Igual que en los Option Menu, al pulsar de invocará el método onOptionsItemSelected()
  • 47. Arquitectura de las aplicaciones: Seguridad y permisos
    • 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í
    • Los permisos son un mecanismo a nivel de aplicación, que permiten el acceso a un recurso determinado (Red, envío de SMS..)
    • Se pueden crear en AndroidManifest.xml
    < 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. Índice
    • Historia
    • ¿Qué es Android?
    • Arquitectura del sistema
    • Arquitectura de las aplicaciones
    • Entorno de desarrollo
    • Almacenamiento de datos
  • 49. Entorno de desarrollo: emulador Android
    • El SDK contiene un emulador para testear las aplicaciones desarrolladas
    • Emula tanto hardware como software
    • El emulador soporta configuraciones AVD (Android Virtual Devices), para testear sobre distintas plataformas Android
  • 50. Entorno de desarrollo: DDMS
    • Siglas de Dalvik Debug Monitor Server
    • Incluido en el SDK
    • Proporciona información del estado de una instancia Android
    • Se conecta al ADB (Android Debugger) y monitoriza una instancia de máquina virtual
    • En IDE Eclipse se puede acceder de forma integrada
  • 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. Índice
    • Historia
    • ¿Qué es Android?
    • Arquitectura del sistema
    • Arquitectura de las aplicaciones
    • Entorno de desarrollo
    • Almacenamiento de datos
  • 53. Almacenamiento de datos
    • En aplicaciones típicas de escritorio, el sistema operativo ofrece el sistema de ficheros para compartir datos entre aplicaciones
    • En Android, los ficheros son privados por aplicación
    • Para compartir información, se utilizan los Content Providers
  • 54. Almacenamiento de datos: Preferences
    • Técnica ágil para guardar datos simples de la aplicación
    • Los datos se almacenan en pares key/value
    • Usado típicamente para guardar las preferencias de la aplicación (fuentes, colores..)
  • 55. Almacenamiento de datos: ficheros locales
    • Por defecto, sólo la aplicación puede acceder a esos ficheros (permisos Unix)
    • Acceso similar a Java estándar, se deben crear inputs y outpus streams
    • Sólo se soportan archivos creados en la misma carpeta que la aplicación
    • Las aplicaciones van a la ruta: /data/app (gratuitas) y /data/app-private (de pago), las nuevas versiones soportan almacenamiento en la SDCard
  • 56. Almacenamiento de datos: SQLite
    • Cada base de datos es privada para la aplicación, pero pueden acceder todas las clases de esta
    • Android ofrece clases wrapper para almacenar la información en la base de datos (p.e. información de contactos)
    • Las bases de datos se almacenan en la carpeta /data/data/ nombre_package /databases
    • Para compartir la información utilizar ContentProviders
  • 57. Almacenamiento de datos: SQLite (II)
    • Base de datos Open Source
    • Cumplimenación de estándares de BDs
    • Ligera, no requiere excesivos recursos
    • Las querys (consultas) se devuelven como objetos Cursor, apuntando a la información
    • Utilizada en reproductores MP3, iPhone y iPods
    • Para información detallada: http://www.sqlite.org

×