Contenido sobre Android
Buscar
Social
Ofertas laborales ES
« Retraso en la presentación del Samsung Nexus Prime | Main | Desarrollar para Tabletas Android. ¿Vale la pena? »
sábado
oct082011

Android, un vistazo rápido

Históricamente los desarrolladores de las diferentes plataformas de teléfonos móviles debían conocer el hardware específico para el que estaban programando. Recientemente, sistemas como Symbian han proporcionado a sus desarrolladores aplicaciones que aprovechan mejor el hardware. Estas plataformas ofrecen acceso al hardware, pero esto supone trabajar con APIs propietarias difíciles de entender. Además la dificultad aumenta cuando se tiene que trabajar con diferentes implementaciones de hardware.

El mayor desarrollo producido ha sido la aparición de los MIDlets de Java, que se ejecutan sobre la máquina virtual de Java, lo que les hace independientes del hardware subyacente, siempre que exista la máquina virtual de Java que interprete los programas escritos en este lenguaje. El inconveniente es que tienen acceso restringido al hardware de los dispositivos.

En el desarrollo de aplicaciones para móviles, lo normal ha sido que las aplicaciones de terceros tengan unos permisos para acceder al hardware diferentes a los de las aplicaciones nativas escritas por los fabricantes de dispositivos. Los MIDlets de Java supusieron un gran avance pero, el no tener acceso completo al hardware de bajo nivel y otras cuestiones, hacía que no se aprovechara todo el potencial de los diferentes dispositivos. 

Android forma parte de una nueva generación de sistemas operativos para móviles como Windows Mobile, iOS del Apple Iphone, Blackberry. Sin embargo, estos sistemas operativos están construidos sobre sistemas propietarios que normalmente priorizan las aplicaciones nativas a las creadas por terceros.

Android ofrece nuevas posibilidades ya que dispone de un entorno de desarrollo abierto construido sobre un kernel Linux de código abierto. El hardware está disponible para todas las aplicaciones a través de unas APIs y la interacción entre aplicaciones está completamente soportada.

En Android todas las aplicaciones son iguales, y todas, nativas o no, están escritas con las mismas APIs. Incluso podemos borrar o reemplazar las aplicaciones nativas por otras de terceros.

Android está compuesto de una serie de aplicaciones que se ejecutan sobre un framework de Java de aplicaciones orientadas a objetos, sobre un núcleo de bibliotecas de Java en una máquina virtual Dalvik, con compilación en tiempo de ejecución. Es la combinación de tres componentes:

  • Un sistema operativo libre, de código abierto para dispositivos móviles.
  • Una plataforma de desarrollo, de código abierto para crear aplicaciones para móviles.
  • Dispositivos que funcionan con el sistema operativo Android y con las aplicaciones creadas bajo este sistema.

 Los teléfonos con Android vienen con un conjunto de aplicaciones instaladas:

  • Un cliente de e-mail.
  • Una aplicación para la gestión de SMS.
  • Un total PIM (Personal Information Management) que incluye calendario y lista de contactos.
  • Un navegador web.
  • Un reproductor de música y galería de imágenes.
  • Una cámara y una aplicación para grabar en vídeo.
  • Una calculadora.
  • La pantalla de inicio.
  • Un reloj despertador.

En muchos casos los dispositivos Android vienen con las siguientes aplicaciones:

  • El cliente de Android Market para la descarga de aplicaciones de terceros.
  • La aplicación Google Maps con todas sus funciones.
  • El cliente de correo Gmail.
  • Google Talk, que es un cliente de mensajería instantánea.
  • El reproductor de vídeo de YouTube.

Los distribuidores personalizan su interfaz y las aplicaciones que vienen con cada dispositivo Android. 

Las aplicaciones Android están escritas en Java, y se ejecutan en una máquina virtual llamada Dalvik en lugar de la tradicional Java Virtual Machine. Cada aplicación Android corre en un proceso separado dentro de su propia instancia de Dalvik.

El SDK (Software Development Kit) incluye lo necesario para crear aplicaciones en Android. Vamos a ver lo que incluye:

  • Las APIs de Android. El corazón del SDK son las APIs que nos ofrecen las librerías para desarrollar las aplicaciones. Son las mismas APIs usadas por Google para crear las aplicaciones nativas.
  • Herramientas de desarrollo. Herramientas que nos permiten compilar, depurar y convertir nuestro código en ejecutable.
  • El Android Virtual Device Manager and Emulator. El emulador Android nos permite comprobar el aspecto y el comportamiento de las aplicaciones que creamos.
  • Documentación completa. Detallada información de lo que incluye cada paquete y clase y cómo usarlos. Además, también cómo empezar y los fundamentos del desarrollo de Android.
  • Código de ejemplo. Incluye una selección de aplicaciones de ejemplo que muestran algunas de las posibilidades que nos ofrece Android.
  • Apoyo online. Rápidamente se ha desarrollado una comunidad activa de desarrolladores. En Google Groups tenemos http://developer.android.com/resources/community-groups.html, foro activo de desarrolladores Android. Stackoverflow en http://www.stackoverflow.com/questions/tagged/android también popular para cuestiones sobre Android.

Para ver todos los paquetes contenidos en el SDK visita http://developer.android.com/reference/packages.html.

Cada versión del SDK ofrece una versión actualizada de la API, a cada API se le asigna un número entero que es almacenado en el sistema. Este identificador es el "API level", permite al sistema determinar si una aplicación es compatible con el sistema antes de instalar la aplicación, si este valor es mayor o igual que el "API level" de la aplicacion, ésta es compatible, en caso contrario no es compatible. Cada aplicación indica el "API level" más bajo con el que es compatible mediante el atributo android:minSdkVersion, este atributo va en el archivo AndroidManifest.xml que veremos más adelante. Es importante también probar las aplicaciones en los sistemas compatibles con la API para la que está diseñada la aplicación.

Vamos a ver las diferentes versiones de Android y sus características, según Wikipedia:

1.0 (Apple Pie)
Liberado el 23 de septiembre de 2008
1.1 (Banana Bread)
Liberado el 9 de febrero de 2009
1.5 (Cupcake)
Basado en el kernel de Linux 2.6.27
El 30 de abril de 2009, la actualización 1.5 (Cupcake) para Android fue liberada. Hubo varias características nuevas y actualizaciones en la interfaz de usuario en la actualización 1.5:
  • Posibilidad de grabar y reproducir videos a través del modo camcorder
  • Capacidad de subir videos a YouTube e imágenes a Picasa directamente desde el teléfono
  • Un nuevo teclado con predicción de texto
  • Soporte para Bluetooth A2DP y AVRCP
  • Capacidad de conexión automática para conectar a auricular Bluetooth a cierta distancia
  • Nuevos widgets y carpetas que se pueden colocar en las pantallas de inicio
  • Transiciones de pantalla animadas
1.6 (Donut)
Basado en el kernel de Linux 2.6.29
El 15 de septiembre de 2009, el SDK 1.6 (Donut) fue liberado. Se incluyó en esta actualización:
  • Una experiencia mejorada en el Android Market
  • Una interfaz integrada de cámara, filmadora y galería
  • La galería ahora permite a los usuarios seleccionar varias fotos para eliminarlas
  • Búsqueda por voz actualizada, con respuesta más rápida y mayor integración con aplicaciones nativas, incluyendo la posibilidad de marcar a contactos
  • Experiencia de búsqueda mejorada que permite buscar marcadores, historiales, contactos y páginas web desde la pantalla de inicio.
  • Actualización de soporte para CDMA/EVDO, 802.1x, VPN y text-to-speech
  • Soporte para resoluciones de pantalla WVGA
  • Mejoras de velocidad en las aplicaciones de búsqueda y cámara
  • Framework de gestos y herramienta de desarrollo GestureBuilder
  • Navegación gratuita turn-by-turn de Google
2.0 / 2.1 (Eclair)
Basado en el kernel de Linux 2.6.29
El 26 de octubre de 2009, el SDK 2.0 (Eclair) fue liberado. Los cambios incluyeron:
  • Velocidad de hardware optimizada
  • Soporte para más tamaños de pantalla y resoluciones
  • Interfaz de usuario renovada
  • Nuevo interfaz de usuario en el navegador y soporte para HTML5
  • Nuevas listas de contactos
  • Una mejor relación de contraste para los fondos
  • Mejoras en Google Maps 3.1.2
  • Soporte para Microsoft Exchange
  • Soporte integrado de flash para la cámara
  • Zoom digital
  • MotionEvent mejorado para captura de eventos multi-touch
  • Teclado virtual mejorado
  • Bluetooth 2.1
  • Fondos de pantalla animados

El SDK 2.0.1 fue liberado el 3 de diciembre de 2009.

El SDK 2.1 fue liberado el 12 de enero de 2010.

2.2 (Froyo)
Basado en el kernel de Linux 2.6.32
El 20 de mayo de 2010, el SDK 2.2 (Froyo) fue liberado. Los cambios incluyeron:
  • Optimización general del sistema Android, la memoria y el rendimiento
  • Mejoras en la velocidad de las aplicaciones, gracias a la implementación de JIT
  • Integración del motor JavaScript V8 del Google Chrome en la aplicación Browser
  • Soporte mejorado de Microsoft Exchange (reglas de seguridad, reconocimiento automático, GAL look-up, sincronización de calendario, limpieza remota)
  • Lanzador de aplicaciones mejorado con accesos directos a las aplicaciones de teléfono y Browser
  • Funcionalidad de Wi-Fi hotspot y tethering por USB
  • Permite desactivar el tráfico de datos a través de la red del operador
  • Actualización del Market con actualizaciones automáticas
  • Cambio rápido entre múltiples idiomas de teclado y sus diccionarios
  • Marcación por voz y compartir contactos por Bluetooth
  • Soporte para contraseñas numéricas y alfanuméricas
  • Soporte para campos de carga de archivos en la aplicación Browser
  • Soporte para la instalación de aplicación en la memoria expandible
  • Soporte para Adobe Flash 10.1
  • Soporte para pantallas de alto número de Puntos por pulgada, tales como 4" 720p
2.3 (Gingerbread)
Basado en el kernel de Linux 2.6.35.7 Actual en smat
El 6 de diciembre de 2010, el SDK 2.3 (Gingerbread) fue liberado. Los cambios incluyeron:
  • Soporte para dispositivos móviles
  • Actualización del diseño de la interfaz de usuario
  • Soporte para pantallas extra grandes y resoluciones WXGA y mayores
  • Soporte nativo para telefonía VoIP SIP
  • Soporte para reproducción de videos WebM/VP8 y decodificación de audio AAC
  • Nuevos efectos de audio como reverberación, ecualización, virtualización de los auriculares y refuerzo de graves
  • Soporte para Near Field Communication
  • Funcionalidades de cortar, copiar y pegar disponibles a lo largo del sistema
  • Teclado multi-táctil rediseñado
  • Soporte mejorado para desarrollo de código nativo
  • Mejoras en la entrada de datos, audio y gráficos para desarrolladores de juegos
  • Recolección de elementos concurrentes para un mayor rendimiento
  • Soporte nativo para más sensores (como giroscopios y barómetros)
  • Un administrador de descargas para descargar archivos grandes
  • Administración de la energía mejorada y control de aplicaciones mediante la administrador de tareas
  • Soporte nativo para múltiples cámaras
  • Cambio de sistema de archivos de YAFFS a ext4
3.0 / 3.1 / 3.2 (Honeycomb)
  • Mejor soporte para tablets
  • Escritorio 3D con widgets rediseñados
  • Sistema multitarea mejorado
  • Mejoras en el navegador web predeterminado, entre lo que destaca la navegación por pestañas, autorelleno de formularios, sincronización de favoritos con Google Chrome y navegación privada
  • Soporte para videochat mediante Google Talk
  • Mejor soporte para redes Wi-Fi, así como guardar una configuración independiente para cada SSID
  • Añade soporte para una gran variedad de periféricos y accesorios con conexión USB: teclados, ratones,hubs, dispositivos de juego y cámaras digitales. Cuando un accesorio está conectado, el sistema busca la aplicación necesaria y ofrece su ejecución.
  • Los widgets pueden redimensionarse de forma manual sin la limitación del número de cuadros que tenga cada escritorio.
  • Se añade soporte opcional para redimensionar correctamente las aplicaciones inicialmente creadas para móvil para que se vean bien en Tablets
4.0 (Ice Cream Sandwich)
  • Versión que unifica el uso en cualquier dispositivo, tanto en teléfonos, tablets, televisores, netbooks, etc.
  • Interfaz limpia y moderna llamada "Holo" con una nueva fuente llamada "Roboto", muy al estilo de Honeycomb.
  • Opción de utilizar los botones virtuales en la interfaz de usuario, en lugar de los botones táctiles capacitivos.
  • Soporte de aceleración gráfica por hardware, lo que significa que la interfaz podrá ser manejada y dibujada por la GPU y aumentando notablemente su rapidez, su respuesta y evidentemente, la experiencia de usuario.
  • Multitarea mejorada, estilo Honeycomb. Añadiendo la posibilidad de finalizar una tarea simplemente desplazándola fuera de la lista.
  • Ha añadido un gestor del tráfico de datos de internet. El entorno le permite establecer alertas cuando llegue a una cierta cantidad de uso y desactivación de los datos cuando se pasa de su límite.
  • Los widgets están en una nueva pestaña del box de aplicaciones, que figuran en una lista similar a las aplicaciones en el menú principal. Por tanto la opción de ser añadidos mediante una larga pulsación en una zona vacía del escritorio ha desaparecido.
  • El corrector de texto ha sido rediseñado y mejorado, ofreciendo la opción de tocar en una palabra para que nos aparezca una lista con las diferentes opciones de edición y sugerencias de palabras similares.
  • Las notificaciones tiene la posibilidad de descartar las que no son importantes y también desplegar la barra de notificaciones con el dispositivo bloqueado.
  • La captura de pantalla, con solo pulsando el botón de bajar volumen y el botón de encendido.
  • La aplicación de la cámara se ha llevado un buen lavado de cara, con nuevas utilidades como es la posibilidad de hacer fotografías panorámicas de forma automática.
  • Android Beam es la nueva característica que nos permitirá compartir contenido entre teléfonos. Vía NFC (Near Field Communication).
  • Reconocimiento de voz del usuario
  • Aplicación de teléfono nuevo con la funcionalidad de buzón de voz visual que le permite adelantarlo o retroceder los mensajes de voz.
  • Reconocimiento facial, lo que haría que puedas cambiar la vista
  • Las carpetas son mucho más fáciles de crear, con un estilo de arrastrar y soltar
  • Un único y nuevo framework para las aplicaciones
  • El usuario tendrá herramientas para ocultar y controlar las aplicaciones que nos “cuelgue” la operadora de turno o el fabricante, liberando recursos de segundo plano (ciclos de ejecución y memoria ram). No obstante, no se podrán desinstalar.
  • Soporte nativo del contenedor MKV
  • Soporte nativo para el uso de Stylus (lápiz táctil).
4.1 (Jelly Bean)
  • Mejora de la fluidez y de la estabilidad gracias al proyecto "Project Butter".
  • Ajuste automático de widgets cuando se añaden al escritorio, cambiando su tamaño y lugar para permitir que los nuevos elementos se puedan colocar.
  • Dictado por voz mejorado con posibilidad de utilizarlo sin conexión a Internet.
  • Nuevas lenguas no occidentales.
  • Android Beam mejorado con posibilidad de transmitir vídeo por NFC.
  • Nuevo modo de acceso rápido al álbum en la cámara, llamado Quick View.
  • Notificaciones mejoradas, con acceso más rápido a más información en la propia barra de notificaciones.
  • Nueva función Google Now, que nos permite tener una serie de "tarjetas inteligentes" que nos muestran información importante como el tiempo, el tráfico, si nuestros vuelos se han cancelado y muchas otras funciones.
  • Búsqueda por voz mejorada, ahora contesta preguntas formuladas como si estuviéramos hablando con otra persona y nos da información en la misma aplicación, actualmente solo en inglés, pero han prometido más idiomas, en las comparativas se demuestra la velocidad de este servicio frente a otros como "Siri" de Apple.
  • Cifrado de aplicaciones.
  • En las actualizaciones de aplicaciones solo se descarga la parte de ésta que ha sido cambiada.
  • Google Chrome se convierte en el navegador por defecto de Android.
  • Se pone fín al soporte de Flash Player para Android a partir de esta versión.
  • Nueva función "Sound Search", que permite saber que música estas escuchando.
  • Gestual Mode para las personas discapacitadas visualmente.
  • Pequeños cambios en la interfaz, como la nueva barra de búsquedas.

 Fuente: Wikipedia

Para los que utilizan el entorno de desarrollo Eclipse, Android tiene un plug-in especial que simplifica la creación de proyectos e integra Eclipse con el emulador Android y herramientas de desarrollo.

 Los componentes principales del sistema operativo Android son:

  • Kernel de Linux. Servicios básicos tales como controladores hardware, gestión de procesos y memoria, administración de seguridad, red y energía son manejados por el kernel. Asimismo proporciona una abstracción genérica para el acceso al hardware y gestiona la interfaz de usuario y recursos de la aplicación
  • Librerías. Se incluyen varias librerías del núcleo escritas en C/C++, que se ejecutan sobre el propio núcleo, tales como libc y SSL, así como:
    • Una librería multimedia para reproducir audio y vídeo.
    • Librerías gráficas entre las que se incluyen SGL y OpenGL para gráficos en 2D y 3D.
    • SQLite para bases de datos.
    • SSL y WebKit para el navegador web y seguridad en Internet.
  • Runtime de Android. El Android Runtime es el motor que impulsa las aplicaciones y junto con las librerías es la base del framework.
    • Librerías del núcleo. El desarrollo de aplicaciones está hecho en Java pero Dalvik no es una máquina virtual Java normal. Las librerías del núcleo de Android proporcionan casi toda la funcionalidad disponible en las librerías del núcleo de Java así como librerías Android específicas.
    • Máquina virtual Dalvik. Dalvik es una máquina virtual Java optimizada para asegurar que un dispositivo puede correr múltiples instancias eficientemente.
  • Framework de aplicaciones. Proporciona las clases usadas para crear aplicaciones. Asimismo proporciona una abstracción genérica para el acceso al hardware y gestiona la interfaz de usuario y recursos de la aplicación. La arquitectura permite la reutilización de componentes, cualquier aplicación puede publicar sus capacidades y otra aplicación puede hacer uso de esas capacidades (sujeto a las reglas de seguridad del framework). Este mecanismo permite que los componentes puedan ser reemplazados por el usuario.
  • Aplicación. Todas las aplicaciones, nativas y de terceros, son construidas sobre la capa de aplicación a través de las APIs. La capa de aplicación se ejecuta en el Android Runtime, utilizando las clases y servicios puestos a disposición desde el Framework de aplicaciones.

 

Componentes principales del Sistema Operativo Android

Fuente: Wikipedia

Fuentes utilizadas para este post: Wikipedia y el libro Professional Android 2 Application Development, autor Reto Meier.

References (1)

References allow you to track sources for this article, as well as articles that were written in response to this article.

Reader Comments (2)

Estupendo el artículo, me ha encantado.
Enhorabuena, muchas gracias y mucho ánimo!

octubre 8, 2011 | Unregistered CommenterDavid

Muchas gracias, la verdad es que ha sido bastante trabajo, pero merece la pena si a la gente le gusta. Gracias por los ánimos, animan a seguir trabajando.

octubre 10, 2011 | Unregistered CommenterMayteBG

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>