viernes, 1 de abril de 2011

--- Plataforma Android: su arquitectura ---

La arquitectura interna de la plataforma Android, está básicamente formada por 5 capas: la de Aplicaciones y Widgets, la del Framework de Aplicaciones, las librerías, el Runtime de Android y el Kernel de Linux.

Estudiemos ahora esta arquitectura en capas, más detalladamente, para saber con qué contamos, comenzando con la superior, y descendiendo hasta el kernel.

CAPA DE APLICACIONES Y WIDGETS: Miremos esta capa superior como la punta del iceberg Android, ya que los usuarios finales sólo verán los programas de esta capa, sin saber de todas las acciones que pasan por debajo de la línea de flotación. En esta capa nos encontramos con las aplicaciones creadas con la plataforma Android, como un cliente de email, el calendario, los programas para envío de SMS, mapas, el navegador, los contactos, y algunos otros servicios mínimos. Estas aplicaciones, todas escritas en el lenguaje de programación Java, se encuentran cargadas ya en el dispositivo cuando lo compramos. Usando el Android Market, el usuario será capaz de descargar nuevos programas para ejecutar en su teléfono inteligente.

CAPA MARCO DE TRABAJO (FRAMEWORK) DE APLICACIONES: Debajo de la capa de Aplicaciones y Widgets, y encima de la capa de bibliotecas nativas y tiempo de ejecución, encontramos la capa del Framework de aplicaciones. Esta capa nos brinda los bloques de construcción de alto nivel que vamos a utilizar para crear las aplicaciones. El Framework viene preinstalado con Android, pero también se puede ampliar con sus propios componentes según sea necesario. Todos los desarrolladores de aplicaciones Android, tienen acceso total al código fuente, así de esta forma, no se generan cientos de componentes de aplicaciones distintas, que respondan a la misma acción, dando la posibilidad de que los programas sean modificados o reemplazados por cualquier usuario sin tener que empezar a programar sus aplicaciones desde el principio.

Las partes más importantes de esta capa son las siguientes:

Activity Manager: es quien controla el ciclo de vida de las aplicaciones y mantiene un "historial" para la navegación del usuario.

Content providers: Son los proveedores de contenido, que encapsulan los datos que necesita ser compartidos entre las aplicaciones, como por ejemplo, las listas de los contactos.

Resource Manager: es el gerente de Recursos, recordando que los recursos son cualquier cosa que acompañe a una aplicación que no sea código fuente.

Manager de Notificaciones: Nos permite administrar como Eventos los mensajes que llegan y alertas como por ejemplo, para mostrárselo al usuario de forma agradable.

CAPA DE LIBRERIAS:
Debajo del Framework de aplicaciones está la capa de bibliotecas nativas de Android, que incluye un set de librerías C/C++, que son expuestas a todos los desarrolladores a través del Framework de las aplicaciones. Estas bibliotecas compartidas están escritas en C/ C++, compiladas según la arquitectura de hardware particular utilizado por el teléfono, y preinstalado por el proveedor de teléfono.

Algunas de las librerías nativas más importantes son las siguientes:

Surface Manager: es el gestor de ventanas de Android similar a Vista o Compiz, pero es mucho más simple. En lugar de dibujar, informa directamente al búfer de pantalla, los comandos de dibujo.

Gráficos 2D y 3D, códecs multimedia: Android puede reproducir vídeo, grabar y reproducir

audio en una variedad de formatos, incluyendo AAC, AVC, MP3, y MPEG-4.

Base de datos SQL y WebKit como motor de navegación y renderizado de HTML.

CAPA DE RUNTIME DE ANDROID: S
obre el Kernel de Linux, encontramos el runtime de Android, que incluye la maquina virtual Dalvik y el núcleo de las bibliotecas Java. Es la capa de tiempo de ejecución Android, incorpora un set de librerías que aportan la mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de programación Java. La Máquina Virtual está basada en registros, y corre clases compiladas por el compilador de Java que anteriormente han sido transformadas al formato .dex (Dalvik Executable) por la herramienta ''dx''.

Aquí nos tenemos que detener y aclarar que el núcleo de las bibliotecas Java que viene con Android son diferentes de las librerías Java Standard Edition (Java SE) y de las bibliotecas Java Mobile Edition (Java ME). Existe una cantidad sustancial de coincidencias, sin embargo, existen diferencias y podríamos realizar una comparación de Android y bibliotecas estándar de Java, pero escapan al objetivo de este libro.

CAPA DEL KERNEL DE LINUX: El Kernel de Linux es utilizado en Android, es decir en la base de la arquitectura está el kernel de Linux, proporcionando una capa de abstracción de hardware para Android y el resto del software.

Internamente, Android utiliza Linux para los servicios base del sistema como seguridad, gestión de memoria, gestión de procesos, red y controladores. El usuario final nunca se entera de que está Linux en la base, gracias a una buena arquitectura en capas.

--- Características de Android ---

Hemos presentado una introducción al Sistema Operativo Android, como nace de la mano de Google y de qué forma podemos desarrollar aplicaciones nosotros.

Ahora repasaremos las CARACTERÍSTICAS DE LA PLATAFORMA, para luego configurar nuestro entorno de desarrollo para que, por medio de un Emulador y gracias a la IDE Eclipse tengamos un ambiente de producción que nos permita desarrollar aplicaciones que se ejecuten en dispositivos móviles (smartphones o tablets) y nosotros poder testear sin necesidad de tener el dispositivo.

CARACTERÍSTICAS DE PLATAFORMA ANDROID
Repasemos brevemente las principales características del Sistema Operativo Android, las cuales presentaremos mas adelante en este blog e iremos interiorizándonos para poder dominarlas como programadores:


Framework de aplicaciones: permite el reemplazo y la reutilización de los componentes.

Navegador integrado: basado en el motor openSource Webkit, ya tenemos un Browser, es decir, nuestras aplicaciones podrán visualizar HTML, algo muy interesante.

SQlite: Es una base de datos para datos estructurados, que se integra directamente con las aplicaciones y que nosotros podemos utilizar en nuestros programas.

Multimedia: Soporte para medios con formatos comunes de audio, video e imágenes planas (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).

Máquina Virtual Dalvik: Es una máquina virtual de aplicación. Nos permite que cada aplicación se ejecute en un proceso independiente y con su propia instancia de la máquina virtual.

Cámara, GPS, brújula, acelerómetro. Telefonía GSM, Bluetooth, EDGE, 3g y Wifi dependiente del celular sobre el cual ejecutemos Android.

Pantalla Táctil: Ya existen modelos de SmartPhones, como el Kyocera Echo, con Android y con doble pantalla táctil.

Android Market: nos permite a los programadores poner aplicaciones, gratuitas o pagas, en el mercado a través de esta aplicación accesible desde todos los teléfonos con Android.

Sí, existe una relación entre el Lenguaje de Programación Java, la plataforma Android y esta maquina virtual Dalvik.

El programador escribe una (o más) clases en Java, luego lo compila y obtiene un archivo (.class) con el bytecode de Java.

Por el otro lado de la relación, el SDK de Android tiene una utilidad llamada "DEX", que se encarga de convertir un archivo .class en un archivo .dex, ¿y que es un archivo .dex?

Bueno, un .dex tiene el bytecode del .class "traducido" para que lo entienda ahora la máquina virtual Dalvik. Luego, este archivo .dex (o mas) es empaquetado con otros recursos de la aplicación que forman el proyecto del programador, en un archivo .apk, que es el ejecutable de Android.

La maquina virtual Dalvik NO ES UNA máquina virtual de Java, muchas veces se la confunde, pero tenemos que aclarar esto desde el comienzo, ya que el bytecode con el que trabaja no es Java bytecode.

Esta máquina virtual está optimizada para utilizar poca memoria y nos permite ejecutar varias instancias, delegando en el sistema operativo subyacente el soporte de aislamiento de procesos, gestión de memoria e hilos.

Según cuenta la documentación oficial del sitio de Android, el nombre para esta máquina virtual fue elegido por Bornstein en honor a Dalvík, un pueblo de Eyjafjörður, Islandia, donde vivieron antepasados suyos.

Con esto ya tenemos un breve pantallazo de qué es Android, quien lo respalda, y si somos programadores es momento de comenzar con el proceso de instalación de las herramientas para programar.

Nos vemos en la proxima entradas, saludos cordiales,

Lic. Mariano Salvetti

Top Ten - Las diez Aplicaciones fundamentales

Existe personas que hace pocos meses ni siquiera sabía qué era esto del “Android” del que el amigo entendido del grupo no paraba de hablar.
Así que partiendo de un par de amigos que se han pasado al lado verde de Google (empezando con nada más y nada menos que con un Samsung Galaxy S, y viniendo los dos curiosamente de Nokia… cosa que viene siendo la tónica habitual en estos tiempos), y que me preguntan cuáles son las instalaciones que deben instalarse de buen inicio, ahí van las que para mi nadie debería perderse (y que encima son gratis en su gran mayoría), junto con sus links al Android Market.


1. 3G Watchdog:

Utilísima para comprobar los megas consumidos durante el mes. De esta forma, en cuanto ves que te aproximas al punto crítico en que tu operadora te baja la velocidad hasta niveles ridículamente lentos, puedes racionalizar el consumo y parar de ver tantos vídeos en Youtube.

2. Accuweather

Si eres un fanático de la playa como yo, debes instalarte esta app sí o sí. Te da la predicción del tiempo hasta a 8 días vista. Eso sí, tiene el pequeño problema que para ver las variaciones de tiempo dentro del mismo día, te desvía a su web en lugar de hacerlo dentro del propio programa. !Actualización ya!
Aún así, es mejor que Accuweather.com, ya que ésta tira de localización GPS cada vez que lo activas, para saber dónde estás y a partir de aquí darte la predicción del tiempo. Inútil si quieres saberlo cuando estás en casa o la oficina.

3. Advanced Task Cleaner Pro

Cierra los programas que han quedado corriendo en segundo plano y que ralentizan tanto el funcionamiento de tu smartphone. Sí, estamos de acuerdo en que es algo que Android debería llevar de fábrica. Pero dado que no es así, al menos tenemos esta app para salir del paso.

4. Astro File Manager

Explorador de archivos, para poder gestionar los ficheros y carpetas de tu móvil.

5. Audio Manager

La primera aplicación por la que estuve dispuesto a pagar pasta. y creedme, en mi caso eso es extramadamente significativo. Gestiona los sonidos de cada apartado de tu móvil (alarma, música, alertas, timbre, sistema, llamadas), y además te permite hacer y programar varios perfiles para que se vayan activando automáticamente a lo largo del día/semana.
La versión gratuita te permite hacer lo mismo que la de pago, exceptuando los perfiles.

6. Barcode Scanner

Perfecta para bajarte directamente esa tremenda aplicación que has visto comentada en alguna web, para lo que sólo necesitas escanear el código que aparece allí mismo, sin necesidad de tener que buscarla en el Market.

7. Dropbox

Disco duro virtual en el que compartir ficheros desde cualquier dispositivo conectado a internet. En mi caso, ideal para colgar las fotos hechas con el móvil y luego verlas en cualquier ordenador.

8. Facebook

Sigue sin estar a la altura de la aplicación para ordenador, pero ha mejorado muchísimo en los últimos meses, con la inclusión esencial del chat.

9. Gmail

Básica si tienes correo Gmail, mucho mejor que el programa de Correo por defecto de Android.


10. SlovoEd Deluxe Español-Inglés

Diccionario traductor Español-Inglés / Inglés-Español. Sencillo y práctico. Ojo, funciona mediante conexión a internet (no descarga un enorme fichero con toda la base de datos de palabras).


Bueno, espero que esto les sea de utilidad, hasta la proxima entrada,

saludos! Mariano!

¿Y que es Android?

Que buena pregunta para comenzar con este blog que he llamado MuchoAndroid....porque hablaremos mucho sobre lo mucho que nos brinda Android.Entonces....manos a la obra, e intentemos responder qué es Android.

Según Wikipedia, Android es un sistema operativo basado en Linux para dispositivos móviles, como teléfonos inteligentes y tablets. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en el 2005. Android sí que es un Sistema Operativo (como Windows y Linux) , pero además es una plataforma de Software basada en el kernel de Linux. Fue diseñado este Sistema Operativo, en un principio, para dispositivos móviles, y ahora el Sistema Operativo Android permite controlar otros dispositivos por medio de bibliotecas desarrolladas o adaptados por Google mediante el lenguaje de programación Java.

Inicialmente, Android fue desarrollada por una empresa que luego Google Inc. Adquirió, aunque poco después se unió Open Handset Alliance, un consorcio de 48 compañías de Hardware, Software y telecomunicaciones, las cuales llegaron a un acuerdo para promocionar los estándares de códigos abiertos para dispositivos móviles.

Google sin embargo, ha sido quien ha publicado la mayoría del código fuente de Android bajo la licencia de Software Apache, una licencia de software libre y de código abierto a cualquier programador.

Ya saben que Google está invadiendo todo, y es una empresa con mucho alcance. Bueno, Android fue lanzado en el 2007, y ahora están apadrinando este Sistema Operativo pero enfocado a los nuevos celulares inteligentes, que están invadiendo el mercado de la telefonía celular "clásica". Desde que inicio su carrera en el mercado, el Sistema Operativo Android a obtenido muchas mejoras, gracias a la difusión y se ha creado varias versiones, las cuales son:
  1. versión 1.5 - Cupcake,
  2. versión 1.6 - Donut,
  3. versión 2.0 / 2.1 Éclair,
  4. versión 2.2 - Froyo,
  5. versión 2.3 Gingerbread,
  6. versión 3.x - Honeycomb.

Si nos detenemos en los nombres de las versiones, vemos que tienen nombres de postres, un dato curioso que salta de la terminología técnica a la culinaria. En el apéndice del libro enumeraremos estos nombres y su significado, a modo de comentarios “de color”. Para teléfonos inteligentes (SmartPhones en inglés), Android 2.3 es la última versión publicada al momento de escribir este libro, en Febrero del 2011, y estamos a la espera del lanzamiento de la versión 3.0 – Honeycomb, que está especialmente pensado para TABLETS, aprovechando las ventajas dimensionales de las tabletas, ya que la pantalla es mucho más grande que la de los SmartPhones y esto permite aprovechar más y mejor los diseños de la interfaz visual.

Si miramos un poco los números de Android, tenemos que destacar que las unidades vendidas de teléfonos inteligentes con Android se ubican en el primer puesto en los Estados Unidos, en el segundo y tercer cuarto del 2010, con una cuota de mercado de 43,6 % en el tercer trimestre.

Actualmente Android posee más del 25% de cuota de mercado a escala mundial de los SmartPhones , el segundo detrás de Symbian, sistema operativo "pago", no openSource, que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia, Sony Ericsson, Samsung, Siemens, Benq, Fujitsu, Lenovo, LG, Motorola.
Android tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos, y nosotros estamos buscando que usted como lector se sume a esta gran comunidad.
A la fecha, existen cerca de 100.000 aplicaciones disponibles para Android. Los programas están escritos en lenguaje Java, es por eso que recomendamos fuertemente tener conocimientos básicos de programación Java y entender lo mínimo y fundamental de la Programación Orientada a Objetos. En mi PC, ¿puedo emular Android? Si, se puede. Es muy fácil emular un teléfono con Android en nuestro sistema operativo, sólo tenemos que descargarnos el kit de desarrollo de software o SDK (siglas en inglés de software development kit) de Android. Esto lo vamos a realizar brevemente, cuando instalemos y configuremos nuestro entorno de desarrollo.
Algo muy importante es que existen versiones del emulador tanto para Windows como para Mac Os como para Linux. Nosotros vamos a trabajar sobre Windows, y en el Apéndice A encontrarán como configurar el entorno de desarrollo para Linux.

Entonces ya podemos ahora emular un celular con Android en la PC, y es más fácil que nunca gracias a Android, que ahora mismo es una plataforma un poco desconocida pero en no demasiado tiempo, y con la colaboración de todas las grandes empresas tecnológicas para dispositivos móviles que seguro van a colaborar con Google, este será un sistema equiparable a: Symbian, Palm OS y Windows Mobile que en no demasiado tiempo me atrevo a decir que serán seguramente la parte mínima de un mercado dominado por el sistema de Google. Si miramos para atrás un par de años, podemos ver que por donde Google ha entrado lo ha hecho bien y sus negocios crecieron.

¿Te animás a sumarte vos también? dale! yo te acompaño desde acá.

jueves, 31 de marzo de 2011

--------- Bienvenidos!

Hola, bienvenidos a mi blog MuchoAndroid, donde voy a ir reflejando distintos aspectos de la programacion y usos del Sistema Operativo Android, puntualmente en SmartPhones y Tablets.

Sin mas, comenzamos a cargar informacion,

saludos,
Mariano!


Locations of visitors to this page