Introducción a Android para desarrolladores Java

Embed Size (px)

Citation preview

Introduccin a Android para desarrolladores JavaCsar Surez Ortega

Presentacin breve.

Vista general de Android.

No pretende ser un curso de programacin en Android.

ndice

Introduccin y conceptos bsicos

Android VS. Java

Desarrollando en Android

Futuro de Android y cierre

Apuntar que hay ms dispositivos con Android (electrodomsticos, coches, netbooks, ).

Dalvik optimizado para dispositivos con poca memoria.

Dalvik no es exactamente una JVM porque no ejecuta Java bytecode. Pasa los .class a .dex

Introduccin&conceptos bsicos

Qu es Android?

Sistema operativo optimizado para dispositivos mviles.Smartphones

Tablets

...

Basado en LinuxVersin modificada del kernel de Linux.

Aplicaciones nativas programadas en Java.Mquina virtual propia: Dalvik.

Apuntar que hay ms dispositivos con Android (electrodomsticos, coches, netbooks, ).

Dalvik optimizado para dispositivos con poca memoria.

Dalvik no es exactamente una JVM porque no ejecuta Java bytecode. Pasa los .class a .dex

Historia de Android

2003: Se funda Android Inc., que comienza a desarrollar un OS para dispositivos mviles.

2005: Google compra Android Inc.

2007: Se crea la Open Handset Alliance para crear estndares abiertos para dispositivos mviles. Su primer proyecto es Android.Google, Broadcom, HTC, Sony, Intel, Samsung, Texas Instruments, Vodafone, Nvidia, Motorola,

2008: Se libera el cdigo fuente de Android 1.0 (licencia Apache).

Destacar que en la Open Handset Alliance hay todo tipo de companas: hardware, software, telecomunicaciones,

Arquitectura de Android

Kernel de Linux modificado, con optimizaciones y muchos drivers. Se supone que el desarrollo del kernel de Linux clsico y de Android terminarn convergiendo.

Por debajo de las APIs que vamos a usar, se encuentran las libreras del core, muchas adicionales y Dalvik.

Por encima las libreras con las que trabajaremos al programar una aplicacin para Android.

Las aplicaciones Android se apoyan sobre esta arquitectura igual que las que hagamos nosotros.

Desde el punto de vista del programador...

Java (aunque no se usa la JVM de Oracle!).

Posibilidad de programar en Linux, Mac y Windows.

Mltiples APIs para controlar diversas caractersticas comunes en los dispositivos Android programticamente.

XML para definir interfaces de usuario.

Emuladores para probar nuestras aplicaciones.

Eclipse + Plugin Android = Integracin perfecta.

Java es el lenguaje ms usado segn varios estudios.

Al contrario que en iOS, que slo se puede con Mac.

Ya hemos visto las APIs que ofrece.

Ya veremos lo de los XML, emuladores y la integracin.

En general, Android ofrece un ecosistema de desarrollo bastante abierto (multiplataforma)y familiar para el desarrollador (Java, Eclipse, ).

Android VS. Java

Android VS. Java

Paquetes estndar soportados :)

java.iojava.langjava.mathjava.netjava.nio

java.utiljavax.cryptojavax.netjavax.securityjavax.sound

java.securityjava.sqljava.textjavax.xml.parsersorg.w3c.dom

org.xml.saxjavax.sql

Pasar rpido.

Android VS. Java

Paquetes no soportados :(

java.appletjava.awtjava.beansjava.lang.managementjava.rmi

javax.accessibilityjavax.activityjavax.imageiojavax.managementjavax.naming

javax.printjavax.rmijavax.security.auth.kerberosjavax.security.auth.spijavax.security.sasl

javax.swingjavax.transactionjava.xmlorg.ietf.*org.omg.*

Destacar que RMI no est. La conectividad entre aplicaciones y/o servicios est planteada de otra forma, como se ver ms adelante.

Destacar tambin que no est ni AWT ni SWING. Nuevo framework para interfaces.

Android VS. Java

Paquetes de terceros aadidos:org.apache.commons.codec

org.apache.commons.httpclient

org.bluez

org.json

Soporta JDBC, pero apenas es usable:Los drivers de Java no estn soportados.

Drivers con soporte a Android incompletos.

Se recomienda recubrir nuestras BDs con web services.

Bluez = Bluetooth

Codecs multimedia.

Aadir en el core caractersticas de uso comn en dispositivos mviles.

Importancia de la comunicacin por servicios web con HttpClient (permite lanzar peticiones HTTP y obtener sus resultados) y el parser de JSON (formato muy usado en este tipo de comunicacin).

Android VS. Java

Libreras extraAlmacenamiento (SQLite).

Internet (WebKit).

Multimedia (Cmaras).

GPS.

Servicios telefnicos (llamadas, SMS, ).

Mucho ms!

Como dijimos antes, aparte de las libreras core, se aaden ms libreras muy usadas en la programacin de apps mviles.

SQLite: Bases de datos en un fichero.

Varias de red y adems el motor de renderizado WebKit (usado por Chrome, Safari, ).

Varias librerias de multimedia. Destacan las que nos permiten interactuar con las cmaras.

Casi todos los dispositivos Android cuentan con GPS.

Obviamente, libreras para interactuar con el telfono.

Nuevos conceptos

Activities (~= Ventanas).

IntentsMensajes que invocan acciones (activities, services)

Categorizables y parametrizables.

Content providersCuando varias aplicaciones acceden a los mismos datos.

Ej. URI: content://com.example.transportationprovider/trains/122

Services: Aplicaciones en segundo plano.

Nuevos conceptos que introduce Android:Activities vienen a ser las ventanas en Android.

Intents son bsicos, ya que permiten abrir una Activity desde otra. Muy flexibles y ofrecen muchas posibilidades.

Es una interfaz de acceso a datos que ofrece una aplicacin Android. Android lo usa en sus aplicaciones por defecto (obtener contactos, SMSs, historial de llamadas, ).

No todo son Activities. Son muy importantes los Services (clientes de correo, Twitter, ).

Se pueden definir en XML (similar a Adobe Flex o Mozilla XUL).

Se pueden usar slo con Java.

Se puede acceder a los elementos de forma similar a como se hace en Javascript en el DOM (Funcin Activiy.findViewById(int)).

UI Framework

Cdigo

UI

Framework para hacer interfaces totalmente nuevo.

Se definen las interfaces en un XML, tanto los componentes, como la distribucin de estos (mediante Layouts, un poco al estilo de Swing).

Forma de acceder a los componentes sencilla y limpia. Inspirado en JavaScript.

Desarrollando en Android

Desarrollando en Android

Se puede programar sin IDE.

La mejor opcin: Eclipse + Plugin Android.

Mala integracin con NetBeans.

Nuevos IDEs: Meme IDE.

Plugins para muchos IDEs: JCreator, IntelliJ.

AppInventor: Hacer aplicaciones sin programar.

AppAccelerator: Framework JavaScript para aplicaciones par iPhone, Android y Blackberry.

Se puede programar slo con un editor de texto plano y una consola.

Eclipse es la mejor opcin: Integracin perfecta en un IDE muy usado.

NetBeans un paso por detrs. Para la preparacin de esta charla no fui capaz de echarlo a andar.

Nuevos IDEs con caractersticas interesantes, como un builder para interfaces.

Soporte en otros IDEs.

Otros experimentos:AppInventor, una aplicacin que te permite crear apps en Android visualmente.

Escribes el cdigo 1 vez en JavaScript y puedes obtener aplicaciones nativas para iOS, Android y Blackberry. Fuerte crecimiento, IDE propio en camino (basado en Aptana).

Emulador

Emulador multiplataforma (viene con el SDK).

No hace falta tener un Android para probar las aplicaciones.

Permite configurar distintas versiones de la API, distintas caractersticas de nuestro dispositivo (p.e. con o sin GPS, tamaos de pantalla, ).

Lo veremos ms adelante.

Y ahora algo prctico :)

Mostrar Eclipse, los emuladores, la estructura de carpetas,

Ensear la aplicacin Now.

Ensear ForvoDroid, especialmente la parte de la comunicacin con la API REST de Forvo.

Terminando...

Mostrar Eclipse, los emuladores, la estructura de carpetas,

Ensear la aplicacin Now.

Ensear ForvoDroid, especialmente la parte de la comunicacin con la API REST de Forvo.

El futuro de Android

Mejorando lo presente.Multitarea.

Compatibilidad entre terminales mviles.

Android 3.X: Casi exclusivo para tablets.

Android 4.0: Unificar Android 2.X y 3.X.

Open Accesory Library: Android + Arduino.

Android@Home: Android + Domtica.

Prximas versines tienen como objetivo mejorar la multitarea y solucionar la fragmentacin que han provocado los fabricantes y compaas de telecomunicaciones.

Android 3 ya en el mercado. Exclusivo para tablets, aunque hay gente que ha conseguido adaptarlo a telfonos mviles.

Comunicar dispositivos Android con hardware programado con una variante de Arduino.

Controlar tu casa desde Android con electrodomsticos preparados para ello.

Si queris saber ms...

http://developers.android.com

http://xda-developers.com

Beginning Android 2 de Mark Murphy.

Pro Android 2 de Dave MacLean.

Hello, Android: Introducing Google's Mobile Development Platform (Pragmatic Programmers) de Ed Burnette

Documentacin oficial de Android.

Foro de programacin.

Libro de iniciacin muy bueno.

Contunuacin del anterior.

Muy famoso el ltimo.

FINPreguntas?

Muokkaa otsikon tekstimuotoa napsauttamalla

Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso