Cómputo Móvil: Introducción a Android Centro de Investigación y de Estudios Avanzados del IPN. Laboratorio de Tecnologías de Información
Historia Octubre de 2003: Andy Rubin y otros cofundadores crean Android Inc., una pequeña compañía cuya finalidad era el desarrollo de aplicaciones para dispositivos móviles, cuyos integrantes tenían una gran experiencia en plataformas web, telecomunicaciones y aplicaciones móviles. Junio de 2005: Google compra Android Inc. Andy Rubin se convierte en el director de la división de plataformas móviles 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).
Historia Noviembre de 2007: Se anuncia la creación de la Open Handset Alliance, una organización cuyo objetivo es la difusión de la plataforma móvil Android. Fabricantes de equipos y prestadores de servicios de tecnología que unieron fuerzas para lanzar el primer sistema operativo abierto para móviles, 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és del anuncio, Google lanza un Software Development Kit o SDK, que incluía un emulador de Android para ir probando las primeras ĺıneas de código.
Historia Septiembre de 2008: Se lanza el G1 T-Mobile G1/HTC Dream que es la primera versión de un Teléfono móvil con Android http://www.t-mobileg1.com/ Septiembre de 2008:También se lanzo una versión Dev Phone 1 con una serie de características adicionales que le permiten a los desarrolladores tener privilegios (root) en la administración de móvil y sus productos http://www.androidclub.nl/ joomla/images/stories/hardware/g1_dev_phone_1.png.
Qué es android? Android es un conjunto de software disponible para dispositivos móviles que incluye un sistema operativo con una capa de abstracción de aplicaciones distribuidas sobre plataformas heterogéneas dirigidas al usuario.
Una probadita? http: //www.youtube.com/watch?v=fktdsfbcbbu&eurl=http% 3A%2F%2Fkronox.org%2F&feature=player_embedded http://www.htc.com/
Características 1. Framework de aplicaciones: permite reuso y reemplazo de componentes. 2. Máquina virtual Dalvik: optimizada para dispositivos móviles. 3. Navegador integrado: basado en el motor open source WebKit. 4. Gráficos optimizados, con una librería de gráficos 2D; gráficos 3D basado en la especificación OpenGL ES 1.0 (aceleración por hardware opcional). 5. SQLite para almacenamiento de datos estructurados.
Características 6. Soporte para medios con formatos comunes de audio, video e imágenes 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ámara, GPS, brújula, y acelerómetro (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.
Características 11. Pantalla táctil 12. Android Market permite que los desarrolladores pongan sus aplicaciones, gratuitas o de pago, en el mercado a través de esta aplicación accesible desde todos los teléfonos 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ón java el cual incluye un emulador de dispositivo, herramientas para la depuración, memoria y rendimiento de perfile.
Arquitectura de Android
Aplicaciones En Android se suministran con un conjunto de aplicaciones que incluyen un cliente de correo electrónico, programa de SMS, calendario, mapas, navegador, contactos, y muchas más que puedes obtener desde el sitio Market Android.
Application Framework: Los desarrolladores pueden acceder a los marcos utilizado por la API de las aplicaciones básicas. La arquitectura de aplicaciones se ha diseñado para simplificar la reutilización de componentes, y cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación podrá 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.
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
1. El Administrador de recursos, facilitar el acceso a los recursos de código no como cadenas localizadas, gráficos y archivos de diseño 2. Una notificación 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ón backstack
Bibliotecas Android incluye un conjunto de librerías de C / C + + utilizado diversos componentes del sistema. Estas capacidades están expuestos a los desarrolladores a través de la aplicación marco. Algunas de las principales librerías se enumeran a continuación: 1. Sistema de librería de C un derivado de BSD aplicación del sistema de biblioteca estándar para Linux sintonizado los dispositivos embebido basados en C (libc) 2. Medios de comunicación de librerías lde basadas en OpenCORE
Bibliotecas 3. PacketVideo, para la reproducción y la grabación 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áficos 3D a partir de capas múltiples aplicaciones 5. LibWebCore - un moderno navegador web 6. SGL - el motor de gráficos 2D subyacente
Bibliotecas 7. Librerías 3D basada en OpenGL ES 1.0 API 8. FreeType - mapa de bits y vectores de la renderización de fuentes 9. SQLite - un ligero y potente motor de bases de datos relacionales disponibles para todas las aplicaciones
Android Runtime: Android incluye un conjunto de librerías que proporciona la mayor parte de la funcionalidad disponible en el núcleo de las bibliotecas el lenguaje de programación Java.
Android Runtime Android cada aplicación se ejecuta en su propio proceso, con su propia instancia de la máquina virtual Dalvík que se ha escrito de modo que un dispositivo puede ejecutar múltiples máquinas virtuales de manera eficiente. La máquina virtual de Dalvík ejecuta en el Dalvík archivos ejecutables (. Dex) que el formato está optimizado para memoria mínima. La máquina 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áquina virtual de Dalvík se basa en el kernel de Linux para la funcionalidad subyacente como subprocesos y de bajo nivel de gestión de memoria.
Kernel de Linux: Android se basa en la versión 2.6 del kernel (núcleo) de Linux que actúa como una capa de abstracción entre el hardware y el resto del conjunto de software, además de prestar los servicios de seguridad, gestión de memoria, gestión de procesos, network stack, driver model.
Puedes construir aplicaciones con todo tipo de datos. Android permite crear aplicaciones tomando en consideración datos que se obtienen de muchos lugares. Por ejemplo, si se quiere elaborar una nueva aplicación que sirva a modo de biblioteca móvil, Android no sólo tomará en cuenta los nombres de los libros que ya se tengan almacenados en nuestro teléfono, sino que se podrá recurrir a una base de datos que se encuentre en Internet para engrosar los fondos. Pero es más, no hará falta visitar esta base de datos a diario para ver si se han añadido nuevos títulos, Android se encargará de detectar los últimos títulos y de añadirlos automáticamente a la biblioteca.
Construir nuevas aplicaciones es muy fácil. Android ha sido diseñado para que crear y llevar a la práctica nuevas aplicaciones sea una tarea fácil. Por otra parte, el sistema operativo está pensado para que todas las aplicaciones que se creen se puedan utilizar con mucha facilidad también, no debemos apartar el hecho de que Android por poseer un kernel de Linux fácilmente pueden ser instalado en ordenadores.
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ón de aplicaciones manteniendo sin afectar con esto la licencia del kernel de Linux.
Versión actual de Android: Cupcake Android 1.5 es la versión estable. La próxima versión tendrá por nombre Donut. http://developer.android.com/guide/index.html
Modelo de negocio y Cambio Social. Al tratarse de un sistema operativo de código 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ás 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.
Conclusiones del futuro de Android. Desde su lanzamiento de Android ha despertado mucho interés, 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éfonos móviles y de equipos de escritorios y portátiles alcanza solo 1,600 millones y es en ese diferenciador exponencial de número de usuarios donde queremos llegar con la tecnología de Android.
Conclusiones del futuro de Android. El futuro de Linux y especialmente de Android es uno de los más claros y prometedores por sus propias característica de inclusión en el desarrollo, seguridad y transparencia así como en la versatilidad de su modelo económico donde el Open Handset Alliance, emprendedores emergentes, universidades y empresas dedicadas al capital de riesgo están apostando a esta plataforma para ser pioneros en la nueva era de la información y las tecnología libres y poder cambiar al mundo
Método para ingresar de caractere En el sistema primero se determina un plano de referencia, luego se detecta un ángulo o dirección de inclinación en el dispositivo como una desviación del plano de referencia y por medio del acelerometo se indica la dirección de inclinación y se recibe la entrada de un carácter determinado en la pantalla. Por lo tanto, solo son necesarios dos movimientos para completar el ingreso de un carácter: inclinar el dispositivo y presionar una tecla. Por eso, se trata de un método intuitivo, cómodo y rápido escribir texto.
Ligas interesantes http://kronox.org/ - Android and other herbs for Earthlings (de aquí se tomó 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 alliance
Ligas interesantes http://www.android.com/market/ - Aplicaciones Android Market http: //developer.android.com/guide/samples/index.html - Ejemplos de código http://groups.google.es/group/ desarrolladores-android/web - tutoriales http://code.google.com/android/ http://en.androidwiki.com/wiki/main_page - Wiki interesante.
Instalando los paquetes necesarios en Debian La descripción sobre la instalación 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.
Instalando los paquetes necesarios en Debian Se necesita el jdk de java, el sdk de android y algún editor de código. Los programadores de java y de android, aseguran que eclipse es el mejor editor. Asegúrate 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ó el siguiente error: undefined symbol: ZN4nsID5ParseEPKc. Sin embargo, al instalar el paquete xulrunner-dev, quedó resuelto. Instala el jdk: wajig install sun-java6-jre sun-java6-jdk
Instalando los paquetes necesarios en Debian Instala el editor eclipse. Descárgalo desde http://www.eclipse.org/downloads/. Preferentemente descarga la versión Eclipse IDE for Java EE Developers, aunque también puedes descargar la versión Eclipse IDE for Java Developers. Descarga el sdk de android en: http: //developer.android.com/sdk/1.5_r2/index.html Únicamente descomprime el archivo en algún directorio y listo. tar xvfz eclipse-jee-galileo-linux-gtk-x86_64.tar.gz cd eclipse./eclipse
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/
Instalando el ADT para eclipse Es necesario descargar el ADT para poder utilizar android en eclipse. Descárgalo 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ú Help > Install New Software > Add En Name agrega Android Plugin y en Local agrega la ubicación de donde descomprimiste el.zip Marca Developer Tools y presiona Next. Selecciona ambos renglones y presiona Next. Posteriormente deberás aceptar la licencia y presionar Finish. Reinicia el eclipse.
Agregando el SDK a eclipse. Inicia eclipse Presiona Window > Preferences > Android Selecciona el lugar donde descomprimiste el SDK y presiona Apply Presiona OK
Creando Agregando Android a eclipse Para correr la aplicación en el emulador de Android, es necesario crear un dispositivo virtual de Android (AVD por sus síglas en inglés). Un AVD define la imagen de sistema y ajusta el dispositivo usado por el emulador. Para crear un AVD use la siguiente ĺınea. Asegúrese 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á ver en Window > Android AVD Manager, los dispositivos creados.
Probando la instalación Pulsamos File > New > Project y seleccionamos Android > AndroidProject. Posteriormente pulsamos Next. Posteriormente agregamos la siguiente información: 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
C en Android (compilador externo Descargue el toolchain de CodeSourcery: http://www.codesourcery.com/sgpp/lite/arm/portal/ subscription?@template=lite Instálalo: sh arm-2008q3-72-arm-none-linux-gnueabi.bin Compila el código: arm-none-linux-gnueabi-gcc -o hello -static hello.c Copia el binario a tu teléfono y ejecútalo desde ul adb shell:./hello
Native Developer Kit (NDK) El Android NDK es una herramienta (se usa conjuntamente con el Android SDK) que permite construir módulos de aplicaciones en código nativo. Las aplicaciones Android se ejecutan en la máquina virtual Dalvik. El NDK permite a los desarrolladores implementar parte de sus aplicaciones usando código nativo como C y C++. Esto puede dar beneficions a ciertas clases de aplicaciones (reusar código existente o bien incrementar la velocidad de ejecución).
Native Developer Kit (NDK) El NDK provee: Un conjunto de herramientas y archivos de construcción usados para generar bibliotecas de código 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án soportadas en todas las versiones futuras de la plataforma Android, iniciando desde la versión 1.5. Ejemplos, tutoriales y documentación diversa. Esta versión soporta el conjunto de instruciones de máquina de ARMv5TE y provee cabeceras estables para libc, libm la interface JNI y otras bibliotecas.
Instalación 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ón. Agrega la variable export ANDROID NDK ROOT=ruta/donde/esta/android/ndk Si el script termina satisfactoriamente, éste imprime Host setup complete. Puedes comenzar a trabajar con el NDK.
Trabajando con el NDK Revisa la documentación incluida en el NDK, particularmente el documento OVERVIEW.TXT que se encuentra en el directorio <ndk>/docs/ Tus códigos nativos deberán ir en <ndk>/sources/<my src>/ Cada código, deberá de tener un archivo de descripción <ndk>/sources/<my src>/android.mk También se deberá crear un archivo de descripción que sirva de liga entre la aplicación SDK y cualquier número de bibliotecas compartidas. Dicho archivo deberá de ir en <ndk>/apps/<my app>/android.mk
Trabajando con el NDK Para construir la aplicación 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ón usando las herramientas del SDK de la manera usual. En caso que esté usando Eclipse realice lo siguiente: <ndk>/apps/<app name>/project/
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/ http://developer.android.com/intl/it/sdk/ndk/1.5_ r1/index.html