• No se han encontrado resultados

Cómputo Móvil: Introducción a Android

N/A
N/A
Protected

Academic year: 2021

Share "Cómputo Móvil: Introducción a Android"

Copied!
45
0
0

Texto completo

(1)

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

(2)

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

(3)

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 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.

(4)

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

(5)

¿Qu´e es android?

Android es un conjunto de software disponible para dispositivos oviles que incluye un sistema operativo con una capa de abstracci´on de aplicaciones distribuidas sobre plataformas heterog´eneas dirigidas al usuario.

(6)

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

(7)

Caracter´ısticas

1. Framework de aplicaciones: permite reuso y reemplazo de componentes.

2. M´aquina virtual Dalvik: optimizada para dispositivos 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.

(8)

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

(9)

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.

(10)

logo

Arquitectura de Android

Dr. Gregorio Toscano Pulido Plataforma S60

(11)

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.

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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 ultiples aplicaciones

5. LibWebCore - un moderno navegador web 6. SGL - el motor de gr´aficos 2D subyacente

Dr. Gregorio Toscano Pulido Plataforma S60

(17)

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

(18)

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

(19)

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.

(20)

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

(21)

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 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.

(22)

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 acilmente pueden ser instalado en ordenadores.

Dr. Gregorio Toscano Pulido Plataforma S60

(23)

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.

(24)

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

(25)

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.

(26)

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

(27)

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

(28)

logo

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

(29)

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

(30)

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

(31)

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.

(32)

logo

Instalando los paquetes necesarios en Debian

Se necesita el jdk de java, el sdk de android y alg´un editor de 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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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.

(38)

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

(39)

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

(40)

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 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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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/

Referencias

Documento similar

Una vez hecho esto, se realiza una espera, leyendo el registro de salida del coprocesador para el control de qué está haciendo el procesador en este momento, a la espera que nos

representar las diferentes dimensiones que puede tener un tablero, el turno del jugador al que le toca mover ficha en juegos de mes sencillos, una lista de condiciones que determinan

c) Diseño e implementación de un Plug-in Eclipse para construir un entorno IDE dirigido a la robótica. En esta fase, se ha desarrollado un Plug-in Eclipse para facilitar la

Las  aplicaciones Android están escritas en lenguaje Java.  Aunque  ya hemos 

Una de las partes más importantes en una aplicación de realidad aumentada, es acceder a la cámara del dispositivo para posteriormente poder mezclar esta imagen con los

Tras el estudio de la plataforma y entorno de desarrollo Android as´ı como el funciona- miento y estructura del est´ andar SCORM o las aplicaciones educativas para ejecutar

La clase ProblemCursorWrapper extiende de la clase CursorWrapper; se ha diseñado para obtener los ejercicios que se pueden resolver de la base de datos por parte del Alumno.

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados