Professional Documents
Culture Documents
1. Introduccin a Android.
1.1. Evolucin de Android.
ndice
3. Programacin Android
3.1. Modelo de aplicacin en Android. 3.2. Estructura de una aplicacin Android (.apk) 3.3. Primer ejemplo: Hola mundo. 3.4. Ciclo de vida de una actividad. 3.5. Desarrollo de una Actividad con AppInventor.
Origen de Android:
Android era un sistema operativo para mviles prcticamente desconocido hasta que en 2005 Google lo compr. Hasta noviembre de 2007 slo hubo rumores, pero en esa fecha se lanz la Open Handset Alliance, que agrupaba a muchos fabricantes de telfonos mviles, chipsets y Google y se proporcion la primera versin de Android, junto con el SDK para que los programadores empezaran a crear sus aplicaciones para este sistema. Aunque los inicios fueran un poco lentos, debido a que se lanz antes el sistema operativo que el primer mvil, rpidamente se ha colocado como el sistema operativo de mviles ms vendido del mundo, situacin que se alcanz en el ltimo trimestre de 2010. En 2011, acab dominando el mercado (50,9%) y hacia Julio de 2012, el S.O. Android registraba casi un milln de activaciones diarias a nivel mundial, ocupando a da de hoy en Espaa el 82% del mercado.
Aspectos negativos:
Obligatorio log-in con el ID de Google (dependencia) Constante intercambio de datos con Google Envo de localizacin (desactivable). Los usuarios no estn concienciados de la dependencia de los servidores de Google y lo aceptan sin ms.
Aunque el SO sea libre, gran parte de su valor est en los servicios gratuitos de Google, que no son libres ni conocemos el tratamiento que dan a nuestra informacin privada.
Fragmentacin de Android, solucionada a partir de la versin 4 (ICS): Diversidad de versiones del sistema operacional as como diversas capacidades en los dispositivos (como diferentes resoluciones, tamaos y formatos de pantalla).
Seguridad: existe la posibilidad de que ciertas apps contengan malware. Este riesgo se da al activar la opcin de activar orgenes desconocidos e instalar apps que obtengamos fuera del Google Play Store.
Acerca de Android:
1.2 Qu es Android?
Android es un conjunto (o una pila) de software. Incluye un sistema operativo. El SDK dispone de herramientas y APIs para el desarrollo de aplicaciones. Se programa usando lenguaje JAVA. Ejecuta aplicaciones sobre una maquina virtual derivada de Java VM: DALVIK VM. Al tener un kernel Linux, Android comparte la misma filosofa abierta de mejralo como quieras. Al desarrollador esta filosofa le permite tener acceso a todos los aspectos internos del dispositivo, no slo mediante las herramientas oficiales de desarrollo, sino tambin otras ms avanzadas creadas por terceros.
Curiosidades: iOS y Android pueden ser configurado para un arranque dual en un iPhone o iPod Touch liberados con la ayuda de OpeniBoot e iDroid. Tambin es posible instalar Android en dispositivos Windows Mobile 6.5 como por ejemplo el HTC HD2. Recientemente, ha sido publicada una versin de ICS para Raspberry Pie.
Proceso de arranque:
Es importante conocerlo para el manejo avanzado de los dispositivos. Su funcionamiento, similar al de un PC, consta de las siguientes fases: Activacin de la CPU Carga el bootloader. El bootloader carga el kernel en memoria, el cual es personalizable, permitiendo as de instalar ROMs personalizadas. Una vez carga en la RAM el ncleo, arranca el proceso init, dando paso a la ejecucin de los demonios de sistema y al proceso Zygote, responsable de mantener en marcha la Dalvik VM y los procesos del S.O. como p. ej. la interfaz de usuario.
CPU activa Bootloader Ncleo Linux Dalvik VM + ROM
Arquitectura de Android:
Est formada por varias capas que facilitan la creacin de aplicaciones. Acceso a las capas ms bajas mediante el uso de libreras para evitar programar a bajo nivel las funcionalidades necesarias para que una aplicacin haga uso de los componentes de hardware de los telfonos. Cada una de las capas utiliza elementos de la capa inferior para realizar sus funciones, es por ello que a este modelo de arquitectura se le conoce tambin como pila.
Estas son algunas de las bibliotecas que se incluyen habitualmente: Gestor de superficies (Surface Manager): se encarga de componer las imgenes que se muestran en la pantalla a partir de capas grficas 2D y 3D. Cada vez que la aplicacin pretende dibujar algo en la pantalla, la biblioteca no lo hace directamente sobre ella. En vez de eso, realiza los cambios en imgenes (mapas de bits) que almacena en memoria y que despus combina para formar la imagen final que se enva a pantalla. Esto permite realizar con facilidad diversos efectos: superposicin de elementos, transparencias, transiciones, animaciones, etc. SGL (Scalable Graphics Library): desarrollada por Skia (empresa adquirida por Google en 2005) y utilizada tanto en Android como en Chrome (navegador web de Google), se encarga de representar elementos en dos dimensiones. Es el motor grfico 2D de Android.
No se considera una capa en s mismo, dado que tambin est formado por bibliotecas. En concreto, las bibliotecas esenciales de Android, que incluyen la mayora de la funcionalidad de las bibliotecas habituales de Java as como otras especficas de Android. Su componente principal es la mquina virtual Dalvik: ejecuta todas y cada una de las aplicaciones no nativas de Android. Las aplicaciones se codifican normalmente en Java y son compiladas, pero no para generar un ejecutable binario compatible con la arquitectura hardware especfica del dispositivo Android. En lugar de eso, se compilan en un formato especfico para la mquina virtual Dalvik, que es la que las ejecuta. Esto permite compilar una nica vez las aplicaciones y distribuirlas ya compiladas teniendo la total garanta de que podrn ejecutarse en cualquier dispositivo Android que disponga de la versin mnima del sistema operativo que requiera cada aplicacin. Aunque las aplicaciones se escriben en Java, Dalvik no es realmente una mquina virtual Java. Es decir, no es compatible con el bytecode Java (instrucciones ejecutables independientes de la arquitectura hardware) que ejecutan las mquinas virtuales Java normales.
Java se usa nicamente como lenguaje de programacin, pero los ejecutables que se generan con el SDK de Android no son ejecutables Java convencionales y, por lo tanto, no se pueden ejecutar en mquinas virtuales Java convencionales. Durante el proceso de compilacin de los programas Java (normalmente archivos .java) s que se genera, de forma intermedia, el bytecode habitual (archivos .class). Pero esos archivos son convertidos al formato especfico de Dalvik en el proceso final (.dex, de Dalvik executable). Google hace esto por una cuestin de optimizacin. Los archivos .dex son mucho ms compactos que los .class equivalentes (hasta un 50% menos de tamao), lo que permite ahorrar espacio en el telfono (algo siempre escaso) y acelerar el proceso de carga. Adems, a diferencia de las mquinas virtuales tradicionales, Dalvik se basa en registros en lugar de una pila para almacenar los datos, lo que requiere menos instrucciones. Esto permite ejecuciones ms rpidas en un entorno con menos recursos. Las aplicaciones Android se ejecutan cada una en su propia instancia de la mquina virtual Dalvik, evitando as interferencias entre ellas, y tienen acceso a todas las bibliotecas mencionadas antes y, a travs de ellas, al hardware y al resto de recursos gestionados por el kernel.
Esta capa la forman todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones y que, obviamente, se apoyan en las bibliotecas y en el entorno de ejecucin que ya hemos detallado. La mayora de los componentes de esta capa son bibliotecas Java que acceden a los recursos a travs de la mquina virtual Dalvik. Entre las ms importantes se encuentran las siguientes: Administrador de actividades (Activity Manager): controla el ciclo de vida de las actividades y la propia pila de actividades (se pueden definir como las ventanas que se muestran en la pantalla del dispositivo). Administrador de ventanas (Windows Manager): se encarga de organizar lo que se muestra en pantalla, creando superficies que pueden ser rellenadas por las actividades. Proveedor de contenidos (Content Provider): permite encapsular un conjunto de datos que va a ser compartido entre aplicaciones creando una capa de abstraccin que hace accesible dichos datos sin perder el control sobre cmo se accede a la informacin. Por ejemplo, uno de los proveedores de contenido existentes permite a las aplicaciones acceder a los contactos almacenados en el telfono. Vistas (Views): son los controles que se suelen incluir dentro de las ventanas. Entre ellas encontramos botones, cuadros de texto, listas, y otras como un navegador web o un visor de GMaps.
Administrador de notificaciones (Notification Manager): proporciona servicios para notificar al usuario cuando algo requiera su atencin. Ejemplos: alerta en la barra de estado, emitir sonidos, activar el vibrador o hacer pardear los LEDs. Administrador de paquetes (Package Manager): Maneja informacin sobre los paquetes actualmente instalados, adems de gestionar la instalacin de nuevos paquetes. Administrador de telefona (Telephony Manager): proporciona acceso a la pila hardware de telefona del dispositivo Android. Administrador de recursos (Resource Manager): proporciona acceso elementos propios de una aplicacin que se incluyen directamente en el cdigo: cadenas de texto en diferentes idiomas, imgenes, etc. Personaliza la aplicacin en funcin del idioma o la resolucin de pantalla que tenga, por ejemplo. Administrador de ubicaciones (Location Manager): permite determinar la posicin geogrfica mediante GPS o las redes disponibles. Administrador de sensores (Sensor Manager): permite gestionar todos los sensores hardware disponibles: acelermetro, giroscopio, etc. Cmara: proporciona acceso a las cmaras del dispositivo Android, tanto para tomar fotografas como para grabar vdeo. Multimedia: conjunto de bibliotecas que permiten reproducir y visualizar audio, vdeo e imgenes en el dispositivo.
La capa superior de esta pila software la forman las aplicaciones. En este saco se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, tanto las nativas (programadas en C o C++) como las administradas (programadas en Java), tanto las que vienen de serie con el dispositivo como las instaladas por el usuario. Aqu est tambin la aplicacin principal del sistema: Inicio (Home), tambin llamada a veces lanzador (launcher), porque es la que permite ejecutar otras aplicaciones proporcionando la lista de aplicaciones instaladas y mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o incluso pequeas aplicaciones incrustadas o widgets, que son tambin aplicaciones de esta capa. Lo principal a tener en cuenta de esta arquitectura es que todas las aplicaciones utilizan el mismo marco de aplicacin para acceder a los servicios que proporciona el sistema operativo. Esto implica dos cosas: que podemos crear aplicaciones que usen los mismos recursos que usan las aplicaciones nativas (nada est reservado o inaccesible). que podemos reemplazar cualquiera de las aplicaciones del telfono por otra de nuestra eleccin. Este es el verdadero potencial de Android y lo que lo diferencia de su competencia: control total por parte del usuario del software que se ejecuta en su telfono.
2.1. Instalacin de JDK y Eclipse 2.2. Instalacin del SDK de Android va ADT bundle 2.3. Gestin del idioma y configuracin del plugin ADT con el SDK de Android. 2.4. Instalar y utilizar el emulador para Android
Una vez instalado Eclipse, procederemos a configurar el plugin del idioma. Estas traducciones no vienen dadas por los desarrolladores del IDE, sino que las obtendremos desde http://babel.eclipse.org/babel/ En primer lugar, debemos pulsar la barra Help del IDE.
Tan solo resta aceptar las condiciones y trminos (pulsa Accept All) y esperar a que se descargue todo para empezar a trabajar.
El emulador ms recomendable para desarrollar es este que trae consigo el bundle, pero aqu os vamos a mostrar otro que podis utilizar como segundo recurso para probar y depurar aplicaciones Android: el emulador Bluestacks. La ventaja, es que es capaz de sincronizar las aplicaciones de nuestro mvil o tablet con el emulador (ojo! Puede llegar a ocupar mucho espacio en el disco duro si lo sincronizas).
Programacin Android
3.1. Modelo de aplicacin en Android. 3.2. Estructura de una aplicacin Android (.apk) 3.3. Primer ejemplo: Hola mundo. 3.4. Ciclo de vida de una actividad. 3.5. Desarrollo de una Actividad con AppInventor.
Aplicaciones Es un paquete con componentes de Android, vque vienen comprimidos en un formato denominado Android PacKage (apk). Cada aplicacin es independiente Se ejecuta en su propio proceso de Linux Cada proceso tiene su propia mquina virtual de Java Cada aplicacin tiene asignado un ID de usuario de Linux Solo ese ID de usuario tiene permisos para acceder a los archivos de la aplicacin Componentes de una aplicacin Actividades Servicios Broadcast receivers Content providers
Actividad: Presenta una interfaz de usuario enfocada en algo que el usuario puede realizar, como elegir un contacto, seleccionar una fotografa, Aplicacin = conjunto de actividades independientes que trabajan juntas. Una de las actividades se marca como la inicial al arrancar una aplicacin. Servicio: No tiene UI y se ejecuta en background por periodo indefinido. Ej. Reproductor de msica Expone una interfaz para interactuar o Ej. Parar la reproduccin de msica Es posible acceder desde otros componentes o aplicaciones
Broadcast receivers: No realiza ningn accin por si mismo. Recibe y reacciona ante anuncios de tipo broadcast. Existen muchos originados por el sistema o Ej. Batera baja Las aplicaciones puede lanzar un broadcast No tienen UI, aunque pueden iniciar una actividad para atender al anuncio Content providers: Expone un conjunto especifico de datos a otras aplicaciones Los datos pueden estar almacenados en cualquier lugar: fichero, SQLite, internet, Hace uso de un ContentResolver para acceder a los datos expuestos por un content provider
El Formato APK es bsicamente un archivo comprimido ZIP con diferente extensin por lo cual pueden ser abiertos e inspeccionados usando un software archivador de ficheros como 7-Zip, Winzip, WinRAR o Ark.
El Fichero manifest.xml
Propiedades de la aplicacin Declaracin de todos los componentes existentes en la aplicacin Intent filters Un componente indica a intenciones puede responder Declaracin de los permisos requeridos uses-permission Acceso a determinado, estado del telefono, acceso a internet, etc. Los permisos que requiere se muestran al usuario al instalar la aplicacin.
Declaracin de permisos propios Restringe que aplicaciones pueden hacer uso de un determinado componente
Estos son los ficheros que podemos encontrar en un proyecto de Eclipse ADT. res/anim = animaciones del proyecto res/color = colores usados en la aplicacin res/drawable = imgenes usadas en el proyecto res/layout = las interfaces graficas de usuario res/menu = la estructura de los mens res/raw = Cualquier fichero que no encaje en el resto de directorios y que queramos referenciar desde R.java res/values = los valores como cadenas de texto que queramos referenciar desde R.java res/xml = los fichero de configuracin de nuestra aplicacin tales como preferencias, widget o metadatos. libs/ = librerias necesitadas por el proyecto. .jar AndroidManifest.xml = fichero que describe nuestra aplicacin. Detalla los componentes de esta, sus permisos y librerias externa. build.properties Fichero de configuracin del proyecto. build.xml Fichero de configuracin para la compilacin del proyecto. ant
Proyecto: HolaMundo
1. Eclipse seleccionar File > New > Project y aparecer una nueva ventana en la que hay que seleccionar Android Project. 2. A continuacin hay que indicar la siguiente informacin y hacer clic en Finish: Project name (nombre del proyecto): HolaMundo Build Target: se debe seleccionar al menos una plataforma. Application name (ttulo de la aplicacin): Hello, Android Package name (paquete de la aplicacin, debe ser nico entre los paquetes instalados en un sistema Android): com.example.helloandroid Create Activity (nombre de la clase stub generada por el plugin, subclase de la clase Activity de Android, y utilizada para ejecutar acciones): HelloAndroid Min SDK version: indicar el mnimo nivel de API requerido por la aplicacin. Si no se indica aparecer el siguiente mensaje al ejecutar la aplicacin:
Proyecto: HolaMundo
El proyecto se habr creado y dentro de src contendr la clase HolaMundo.java con el siguiente contenido:
package com.example.holamundo; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class Hola_Mundo extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hola__mundo); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_hola__mundo, menu); return true; } }
La clase generada hereda de la clase Activity de Android, que es el tipo de clase que se utiliza para ejecutar alguna accin. Una aplicacin puede tener definidas varias actividades pero un usuario nicamente interacta con una de ellas a la vez. El mtodo onCreate() ser llamado por el sistema Android cuando la actividad se inicia, y es donde se debe realizar toda la inicializacin y configuracin de la interfaz de usuario.
Proyecto: HolaMundo
Interfaz de usuario El cdigo generado se completa (lneas modificadas en negrita) para incluir la interfaz de usuario que mostrar el saludo.
package
com.example.holamundo;
import
android.os.Bundle;
import
android.app.Activity;
import
android.view.Menu;
import
android.widget.TextView;
public
class
Hola_Mundo
extends
Activity
{
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hola__mundo);
TextView
tv
=
new
TextView(this);
En este ejemplo se utiliza la clase TextView porque es la subclase que maneja los textos. Al objeto TextView se le pasa como parmetro un objeto de tipo Context, el cual ofrece servicios como la resolucin de recursos, la obtencin de acceso a base de datos, y preferencias. Como la clase Activity hereda de Context, y a su vez la clase Hola_Mundo es una subclase de Activity, es tambin Context y por lo tanto se puede utilizar this como parmetro.
Proyecto: HolaMundo
A continuacin, se define el contenido del texto con setText(). Por ltimo, se pasa la TextView a setContentView() con el fin de mostrarla como el contenido de la interfaz de usuario de la actividad. Si la actividad no llamara a este mtodo, entonces no habra interfaz de usuario y el sistema mostrara una pantalla en blanco. Ejecucin de la aplicacin El siguiente paso es ejecutar la aplicacin mediante la opcin Run > Run de Eclipse mientras estamos posicionados sobre el proyecto.
Proyecto: HolaMundo
Ejecucin de la aplicacin Finalmente, tras elegir el modo Android Application, se nos ejecutar el emulador que hemos configurado anteriormente (Nexus S) y veremos la aplicacin ejecutndose.
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hola__mundo);
TextView
tv
=
new
TextView(this);
tv.setText("Hello,
Android");
setContentView(tv);
}
AppInventor es una aplicacin web que tiene como objetivo facilitar la programacin en Android. Est pensado y diseado de manera que una persona que no tenga ni idea de programar pueda crearse su aplicacin Android en media hora. Esto es til de cara a implementar una aplicacin de prueba, o una GUI sencilla, que despues podemos ampliar/mejorar en Eclipse.
El primero es la aplicacin web en la que podrs disear la interfaz grfica y definir los componentes y variables de tu futura aplicacin. Podemos definir 8 lugares de inters. (ver figura de la anterior transparencia). 1] Para navegar ente Proyectos, Diseos y Ejemplos 2] Todos los elementos grficos que puedes aadir. Desde botones hasta sensores de movimiento pasando por clientes Twitter. 3] Cmo quedar la aplicacin. Arregla y ordena los elementos a tu gusto 4] Los componentes activos que tienes actualmente. Puedes cambiarles el nombre o borrarlos 5] Los componentes no visibles: estn en la aplicacin pero no tienen representacin grfica (ej: notificacin, sensores,) 6] Las propiedades de cada elemento. Aqu puedes cambiar el nombre, color, tamao, textos y dems. 7] Abre el Editor de Bloques (explicado a continuacin) 8] Guarda y comparte tu aplicacin con todo el mundo
El editor de Bloques
En la web tan slo puedes disear el apartado visual, pero el programa no funcionar: pones las piezas pero es en el editor dnde defines que hace cada cosa.
El editor de Bloques
Podemos distinguir 1] Entre Mis Bloques y los Built-in Blocksblockeditor2 Cada botn o cuadro de texto de tu programa corresponde a un bloque (2). Con el editor de bloques puedes interaccionar con los bloques para realizar las funciones que desees. Lo vers con ms detalle en la prxima entrega con el vdeo de una aplicacin. Los Built-in Blocks corresponden a bloques predefinidos que realizan acciones tales como bucles, lgica u operaciones matemticas entre otras. 2] Cada uno de los componentes de tu programa. Desde aqu podrs asignarles las funciones que quieras. 3] Todo el tablero en el que introducir las rdenes. Muy pequeo a mi gusto. 4] Botn para enviar la aplicacin al telfono para testearla.
Existen tutoriales para tal efecto, utilizando una herramienta que se conoce como Java Bridge https://groups.google.com/forum/?fromgroups=#!topic/app-inventorinstructors/EKZOZLeIavs Tambin hay una aplicacin, actualmente en desarrollo, que traduce de AppInventor a Java directamente: http://code.google.com/p/appinventor-java-translation/
1. Descarga el fichero desde App Inventor 2. Crear una carpeta con el mismo nombre que el proyecto (archivo .zip) (e.g. Project.zip => Project) 3. Coloca el zip como entrada (input) y la carpeta como salida (output). 4. Trataremos de importarla como proyecto en Eclipse.