C´omputo M´ovil: Introducci´on a Android
Dr. Gregorio Toscano Pulido
Centro de Investigaci´on y de Estudios Avanzados del IPN.
Laboratorio de Tecnolog´ıas de Informaci´on
logo
Historia
Octubre de 2003: Andy Rubin y otros cofundadores crean Android Inc., una peque˜na compa˜n´ıa cuya finalidad era el desarrollo de aplicaciones para dispositivos m´oviles, cuyos integrantes ten´ıan una gran experiencia en plataformas web, telecomunicaciones y aplicaciones m´oviles.
Junio de 2005: Google compra Android Inc. Andy Rubin se convierte en el director de la divisi´on de plataformas m´oviles de Google.
Un buen tiempo: Se hicieron varios prototipos. La mayor´ıa eran nada atractivos (ver http://www.marcelor.com/
wp-content/uploads/google-android-prototipo.jpg).
Dr. Gregorio Toscano Pulido Plataforma S60
Historia
Noviembre de 2007: Se anuncia la creaci´on de la Open Handset Alliance, una organizaci´on cuyo objetivo es la difusi´on de la plataforma m´ovil Android. Fabricantes de equipos y prestadores de servicios de tecnolog´ıa que unieron fuerzas para lanzar el primer sistema operativo abierto para m´oviles, que no estar´ıa atado a una marca o equipo, sino que gracias a su kernel de Linux, podr´ıa ser adaptado a casi cualquier dispositivo. Para sorpresa de muchos, 5 d´ıas despu´es del anuncio, Google lanza un Software Development Kit o SDK , que inclu´ıa un emulador de Android para ir probando las primeras l´ıneas de c´odigo.
logo
Historia
Septiembre de 2008: Se lanza el G1 T-Mobile G1/HTC Dream que es la primera versi´on de un Tel´efono m´ovil con Android http://www.t-mobileg1.com/
Septiembre de 2008:Tambi´en se lanzo una versi´on Dev Phone 1 con una serie de caracter´ısticas adicionales que le permiten a los desarrolladores tener privilegios (root) en la administraci´on de m´ovil y sus productos http://www.androidclub.nl/
joomla/images/stories/hardware/g1_dev_phone_1.png.
Dr. Gregorio Toscano Pulido Plataforma S60
¿Qu´e es android?
Android es un conjunto de software disponible para dispositivos m´oviles que incluye un sistema operativo con una capa de abstracci´on de aplicaciones distribuidas sobre plataformas heterog´eneas dirigidas al usuario.
logo
¿Una probadita?
http:
//www.youtube.com/watch?v=FKTDSfbcbBU&eurl=http%
3A%2F%2Fkronox.org%2F&feature=player_embedded http://www.htc.com/
Dr. Gregorio Toscano Pulido Plataforma S60
Caracter´ısticas
1. Framework de aplicaciones: permite reuso y reemplazo de componentes.
2. M´aquina virtual Dalvik: optimizada para dispositivos m´oviles.
3. Navegador integrado: basado en el motor open source WebKit.
4. Gr´aficos optimizados, con una librer´ıa de gr´aficos 2D;
gr´aficos 3D basado en la especificaci´on OpenGL ES 1.0 (aceleraci´on por hardware opcional).
5. SQLite para almacenamiento de datos estructurados.
logo
Caracter´ısticas
6. Soporte para medios con formatos comunes de audio, video e im´agenes planas (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
7. Telefon´ıa GSM (dependiente del hardware)
8. Bluetooth, EDGE, 3G, y WiFi (dependiente del hardware) 9. C´amara, GPS, br´ujula, y aceler´ometro (dependiente del hardware)
10. Ambiente rico de desarrollo incluyendo un emulador de dispositivo, herramientas para depurar, perfiles de memoria y rendimiento, y un plugin para el IDE Eclipse.
Dr. Gregorio Toscano Pulido Plataforma S60
Caracter´ısticas
11. Pantalla t´actil
12. Android Market permite que los desarrolladores pongan sus aplicaciones, gratuitas o de pago, en el mercado a trav´es de esta aplicaci´on accesible desde todos los tel´efonos con Android.
13. Entorno de desarrollo SDK que proporciona un plugin para el IDE de Eclipse y APIs necesarias para empezar a desarrollar aplicaciones en la plataforma Android usando un lenguaje de programaci´on java el cual incluye un emulador de dispositivo, herramientas para la depuraci´on, memoria y rendimiento de perfile.
logo
Arquitectura de Android
Dr. Gregorio Toscano Pulido Plataforma S60
Aplicaciones
En Android se suministran con un conjunto de aplicaciones que incluyen un cliente de correo electr´onico, programa de SMS, calendario, mapas, navegador, contactos, y muchas m´as que puedes obtener desde el sitio Market Android.
logo
Application Framework:
Los desarrolladores pueden acceder a los marcos utilizado por la API de las aplicaciones b´asicas. La arquitectura de aplicaciones se ha dise˜nado para simplificar la reutilizaci´on de componentes, y cualquier aplicaci´on puede publicar sus capacidades y cualquier otra aplicaci´on podr´a entonces hacer uso de esas capacidades (sujeto a las limitaciones de seguridad impuestas por el marco).
Este mismo mecanismo permite que los componentes que se sustituye por el usuario.
Dr. Gregorio Toscano Pulido Plataforma S60
conjunto de servicios y sistemas
Una rica y extensible conjunto de vista que se pueden utilizar para construir una solicitud, incluyendo listas, rejillas, cajas de texto, botones, e incluso un navegador web incrustables, los proveedores de contenido que permiten que las aplicaciones de acceso a los datos de otras aplicaciones (como Contactos), o para compartir sus propios datos
logo
1. El Administrador de recursos, facilitar el acceso a los recursos de c´odigo no como cadenas localizadas, gr´aficos y archivos de dise˜no
2. Una notificaci´on Manager que permite a todas las
aplicaciones personalizadas y mostrar las alertas en la barra de estado
3. El Gerente de la actividad que gestiona el ciclo de vida de las aplicaciones y proporciona una navegaci´on backstack
Dr. Gregorio Toscano Pulido Plataforma S60
Bibliotecas
Android incluye un conjunto de librer´ıas de C / C + + utilizado diversos componentes del sistema . Estas capacidades est´an expuestos a los desarrolladores a trav´es de la aplicaci´on marco.
Algunas de las principales librer´ıas se enumeran a continuaci´on:
1. Sistema de librer´ıa de C un derivado de BSD aplicaci´on del sistema de biblioteca est´andar para Linux sintonizado los dispositivos embebido basados en C (libc)
2. Medios de comunicaci´on de librer´ıas lde basadas en OpenCORE
logo
Bibliotecas
3. PacketVideo, para la reproducci´on y la grabaci´on de formatos de audio y video, as´ı como archivos de imagen, MPEG4, H.264, MP3, AAC, AMR, JPG y PNG, ogg vorbis y ogg theora.
4. Superficie Manager - gestiona el acceso a la pantalla y a los subsistemas compuestos 2D y gr´aficos 3D a partir de capas m´ultiples aplicaciones
5. LibWebCore - un moderno navegador web 6. SGL - el motor de gr´aficos 2D subyacente
Dr. Gregorio Toscano Pulido Plataforma S60
Bibliotecas
7. Librer´ıas 3D basada en OpenGL ES 1.0 API
8. FreeType - mapa de bits y vectores de la renderizaci´on de fuentes
9. SQLite - un ligero y potente motor de bases de datos relacionales disponibles para todas las aplicaciones
logo
Android Runtime:
Android incluye un conjunto de librer´ıas que proporciona la mayor parte de la funcionalidad disponible en el n´ucleo de las bibliotecas el lenguaje de programaci´on Java.
Dr. Gregorio Toscano Pulido Plataforma S60
Android Runtime
Android cada aplicaci´on se ejecuta en su propio proceso, con su propia instancia de la m´aquina virtual Dalv´ık que se ha escrito de modo que un dispositivo puede ejecutar m´ultiples m´aquinas virtuales de manera eficiente. La m´aquina virtual de Dalv´ık ejecuta en el Dalv´ık archivos ejecutables (. Dex) que el formato
est´a optimizado para memoria m´ınima. La m´aquina virtual se basa en registros, y corre clases compiladas por un compilador de lenguaje Java que se han transformado en el. Dex incluido el formato de la “dx” herramienta. La m´aquina virtual de Dalv´ık se basa en el kernel de Linux para la funcionalidad subyacente como subprocesos y de bajo nivel de gesti´on de memoria.
logo
Kernel de Linux:
Android se basa en la versi´on 2.6 del kernel (n´ucleo) de Linux que act´ua como una capa de abstracci´on entre el hardware y el resto del conjunto de software, adem´as de prestar los servicios de
seguridad, gesti´on de memoria, gesti´on de procesos, network stack, driver model.
Dr. Gregorio Toscano Pulido Plataforma S60
Puedes construir aplicaciones con todo tipo de datos.
Android permite crear aplicaciones tomando en consideraci´on datos que se obtienen de muchos lugares. Por ejemplo, si se quiere elaborar una nueva aplicaci´on que sirva a modo de biblioteca m´ovil, Android no s´olo tomar´a en cuenta los nombres de los libros que ya se tengan almacenados en nuestro tel´efono, sino que se podr´a recurrir a una base de datos que se encuentre en Internet para engrosar los fondos. Pero es m´as, no har´a falta visitar esta base de datos a diario para ver si se han a˜nadido nuevos t´ıtulos, Android se encargar´a de detectar los ´ultimos t´ıtulos y de a˜nadirlos autom´aticamente a la biblioteca.
logo
Construir nuevas aplicaciones es muy f´acil.
Android ha sido dise˜nado para que crear y llevar a la pr´actica nuevas aplicaciones sea una tarea f´acil. Por otra parte, el sistema operativo est´a pensado para que todas las aplicaciones que se creen se puedan utilizar con mucha facilidad tambi´en, no debemos apartar el hecho de que Android por poseer un kernel de Linux f´acilmente pueden ser instalado en ordenadores.
Dr. Gregorio Toscano Pulido Plataforma S60
Licencia de Android:
Android posee doble licencia, GPLv2 (kernel de Linux) y Apache 2.0 (Aplicativos) las cuales fueron pensadas para brindar una mayor flexibilidad y oportunidades de negocio al permitir a los desarrolladores la creaci´on de aplicaciones manteniendo sin afectar con esto la licencia del kernel de Linux.
logo
Versi´on actual de Android:
Cupcake Android 1.5 es la versi´on estable. La pr´oxima versi´on tendr´a por nombre Donut.
http://developer.android.com/guide/index.html
Dr. Gregorio Toscano Pulido Plataforma S60
Modelo de negocio y Cambio Social.
Al tratarse de un sistema operativo de c´odigo abierto, se pueden generar desarrollos a la medida de empresas o instituciones generando as´ı un mayor numero de empleos con excelente calidad y evitando monopolios, adem´as que todas las aplicaciones que se creen con Android pueden ser compartidas con otros usuarios de forma libre o vender algunas mejoras para poder financiar dichos desarrollos.
logo
Conclusiones del futuro de Android.
Desde su lanzamiento de Android ha despertado mucho inter´es, curiosidad y revuelo, tanto en las comunidades de hackers de aplicaciones libres como en los mismo usuarios que buscan alternativas viables a necesidad puntuales, estamos hablando que en la actualidad existen alrededor de 4,000 millones de usuarios de tel´efonos m´oviles y de equipos de escritorios y port´atiles alcanza solo 1,600 millones y es en ese diferenciador exponencial de n´umero de usuarios donde queremos llegar con la tecnolog´ıa de Android.
Dr. Gregorio Toscano Pulido Plataforma S60
Conclusiones del futuro de Android.
El futuro de Linux y especialmente de Android es uno de los m´as claros y prometedores por sus propias caracter´ıstica de inclusi´on en el desarrollo, seguridad y transparencia as´ı como en la versatilidad de su modelo econ´omico donde el Open Handset Alliance,
emprendedores emergentes, universidades y empresas dedicadas al capital de riesgo est´an apostando a esta plataforma para ser pioneros en la nueva era de la informaci´on y las tecnolog´ıa libres y poder cambiar al mundo
logo
M´etodo para ingresar de caractere
En el sistema primero se determina un plano de referencia, luego se detecta un ´angulo o direcci´on de inclinaci´on en el dispositivo como una desviaci´on del plano de referencia y por medio del acelerometo se indica la direcci´on de inclinaci´on y se recibe la entrada de un car´acter determinado en la pantalla. Por lo tanto, solo son necesarios dos movimientos para completar el ingreso de un car´acter: inclinar el dispositivo y presionar una tecla. Por eso, se trata de un m´etodo intuitivo, c´omodo y r´apido escribir texto.
Dr. Gregorio Toscano Pulido Plataforma S60
Ligas interesantes
http://kronox.org/ - Android and other herbs for Earthlings (de aqu´ı se tom´o la mayor parte del texto http:
//www.youtube.com/user/androiddevelopers?hl=es Android en Youtube
http://source.android.com/ - open source projec http:
//developer.android.com/sdk/1.5_r2/index.html - SDK android
http://www.openhandsetalliance.com/ - Open handset
logo
Ligas interesantes
http://www.android.com/market/ - Aplicaciones Android Market
http:
//developer.android.com/guide/samples/index.html - Ejemplos de c´odigo
http://groups.google.es/group/
desarrolladores-android/web - tutoriales http://code.google.com/android/
http://en.androidwiki.com/wiki/Main_Page - Wiki interesante.
Dr. Gregorio Toscano Pulido Plataforma S60
Instalando los paquetes necesarios en Debian
La descripci´on sobre la instalaci´on del entorno de desarrollo y la primera prueba fue modificado de la gu´ıa http:
//groups.google.es/group/desarrolladores-android/web/
instalando-el-entorno-de-desarrollo-y-primera-prueba.
Sin embargo, a diferencia de la gu´ıa, modifico los pasos para se pueda instalar en Debian.
logo
Instalando los paquetes necesarios en Debian
Se necesita el jdk de java, el sdk de android y alg´un editor de c´odigo. Los programadores de java y de android, aseguran que eclipse es el mejor editor.
Aseg´urate de no tener instalado: java-gcj-compat,
java-6-openjdk ni kaffe-pthreads. En mi caso, adicionalmente al hecho que tuve que desinstalar dichos paquetes, me sali´o el siguiente error: undefined symbol: ZN4nsID5ParseEPKc. Sin embargo, al instalar el paquete xulrunner-dev, qued´o resuelto.
Instala el jdk: wajig install sun-java6-jre sun-java6-jdk
Dr. Gregorio Toscano Pulido Plataforma S60
Instalando los paquetes necesarios en Debian Instala el editor eclipse. Desc´argalo desde
http://www.eclipse.org/downloads/. Preferentemente descarga la versi´on Eclipse IDE for Java EE Developers, aunque tambi´en puedes descargar la versi´on Eclipse IDE for Java Developers.
Descarga el sdk de android en: http:
//developer.android.com/sdk/1.5_r2/index.html Unicamente descomprime el archivo en alg´´ un directorio y listo.
tar xvfz eclipse-jee-galileo-linux-gtk-x86_64.tar.gz cd eclipse
logo
Agregando Android a eclipse
Una vez descargado el sdk de android, descompr´ımalo en un directorio que pueda ser accedido publicamente. En mi caso lo descomprim´ı en el directorio /usr/local/. Posteriormente, es imporante agregar
/usr/local/android-sdk-linux_x86-1.5_r3/tools/ al PATH
mv android-sdk-linux_x86-1.5_r3.zip /algun/path unzip android-sdk-linux_x86-1.5_r2.zip
export PATH=$PATH:/algun/path/android-sdk-linux_x86-1.5_r3/tools/
Dr. Gregorio Toscano Pulido Plataforma S60
Instalando el ADT para eclipse
Es necesario descargar el ADT para poder utilizar android en eclipse.
Desc´argalo desde
http://dl-ssl.google.com/android/ADT-0.9.1.zip Descomprime el archivo ZIP en alguna carpeta.
Inicia eclipse
Pulsa sobre el men´u Help > Install New Software > Add En Name agrega Android Plugin y en Local agrega la ubicaci´on de donde descomprimiste el .ZIP
Marca Developer Tools y presiona Next. Selecciona ambos renglones y presiona Next. Posteriormente deber´as aceptar la
logo
Agregando el SDK a eclipse.
Inicia eclipse
Presiona Window > Preferences > Android
Selecciona el lugar donde descomprimiste el SDK y presiona Apply
Presiona OK
Dr. Gregorio Toscano Pulido Plataforma S60
Creando Agregando Android a eclipse
Para correr la aplicaci´on en el emulador de Android, es
necesario crear un dispositivo virtual de Android (AVD por sus s´ıglas en ingl´es). Un AVD define la imagen de sistema y ajusta el dispositivo usado por el emulador.
Para crear un AVD use la siguiente l´ınea. Aseg´urese de tener en su PATH la ruta de las herramientas del SDK de android.
android create avd --target 3 --name my_avd Posteriormente, de un enter.
Inicie android y podr´a ver en Window > Android AVD Manager, los dispositivos creados.
logo
Probando la instalaci´on
Pulsamos File > New > Project y seleccionamos Android >
AndroidProject. Posteriormente pulsamos Next.
Posteriormente agregamos la siguiente informaci´on:
Project name: HelloAndroid
Seleccionamos Android 1.5 en Build Target Application name: Hello, Android
Package name: com.example.helloandroid (or your own private namespace)
Create Activity: HelloAndroid Min SDK Version: 3
Seleccionamos Finish
Dr. Gregorio Toscano Pulido Plataforma S60
C en Android (compilador externo
Descargue el “toolchain” de CodeSourcery:
http://www.codesourcery.com/sgpp/lite/arm/portal/
subscription?@template=lite
Inst´alalo: sh arm-2008q3-72-arm-none-linux-gnueabi.bin Compila el c´odigo: arm-none-linux-gnueabi-gcc -o hello -static hello.c
Copia el binario a tu tel´efono y ejec´utalo desde ul adb shell:
./hello
logo
Native Developer Kit (NDK)
El Android NDK es una herramienta (se usa conjuntamente con el Android SDK) que permite construir m´odulos de aplicaciones en c´odigo nativo.
Las aplicaciones Android se ejecutan en la m´aquina virtual Dalvik.
El NDK permite a los desarrolladores implementar parte de sus aplicaciones usando c´odigo nativo como C y C++. Esto puede dar beneficions a ciertas clases de aplicaciones (reusar c´odigo existente o bien incrementar la velocidad de ejecuci´on).
Dr. Gregorio Toscano Pulido Plataforma S60
Native Developer Kit (NDK) El NDK provee:
Un conjunto de herramientas y archivos de construcci´on usados para generar bibliotecas de c´odigo nativo usando fuentes de C y C++.
Una manera de empotrar bibliotecas nativas en archivos de paquetes de aplicaciones (.apks) que pueden ser distribuidos en dispositivos Android.
Un conjunto de cabeceras y bibliotecas de sistema que ser´an soportadas en todas las versiones futuras de la plataforma Android, iniciando desde la versi´on 1.5.
Ejemplos, tutoriales y documentaci´on diversa.
Esta versi´on soporta el conjunto de instruciones de m´aquina de
logo
Instalaci´on
Para instalar el NDK siga los siguientes pasos:
Seleccione el paquete NDK que es apropiado para tu computadora y descargue el paquete.
Descomprima el paquete NDK, nos vamos a referir al directorio que contiene el NDK como <ndk>
En una terminal dir´ıjase al nuevo directorio creado y ejecute el script <ndk>/build/host-setup.sh. El script cnfigura el ambiente y genera archivos de configuraci´on.
Agrega la variable export
ANDROID NDK ROOT=ruta/donde/esta/android/ndk Si el script termina satisfactoriamente, ´este imprime “Host setup complete.”
Puedes comenzar a trabajar con el NDK.
Dr. Gregorio Toscano Pulido Plataforma S60
Trabajando con el NDK
Revisa la documentaci´on incluida en el NDK, particularmente el documento OVERVIEW.TXT que se encuentra en el directorio
<ndk>/docs/
Tus c´odigos nativos deber´an ir en <ndk>/sources/<my src>/
Cada c´odigo, deber´a de tener un archivo de descripci´on
<ndk>/sources/<my src>/Android.mk
Tambi´en se deber´a crear un archivo de descripci´on que sirva de liga entre la aplicaci´on SDK y cualquier n´umero de bibliotecas compartidas. Dicho archivo deber´a de ir en
<ndk>/apps/<my app>/Android.mk
logo
Trabajando con el NDK
Para construir la aplicaci´on teclee make en el el directorio ra´ız de <ndk>.
$make APP=<my_app>
En el caso espec´ıfico de los ejemplos que vienen con el SDK se tendr´ıa que compilar de la siguiente manera:
$ make APP=hello-jni
$ make APP=two-libs
Finalmente compile la aplicac´on usando las herramientas del SDK de la manera usual.
En caso que est´e usando Eclipse realice lo siguiente:
<ndk>/apps/<app name>/project/
Dr. Gregorio Toscano Pulido Plataforma S60
Ligas interesantes
http://groups.google.es/group/
desarrolladores-android/web/
instalando-el-entorno-de-desarrollo-y-primera-prueba http://developer.android.com/guide/tutorials/
hello-world.html
http://android-tricks.blogspot.com/2009/02/
hello-world-in-c-on-android.html
http://android-tricks.blogspot.com/2009/02/
hello-world-c-program-on-using-android.html http://hashspeaks.wordpress.com/2009/04/18/
how-to-compilerun-and-package-c-programs-in-android/