Está en la página 1de 27

Programacin en Android: Parte I Introduccin a la plataforma

Estimados Usuarios de Neoteo: Vamos a empezar una serie de tutoriales acerca de esta innovadora plataforma, con el objetivo de que toda la comunidad conozca las bases acerca del desarrollo en la misma, podamos compartir experiencias y por qu no desarrollar aplicaciones de cdigo abierto con una serie de funcionalidades tiles para todos nosotros. En primera instancia debemos preguntarnos:

Qe es android?
Android es el nombre clave para un Sistema Operativo orientado al uso del mismo en dispositivos mviles, tomando en cuenta que en una primera instancia se lo creo para ser usado solamente en telfonos celulares. Sin embargo, posteriormente se puede encontrar a Android en todo tipo de dispositivos como tablets, Smartphone, netbooks e incluso algunos electrodomsticos (este ltimo punto se lo est experimentando aun). Este SO fue desarrollado en primera instancia por Android Inc., en Palo Alto, California, los cuales fueron adquiridos en 2005 por Google Inc. En Noviembre del 2007 es lanzado por primera vez el Android Software Development Kit, y casi un ao despus (Agosto 2008) aparece Android 0.9 SDK en versin beta. Pasado un mes Google lanza la versin Android 1.0 (Release 1). La primera versin de Android es muy diferente a las versiones que tenemos actualmente, donde se aprecia la evolucin del sistema operativo. Se lanza la versin de Android 1.5 (Cupcake) en mayo del 2009, la cual tiene como novedad la inclusin de grabacin de video, soporte para Bluetooth, sistema de teclado en pantalla personalizable y reconocimiento de voz (como servicio en la nube con Google Voice). A partir de esta versin se empieza a tomar en cuenta seriamente a este SO ya que muchos equipos de diferentes fabricantes optan por equipar sus telfonos con esta versin del SO. Posteriormente, aparecen las versin 1.6 llamada Donut, agregando varias mejoras como el indicador de batera, siendo esta una de las versiones ms usadas en los dispositivos con android (mi primera tablet chinita tena esta versin y la sigo usando al da de hoy). En la actualidad se tienen varias versiones nuevas como la 2.2 (Froyo) que es la primera que incluye soporte para ver contenido en Flash, 2.3 (GingerBread), siendo que las versiones ms recientes como la 3.0 segn mi conocimiento no han sido Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

liberadas. Aqu les dejo un grfico acerca de la historia de android:

Caractersticas Tcnicas de la Plataforma


Android es un SO de cdigo Abierto, basado en Linux, para ser utilizado en dispositivos con procesadores ARM. Este SO cuenta con varias libreras y Apis desarrolladas por Google lo cual facilita el desarrollo de aplicaciones en la misma, adems las aplicaciones corren en una mquina virtual denominada Dalvik. Dalvik es una parte esencial de sistema operativo, una aplicacin antes de ser ejecutada es convertida en un ejecutable de la mquina de Dalvik (formato .Dex), que esta designado para optimizar su uso en equipos que tienen muchas restricciones en uso de procesador y memoria, tales como los smartphones. Dispone de soporte para medios con formatos comunes de audio, video e imgenes planas (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF). Multimedia: Dispone de soporte para medios con formatos comunes de audio, video e imgenes planas (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF). Tiene una serie de posibilidades para comunicacin tales como Bluetooth, Wifi, Edge, 3G. Se pueden mencionar como otras caractersticas la cmara, GPS, brjula, acelermetro, pantalla tctil, navegador propio con el motor Webkit (OpenSource). Una caracterstica muy interesante es que Android tiene por defecto un pequeo motor de base de datos denominado SQLlite, permitiendo a cualquier aplicacin crear tablas, relaciones, realizar querys y obtener data de manera muy sencilla y eficiente.

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Arquitectura de Android

Estos son los componentes principales de android: Aplicaciones: Todas las aplicaciones estn escritas en lenguaje de programacin Java, las aplicaciones base incluidas en el sistema son las de envi de sms, calendario, mapas, navegador. Framework de Aplicaciones: Apis a las cuales tienen acceso los desarrolladores, con el objetivo de simplificar la reutilizacin de componentes. Libreras: Conjunto de bibliotecas usadas para por varios componentes del sistema. Runtime: Android incluye un set de bibliotecas base que proporcionan la mayor parte de las funciones disponibles en las bibliotecas base del lenguaje Java Ncleo Linux: Depende de Linux para los servicios base del sistema como seguridad, gestin de memoria, gestin de procesos, pila de red, etc. Lo que lo convierte en un sistema muy estable y slido.

Ventajas y Desventajas del desarrollo en Android Ventajas


Entorno de desarrollo Libre y compatible con varios sistemas operativos (Eclipse) que cuenta con simulador de android para probar las aplicaciones, a comparacin del IOS del IPhone no requerimos un hardware en especfico para desarrollar aplicaciones. Libreras y componentes reutilizables para todo tipo de aplicaciones. Gran comunidad de desarrolladores, muchas fuentes de informacin acerca de la Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

plataforma. Ms de 100.000 aplicaciones disponibles para telfonos Android, la mayora gratis. Adems la libertad de cdigo permite adaptar Android a bastantes otros dispositivos adems de telfonos celulares. El sistema Android es capaz de hacer funcionar a la vez varias aplicaciones y adems se encarga de gestionarlas, dejarlas en modo suspensin si no se utilizan e incluso cerrarlas si llevan un periodo determinado de inactividad.

Desventajas
Google tiene una poltica restrictiva hacia las versiones ms recientes, no hacindolas pblicas hasta que ellos lo vean conveniente. Al ser un sistema multitarea, esto puede presentar un problema ya que se puede llevar a cabo un consumo elevado de la batera. Suele ser poco intuitivo para los usuarios nuevos.

SDK
El SDK es el Kit de desarrollo que ofrece google de manera gratuita, con el SDK instalado y algn IDE o entorno de desarrollo disponible se puede empezar a desarrollar aplicaciones sin demora alguna. Se puede obtener desde la web Android SDK | Android Developers

Requerimiento de sistema operativo y software


Windows XP, Vista, 2008 Server, 7 Linux. Mac OS X 10.4.8 o superior, compatible solamente con arquitectura X86.

Entorno de desarrollo
Solo se requiere la descarga e instalacin de alguno de los siguientes entornos: Eclipse for Java Developers: Eclipse IDE for Java Developers | Eclipse Packages IntelliJ Idea Communitiy Edition IntelliJ IDEA :: Best Java IDE to do more highFuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

quality code in less time

Preparar el SDK para ser utilizado


1. Prepare la Pc y asegrate que cumpla con los requisitos mnimos mostrados anteriormente. 2. Instala el SDK correspondiente a tu sistema operativo de la pgina Android SDK | Android Developers, si estamos en windows elegiremos el installer_r12-windows.exe. 3. Descarga eclipse desde Eclipse IDE for Java Developers | Eclipse Packages. 4. Ejecuta eclipse e instala el ADT, esto se hace eligiendo Help -> Install New Software, en la cual se abre una nueva pantalla denominada Install.

En ese nueva pantalla click en el Botn Add y nos saldr una ventana denominada Add site, en la casilla "Name:" ponemos el nombre que deseemos, y en location "https://dlssl.google.com/android/eclipse/" (sin las comillas).

Damos click en Ok, y le damos un poco de tiempo para que busque el plugin. Marcamos la casilla "Development Tools" y hacemos click en Next, Finish y as sucesivamente hasta que ya se haya instalado el ADT. Con todos estos requisitos complidos ya estamos listos para iniciar el desarrollo de aplicaciones en Android, espero que este tutorial les haya sido util, y esperen proximamente el siguiente tutorial donde haremos nuestra primera aplicacin.

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Programacin en Android: Parte II Fundamentos de Java Introduccin


Saludos usuarios sedientos de nuevos conocimientos, gracias a la buena acogida que tuvo el primer tutorial, vamos a seguir con la segunda parte, en la misma vamos primero a hacer un repaso de algunos conceptos bsicos de programacin en Java como base para nuestros futuros desarrollos.

Java

Java es un lenguaje de programacin orientado a objetos que nos permite realizar todo tipo de aplicaciones, el cual es de uso libre y gratuito. Ha sido desarrollado por la compaa Sun Microsystems con gran dedicacin y siempre enfocado a cubrir las necesidades tecnolgicas ms punteras. Sin embargo, ahora es propiedad de la empresa Oracle, la cual adquiri a Sun Microsystems. Una de las principales caractersticas por las que Java se ha hecho muy famoso es que es un lenguaje independiente de la plataforma, dado que es un lenguaje interpretado, un lenguaje interpretado es un lenguaje de programacin que est diseado para ser ejecutado por medio de un intrprete, en contraste con los lenguajes compilado. Por lo tanto, un lenguaje compilado es ejecutado directamente en cdigo de mquina, en cambio uno interpretado requiere de otro componente que lo traduce a lenguaje de mquina, lo que posibilita que un cdigo interpretado pueda ser ejecutado en cualquier otro tipo de sistema operativo, si se cuenta con un intrprete codificado para ese Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

Sistema Operativo. Por consiguiente, Java es un lenguaje independiente de la plataforma, ya que gracias a que corre en una mquina virtual de java (esto es a lo que nos referamos como intrprete), permite que un mismo programa pueda ser ejecutado en Windows, GNU/LINUX, Solaris e Incluso MacOS. Java en un principio fue pensado para poder ser usado en cualquier tipo de electrodomstico , pero la idea fracaso. Los fundadores de Sun rescataron esta idea para poder ser utilizada en internet, gracias a ello ha sido extendido a una serie de aplicaciones y plataformas, permitiendo utilizar java en dispositivos mviles, aplicaciones empresariales para gestin de bases de datos, reportes e incluso para el procesamiento de DataWarehouse en Business Intelligence, todo esto desde un entorno libre como Eclipse IDE for Java.

Repaso de programacin en Java


Conociendo un poco acerca de las bondades de Java, de su objetivo e historia, vamos a hacer un breve repaso de los temas ms importantes de programacin en el mismo, dado que no es el objetivo del tutorial convertiros en programadores profesionales de java, este repaso nos servir para recordar lo que muchos conocemos acerca de otros lenguajes. Para los que programan en C, la sintaxis de java es prcticamente la misma que en C, excluyendo punteros los operadores, estructuras de control son prcticamente las mismas. Para los que programan en Basic, Pascal, no les ser de mucha dificultad aprender este lenguaje. Los que conocen Visual C++ y C#, bsicamente C# y java a nivel de sintaxis son muy similares.

Resumen de Operadores de Java


La siguiente referencia rpida resume los operadores proporcionados por el lenguaje de programacin Java.

Operador de asignacin sencillo


= Operador de asignacin sencillo

Operadores aritmticos
+ Operador de adicin (tambin se utiliza para concatenar Strings) - Operador de sustraccin * Operador de multiplicacin / Operador de divisin Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

% Operador de resto

Operadores unarios
+ Operador unario ms, indica un valor positivo (sin embargo los nmero son positivos sin el operador) - Operador unario menos; niega una expresin ++ Operador de incremento; incrementa un valor en 1 -- Operador de decremento; decrementa un valor en 1 ! Operador de complemento lgico; invierte el valor de un booleano

Operadores de igualdad y relacionales


== Igual a != Distinto de (No igual a) > Mayor que >= Mayor que o igual a < Menor que <= Menor que o igual a

Operadores condicionales
&& AND-Condicional || OR-Condicional ?: Ternario (abreviatura de la sentencia if-then-else)

Operado de comparacin de tipo


instanceof Compara un objeto con un tipo indicado

Operadores a nivel de bit y de desplazamiento de bit


~ Complemento unario a nivel de bit << Desplazamiento con signo a la izquierda >> Desplazamiento con signo a la derecha >>> Desplazamiento sin signo a la derecha & AND a nivel de bits ^ OR exclusivo a nivel de bits | OR inclusivo a nivel de bits

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Resumen de Sentencias de Control If


Cdigo:
Int I = 0; If (i>0) { //Hacer algo }

If-else
Cdigo:
Int I = 0; If (i>0) { //Hacer algo } Else { //De lo contrario hacer otra cosa }

If-else if-else
Estructura: if (condicion) { instrucciones; } else { instrucciones; } Ejemplo: Cdigo:
Int I = 0; If (i>0) { //Hacer algo } else if(i==2) { //si se cumple la condicin hacer esto } Else { //Si no, hacer esto }

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Switch
switch (expresin) { case <valor>: instrucciones; [break;] case <valor>: instrucciones; [break;] ... [default: instrucciones;] } Ejemplo: Cdigo:
switch (opcion) { case 1: x = x * Math.sqrt(y); break; case 2: case 3: x = x / Math.log(y); break; default: System.out.println("Error");

For
Estructura: for (inicializacin; comparacin; incremento) { instrucciones; } Ejemplo: Cdigo:
int I = 0; for(i=0;i<100;i++) { System.out.println(i); //hacer esto 100 veces }

While
Estructura: while (condicin) { instrucciones; } Ejemplo: Cdigo:
int i = 0; while(i==0) { System.out.println( hola! ); //hacer mientras i==00 }

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Variables

En Java la sintaxis de la declaracin de variables es similar a C y C++: <tipo_datos> <nombre_variable>; Por ejemplo para declarar una variable de tipo entero se hace de la siguiente manera: Cdigo:
int i = 0; (declaracin de variable con un valor inicial).

A diferencia de C, y de manera similar a C++ una variable puede ser declarada en cualquier punto de un bloque, un bloque est definido por varias sentencias de cdigo entre dos llaves: { //Bloque. } Los tipos de datos que tenemos en java son: byte, 8 bits short, 16 bits int , 32 bits long, 64 bits float, 32 bits string

Arrays
Los arreglos o arrays en java se declaran de la siguiente manera: Una dimensin: <tipo_datos> <nombre_array>[]; <nombre_array> = new <tipo_datos>[<num_elementos>]; Varias dimensiones: <tipo_datos> <nombre_array>[][]...[]; <nombre_array> = new <tipo_datos>[<num_elementos>]...[<num_elementos>]; Ejemplo: Cdigo:
float v[] = new float[11]; float M[][]= new float[3][4]; String s[] = {"hola", "adios"}; inicializados // Una dimensin con 11 elementos // Dos dimensiones con 3x4 elementos // Una dimensin con dos elementos

Tipos de datos envolventes


Para cada uno de los tipos simples existe una clase equivalente, con constantes y mtodos que nos pueden ser tiles: Tipo Simple Clase Equivalente byte, short, int y long -> Number, Byte, Short, Integer y Long float y double-> Number, Float y Double boolean -> Boolean Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

char -> Character Ejemplo: Cdigo:


int i = 4; Integer j = new Integer(5); (envolvente) // "i" es una variable entera (tipo simple) // "j" es un objeto de la clase Integer

Colections
Java y su api nos proporcionan colecciones en donde podemos guardar series de datos, tales como List, ArrayList, Vector, etc. Dichas colecciones no son parte del lenguaje, son estructuras de datos definidas como Clases en el paquete java.util. Este tipo de colecciones genricas existen desde la versin 1.5.0 de java. Ejemplo: Cdigo:
ArrayList<Alumno> miclase = new ArrayList<Alumno>(); miclase.add( new Alumno("Pepe", 5.0) ); miclase.add( new Alumno("Alex", 4.2) ); miclase.add( new Alumno("Pepa", 6.3) ); for (Iterator i = miclase.iterator(); i.hasNext();) { System.out.println( i.next() ); }

Procedimientos y Funciones
Antes conocidos como Subprogramas, las funciones y procedimientos nos permiten dividir un programa en pequeas unidades lgicas, las mismas se llaman Funciones si realizan una operacin y devuelven un valor, y procedimientos si no devuelven ningn valor. Para definir un procedimiento, se utiliza la siguiente estructura void <Nombre_Funcion> (<Argumentos>) { //Cuerpo del procedimiento } Para definir una funcin se utiliza la misma estructura, pero definiendo que valor se va a devolver: <tipo de dato> <Nombre_Funcion> (<Argumentos>) { //Cuerpo del procedimiento Return <valor a devolver>; } Ejemplo: Cdigo:
Int funcion(int x) { Int resultado=x*x+3; Return resultado; }

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Clases y OOP

La programacin ha sufrido una serie de avances desde los principios de la electrnica, partiendo primero por los lenguajes de bajo nivel (tales como el assembler), los de mediano nivel como Fotran y C, y los de alto nivel como C++, Basic, Java. Esta jerarquizacin de niveles representa la facilidad que tiene un lenguaje para ser entendido por un ser humano, siendo los de bajo nivel ciertamente incomprensibles por un humano comn sin conocimientos, y los de alto nivel bastante similares a nuestro lenguaje natural. De estos niveles, la programacin espagueti era un problema en los inicios de la computacin, ya que se tenan sentencias de cdigo repletas de la famosa palabra clave GOTO, la cual hacia que para poder depurar un determinado programa el usuario tena que saltar del inicio, al final al medio y a todo lado dentro del cdigo, haciendo que el mantenimiento de los sistemas sea prcticamente imposible. Gracias a la programacin estructurada, que es una tcnica para escribir programas de manera clara, para ello se utilizan nicamente tres estructuras: secuencia, seleccin e iteracin. Lo que posibilitaba que los desarrollos sean ms claros y fciles de entender. Sin embargo, las aplicaciones se fueron haciendo cada vez ms complejas y ambiciosas, y se dio la necesidad de reutilizacin del cdigo fuente de las aplicaciones, de esta nocin fue que surgi la Programacin Orientada a Objetos, en la cual tenemos Clases que es una construccin que se utiliza como un modelo (o plantilla) de un objeto. Utilizando estas clases se puede crear los planos de un objeto, y a partir de este se crea o instancia el objeto pudiendo cambiar varias caractersticas del mismo segn sea nuestra necesidad, pero respetando el diseo inicial o plantilla el cual tiene un determinado Comportamiento. A estas caractersticas las denominamos variables o propiedades y al comportamiento Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

o acciones Mtodos, accediendo a los mismos utilizando el operador . . La Programacin orientada a Objetos (POO), establecen varios conceptos importantes, que se detallan a continuacin: Abstraccin: denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos. Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una aplicacin en partes ms pequeas. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstraccin. Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. Herencia: Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de clasificacin Para que sea ms fcil de entender, podemos ver el siguiente ejemplo: Cdigo:
Clase Auto //Creamos la clase { String color; int ao; Void Arrancar() { //ARRANCA! } }

Y para instanciar la clase, o crear el objeto podemos hacer lo siguiente: Cdigo:


Auto Ferrari = New Auto(); //Instanciamos una clase Ferrari.Color = Red; //Le otorgamos un color. Ferrari.Ao = 2011; //Le asignamos el ao de fabricacin. Ferrari.Arrancar() //Arrancamos el auto

En todo en lo que trabajemos en programacin Java se van a utilizar Clases y Objetos de las libreras de Android.

Fin de la transmisin
Me parecio de vital importancia hacer un pequeo repaso de Java para todos los usuarios interesados en esta serie de tutoriales de programacin Android, sean novatos o viejos lobos de mar en la programacin como yo, no esta dems recordar y aprender algunos conceptos bsicos. Dado que ya tenemos el IDE de desarrollo (Eclipse) y los conceptos bsicos de Java, ya estamos listos para empezar a desarrollar aplicaciones, asi que mientras ustedes repasan algunos conceptos bsicos, vamos preparandonos para la siguiente parte de los tutoriales: Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

Programacin en Android: Parte III - Hello World

Programacin en Android: Parte III World Introduccin

Hello

Saludos a todos los usuarios de Neoteo, a continuacin vamos a proceder a revisar los conceptos bsicos de la programacin en Android. Por lo tanto, vamos a configurar nuestro entorno de desarrollo y el emulador del Android SDK para poder desarrollar nuestra primera aplicacin, el clsico Hello World!

De qu est compuesta una aplicacin en Android?


Cuando se desarrolla una aplicacin de escritorio se toma en cuenta una interfaz grfica, que tiene ventanas, subventanas, dilogos y alertas, para interactuar con otros programas generalmente se hace a travs de una API tal como JDBC (Java Database Connectivity, bases de datos en java), para comunicarnos con Mysql o algn motor de base de datos, android tiene conceptos similares, con algunas diferencias dado sus caractersticas como plataforma para dispositivos mviles, donde se debe tener aplicaciones ms resistentes a cuelgues y bloqueos, no queremos que se cuelgue el telfono justo cuando la ex nos llama y nos pide volver, Android debe poder cerrar la aplicacin y permitirte contestar a tu Amor perdido. Dejando los ejemplos de la vida real de lado, veamos los componentes de cada aplicacin de Android.

Actividades
Las actividades son los bloques de construccin de la interfaz de usuario. Por lo tanto, se puede decir que una actividad es lo mismo que una ventana en una aplicacin de Escritorio. Sin embargo, es posible tener una actividad sin que est presente ningn tipo de interfaz grfica, como servicios o proveedores de contenidos. Una aplicacin en Android puede contener varias actividades.

Content Providers
Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

Los proveedores de contenidos son una capa de abstraccin para cualquier tipo de datos o informacin almacenada en el dispositivo que es accesible por varias aplicaciones. El modelo de desarrollo de android sugiere hacer que la informacin de tu aplicacin est disponible para otras aplicaciones tambin. Creando un proveedor de contenido se puede permitir que varias aplicaciones tengan acceso a los datos, pero gestionando cuales lo pueden hacer.

Intents
Los intents son sistemas de mensajes, ejecutndose dentro del dispositivo , notificando las aplicaciones de varios eventos como ser cambio de estado del hardware (cuando se introduce una tarjeta SD), llegada de informacin (cuando llega un SMS), eventos de aplicacin.

Servicios
Las actividades, Intents, y proveedores de contenidos tienen un corto ciclo de vida dentro de Android, en cambio los servicios estn diseados para mantenerse corriendo, si se requiere un proceso que corra independientemente de una actividad, por ejemplo un reproductor de msica que se mantiene reproduciendo en segundo plano a pesar que cambiemos de actividad.

Caractersticas que tiene Android para ayudarnos en el desarrollo


Android cuenta con varias cosas interesantes que nos hace la vida ms fcil a los desarrolladores tales como: Almacenamiento: Se puede empaquetar la informacin dentro de la misma aplicacin, tal informacin como strings, imgenes y recursos, o leer y escribir informacin en la una tarjeta SD. Redes: La mayora de los dispositivos Android estn listos para conectarse a internet a travs de algn medio de comunicacin como Ethernet, Wifi, 3G o Edge. Multimedia: Los dispositivos Android tienen la habilidad de reproducir audio y video, sacar fotografas o incluso hacer grabar video. Acelermetros: Muchos dispositivos Android cuenta con acelermetros dentro de su Hardware, los cuales pueden ser utilizados de manera fcil mediante las libreras correspondientes. Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

GPS: Los dispositivos android frecuentemente tendrn acceso a dispositivos GPS para localizacin, desplegando mapas y direcciones. Servicios Telefnicos: Los dispositivos Android, que generalmente son telfonos , permiten al software iniciar llamadas , enviar y recibir SMS, y todo lo que se pueda llevar a cabo con la telefona moderna.

Configuracin del Emulador de Android


Lo que ms me gusta del desarrollo en Android, es que el SDK incluye un emulador bastante bueno, fcil de configurar que simula a la perfeccin las condiciones de un dispositivo Real, permitindonos probar una seria de configuraciones tales como resolucin, tamao de la pantalla, versin del sistema SO con el objetivo de hacer que nuestra aplicacin sea compatible desde un gran nmero de dispositivos, incluso podemos Emular el Samsung Galaxy Tab! Para poder configurar un dispositivo Android virtual vamos al directorio donde instalamos el Android SDK y hacemos click en el ejecutable SDK Manager , el cual en mi pc se encuentra en C:\Users\Administrador\android-sdk_r07-windows\android-sdkwindows. Esperamos un momento y se abrir la siguiente ventana:

En esta ventana podemos elegir las versiones del SDK de Android y dems herramientas que nos pueden ser tiles, eligindolas haciendo click en accept las instalamos, recomiendo instalar todos los archivos. Dependiendo de nuestra velocidad de internet la instalacin se puede tardar de un pocos minutos a una hora. Cuando ya se hizo la instalacin nos dirigimos a la seccin denominada Virtual Devices , y hacemos click en New:

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Se abre una nueva ventana en donde se tienen los siguientes campos: Name: Nombre que le vamos a dar a nuestro dispositivo. Target: Versin del SO Android a utilizar. SD Card: Tarjeta de memoria se puede establecer el tamao de la SD o utilizar un archivo. Skin: Apariencia que va a tener el dispositivo. Hardware: Aqu podemos agregar soporte para tarjetas SD, densidad del LCD, Acelermetro, Soporte para DPAD, Soporte para reproduccin de audio, Soporte para TrackBall, Batera, Touch Screen, Cmara GPS, etc. Creemos el siguiente dispositivo: Name: ANDROID Target: Android 1.5 SD Card: 1024 Skin: Default HVGA Hardware: Lo dejamos por defecto. Click en Create AVD, y podemos ejecutar nuestra mquina virtual eligiendo el nombre de la mquina que acabamos de crear, y haciendo click en el botn Start y launch de la ventana que se abre.

Ya tenemos un dispositivo listo para ser utilizado en nuestros desarrollos.

Nuestro Primer Proyecto de Android


Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

Eclipse es un entorno de desarrollo bastante simple, muy similar a otros como NetBeans, .Net o incluso al mismo y poderoso Turbo C.

En el contamos bsicamente con 4 reas de inters: 1. Ventana de Cdigo y pestaas, aqu escribimos nuestro cdigo y abrimos los distintos ficheros dentro de nuestro proyecto. 2. Explorador de Paquetes, aqu se encuentran todos nuestros proyectos y podemos explorarlos, abrirlos, cerrarlos. 3. Barra inferior, aqu se muestran los errores, declaraciones, problemas y la consola de java. 4. Barra de Men, donde tenemos todas las acciones a realizar con el IDE. Con el SDK debidamente configurado, para crear una nueva aplicacin de android procedemos a hacer lo siguiente: Click en File->New-> Project Hacemos click en el tem que dice Android y elegimos un Android Project. En la ventana que se abre escribimos el nombre del proyecto Hello World en el textbox Project Name, elegimos Create new Project in workspace . Elegimos el checkbox en Build Target: Android 1.5 En el panel Properties le damos un nombre a la aplicacin, pongamos Hello World (sin comillas obviamente). En Package name pongamos Android.Neoteo, en crate activity ponemos Main . Next y Finish. Ya tenemos nuestro primer proyecto de Android Creado.

Estructura de un Proyecto de Android


Cuando se crea un nuevo proyecto de Android se vern varios tems en el directorio principal del proyecto: AndroidManifest.xml, es un fichero XML que describe la aplicacin que se va a construir, como tambin que componentes van a ser utilizados.

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

build.xml, un script Ant1 para compilar la aplicacin e instalarla en el dispositivo. default.properties, un archive de propiedades usadas por el script Ant. bin/ Ficheros de la aplicacin compilada. libs/ Aqu se guardan cualquier tipo de librera externa (Java Jars) que requiera la aplicacin. src/ Cdigo Fuente de la aplicacin. res/ Guarda recursos como iconos, Layout de la Interfaz de Usuario y otros, empaquetados y compilados en la aplicacin. assets/ Guarda otros ficheros estticos que se deseen empaquetar con la aplicacin. res/drawable/ Folder para guardar imgenes (JPEG, PNG,ETC) res/layout/ Para especificaciones de la interfaz de usuario de tipo XML. res/menu/ Para especificacin del menu de tipo XML. res/raw/ Ficheros de uso general. res/values/ strings, valores, dimensiones, constants, etc. res/xml/ ficheros XML que deseemos guardar y utilizar.

El android Manifest
Los cimientos de cualquier aplicacin de android se encuentran en el Manifest, el cual corresponde al archivo AndroidManifest.XML. En este archivo se declara que es lo que se encuentra dentro de nuestra aplicacin, las actividades, servicios. Dentro de este archivo tambin se establecen varias opciones como los permisos de aplicacin, instrumentacin (cdigo que debe ser invocado por eventos clave del sistema), libreras adicionales, elementos de aplicacin. Cuando se crea un nuevo proyecto, este Manifest es creado por defecto por Eclipse. Para los que no lo sepan, el Android Manifest esta descrito en XML, el cual es un lenguaje de descripcin de datos, enfatizando simplicidad, generalidad y usabilidad. En resumen, es un lenguaje que describe informacin, utilizando tags <> </> para crear campos de informacin. Si XML se les hace muy similar, es que XML es el lenguaje padre de HTML, si en HTML definimos elementos de una pgina web, en XML podemos definir cualquier tipo de informacin para que pueda ser estructurado y comprendido por alguna aplicacin. El android manifest por defecto tiene los siguientes tags: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Neoteo.Android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

Permisos
Sin en algn momento instalaron una aplicacin en Android habrn notado que al momento de instalar pregunta si le damos permisos para ejecutar ciertas funcionalidades como internet, GPS, File System, Al momento de desarrollar una aplicacin debemos configurar en el android manifest los permisos que requiere, si no hacemos esto de manera correcta, nos saldr un error al ejecutar la aplicacin y no se ejecutar de manera correcta. Para hacerlo, definimos los permisos de la siguiente manera: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Neoteo.Android"> <uses-permission android:name="android.permission.ACCESS_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.ACCESS_ASSISTED_G PS" /> <uses-permission android:name="android.permission.ACCESS_CELL_ID" /> <application> ... </application> </manifest> Dependiendo de la aplicacin, iremos viendo los permisos requeridos a lo largo de los prximos ejemplos del tutorial. Ms adelante veremos con mayor detalle al android manifest, ya que de por si el mismo podra abarcar un captulo entero, pero ya nos podemos impacientes por que queremos desarrollar aplicaciones Verdad?.

A programar de una vez: Hello world!


Despus de haber creado el proyecto tendremos todo el rbol de directorios como se explic en la seccin anterior, navegamos el rbol del proyecto que se despliega a la izquierda en el Package Explorer y elegimos \Src , hacemos click en el archivo que se llama Neoteo.Android, esta es nuestra actividad principal y tenemos el siguiente Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

cdigo: Cdigo:
package Neoteo.Android; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Borremos todo el cdigo y sustituymoslo por el siguiente: Cdigo:


package Neoteo.Android; import import import import import import android.app.Activity; android.os.Bundle; android.view.View; android.widget.Button; java.util.Date; android.os.Bundle;

public class Main extends Activity implements View.OnClickListener { Button btn; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); btn = new Button(this); btn.setText("Hello World"); btn.setOnClickListener(this); setContentView(btn); } public void onClick(View view) { updateTime(); } private void updateTime() { btn.setText(new Date().toString()); } }

Para poder ejecutarlo solo tenemos que hacer click en Project Build All y luego Click en la opcin de men Run ( o el redondito verde con el simbolo de Play), nos sale un dialogo y elegimos Android Aplication , si no tenemos configurada una mquina virtual la configuraremos a continuacin, o de lo contrario la aplicacin se ejecutara en la mquina configurada por defecto. Y ya tenemos nuestro primer programa que despliega un clsico Hello World , si hacemos click sobre la aplicacin actualiza el texto por la fecha y hora actual. Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

Sin embargo pepito preguntar Cmo funciona?, ahora vamos a diseccionar el cdigo para ver cmo funciona nuestro mini frankestein: Cdigo:
package Neoteo.Android; //Paquete de la aplicacin, aqu es donde se empaquetan todos los archivos /*Los siguientes imports son las libreras que se utilizan, tales como Activity que definen las actividades, Button que es para poder utilizar un botn en nuestra aplicacin, Date para poder utilizar fechas, si algn desarrollador de java esta por ac se dar cuenta que estamos utilizando algunas de las libreras estndar de Java*/ import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.util.Date; import android.os.Bundle;

Cdigo:
//Definimos la clase y agregamos un Listener de Eventos, el cual ejecutara un evento cuando se haga un click en determinado component de la aplicacin public class Main extends Activity implements View.OnClickListener { Button btn; //Creamos un botn simple. @Override public void onCreate(Bundle icicle) { //Para muchos programadores este es el punto de entrada a la aplicacin, podemos considerarlo como el Load. super.onCreate(icicle); btn = new Button(this); //Instanciamos el Nuevo boton, que como podemos ver es una clase! btn.setText("Hello World"); //Establecemos la propiedad del text la clase instanciada btn.setOnClickListener(this); //Agregamos el manejador de evento al botn,le decimos que utilice el manejador por defecto en esta clase. setContentView(btn); //Establecemos la vista de contenido con el botn para dibujar el mismo en pantalla. } public void onClick(View view) {//Funcion a la cual llama el manejador de eventos updateTime(); } private void updateTime() {//Funcion para actualizar la etiqueta del boton con el Datetime actual btn.setText(new Date().toString()); } }

Fin de la Transmisin
Como podemos ver hemos abarcado temas bastante interesantes en esta parte del tutorial, ahora somos capaces de ejecutar un dispositivo Android Virtual, conocemos la estructura de directorios, sabemos que es una Actividad, Servicio, Intent y podemos escribir cdigo satisfactoriamente desplegando texto y manejando eventos simples. A partir de este momento el desarrollo de Android se pone ms interesante, y en posteriores captulos vamos a ver con ms detalle el manejo de eventos, interfaces Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

grficas, manejo de perifricos y comunicacin. Ahora que tienen las bases, Qu esperan? A crear aplicaciones!

Programacin en Android: Parte IV Introduccin a los Layouts XML

Introduccin al tema
Continuando con esta serie de tutoriales, ya tenemos todas las herramientas necesarias para poder desarrollar aplicaciones ms complejas, teniendo aprendidos los conceptos bsicos de la programacin en android. Por lo tanto, vamos a ver conceptos ms especficos como son las interfaces grficas, las cuales usan Layouts (Diseos o disposicin de los elementos dentro de las actividades). Aunque es tcnicamente posible desarrollar aplicaciones creando desde cdigo Java los controles de aplicacin tales como botones, checkbox, textbox (desde ahora los denominaremos Widgets), el enfoque ms utilizado es utilizar un fichero XML para definir el Layout de la aplicacin.

XML?
XML es un lenguaje diseado para transportar y guardar informacin, a diferencia de HTML el cual se utiliza para desplegar informacin, aunque ambos lenguajes estn emparentados. XML son las siglas para Extensible Markup Language o Lenguaje extendi de Marcado, es un lenguaje autodescriptivo y utilizado como metalenguaje (porque es un lenguaje que se emplea para hacer referencia a otro lenguaje, en nuestro caso para darle una estructura a la informacin que vamos a usar). Como esta serie de tutoriales est dirigido a personas de todas las reas trataremos de simplificar la explicacin con un pequeo ejemplo Cdigo:
<?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?> <ficha> <nombre> Gabriel </nombre> <apellido> Molina </apellido> <direccion> Alfredo Vargas #36 </direccion> </ficha>

Este pequeo segmento de cdigo se ha definido una estructura bsica para guardar la informacin de una persona en una ficha, respetando siempre los tags y la estructura bsica, esto tambin podra ser escrito de la siguiente manera: Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

Cdigo:
<?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?> <ficha nombre = Gabriel Apellido= Molina Direccion= Alfredo > </ficha>

Se nos hace conocido la estructura de este ltimo ejemplo?, pues es bastante similar a HTML, ya que HTML es un sublenguaje de XML. Por lo tanto, XML nos da la posibilidad de estructurar la informacin, y almacenarla para que pueda ser utilizada por una serie de aplicaciones y servicios, XML es la base para el intercambio de informacin entre distintos dispositivos y servicios web mediante SOAP. No obstante, por el momento no nos vamos a meter con SOAP, eso se ver adelante cuando consumamos un Servicio Web mediante Android.

Qu es un Layout basado en XML?


Es una especificacin de la relacin entre Widgets y sus contenedores, con la actividad en la que estamos trabajando, bsicamente es una pequea descripcin de la estructura que tendr nuestra interfaz de usuario, utilizando XML. Cada fichero XML contiene un rbol de elementos especificando el lugar de los widgets y los contenedores que resultan en la jerarqua de vista, en palabras simples el fichero XML define como se va a ver nuestra aplicacin. El Android SDK tiene una herramienta denominada aapt que usa estos layouts, esta herramienta se invoca automticamente y permite el acceso a los widgets de nuestra actividad directamente desde nuestro cdigo JAVA. Es preferible utilizar Layouts basados en XML por que existen aplicaciones que nos ayudan a la creacin de Layouts que hacen nuestra vida un poco ms fcil, si elegimos hacerlo directamente por cdigo podra llegar a complicarse este proceso. Por otro lado, el uso de interfaces XML va de la mano con los estndares de la industria que utilizan estndares similares como Microsoft XAML, Adobe Flex y Mozilla XUL, incluso los que trabajamos con ASP.net podemos ver que en un fichero definimos la interfaz de usuario y en otro el code behind o la lgica de la aplicacin (funciones, variables, mtodos, etc.), de forma bastante similar a como lo hacemos en Android.

Creando un Botn mediante un XML Layout


Ahora vamos a ver el botn del ejemplo anterior, pero creado utilizando un Layout XML. Siguiendo los pasos para crear un nuevo proyecto detallados en el post anterior (Parte III), tenemos que crear un nuevo proyecto denominado HelloWorld2. Cuando ya lo tengamos creado, abrimos el rbol de directorio y navegamos el directorio res\layout, ah encontramos el fichero del Layout XML denominado main.xml. Hacemos click sobre Main.xml, se abre una nueva ventana donde se ve una interfaz Fuente Freddy-A en http://www.neoteo.com Pdf por Neue Ansatz

grfica donde podemos arrastrar y soltar elementos, pero vamos a hacer click en la pestaa inferior que dice main.xml al lado de Graphical Layout , y reemplazamos el contenido de ese archivo por lo siguiente: Cdigo:
<?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button" android:text="" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

Si ejecutamos la aplicacin, podemos ver que se ha creado el botn, sin embargo tenemos que poder manipular este botn desde cdigo, como lo hacemos? Lo hacemos de la siguiente manera: Cdigo:
package Neoteo.Android; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.util.Date; public class HelloWorld2 extends Activity implements View.OnClickListener { Button btn; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); btn=(Button)findViewById(R.id.button); btn.setOnClickListener(this); btn.setText("Hola Mundo!"); } public void onClick(View view) { updateTime(); } private void updateTime() { btn.setText(new Date().toString()); }

Mediante la sentencia Cdigo:


setContentView(R.layout.main);

Para decirle a la actividad que el layout se encuentra en el fichero main.xml de la carpeta layout. Posteriormente utilizamos Cdigo:
btn=(Button)findViewById(R.id.button);

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

Para que encuentre el botn en el fichero XML y lo asigne como referencia a la variable btn que hemos creado, mediante este simple proceso podemos definir un componente de la aplicacin o Widget desde el fichero XML, y podemos asignarlo a una variable para poder manipularlo. A partir de ahora podemos cambiar el texto del botn, cambiar su color, tamao, etc.

Tarea para los estudiantes


Se me ocurri darles una pequea tarea para que investiguen y la resuelvan, ahora tan solo les pido que me digan, como cambio el color del botn del ejemplo anterior?

Fin de la Transmisin
Al parecer las cosas se complican un poco, pero no lo vean asi, veanlo como que obtenemos mas herramientas para ser buenos desarrolladores de Android, en breve vamos a ver con ms detalle acerca de los distintos tipos de Layouts y Widgets. Por lo tanto, seores a hacer su tarea y publicar imgenes acerca de la misma en el hilo de preguntas, vamos a dar una mencin especial al primero que lo haga.

Fuente Freddy-A en http://www.neoteo.com

Pdf por Neue Ansatz

También podría gustarte