Está en la página 1de 8

para programadores

Programacin en Android, el Linux que estar en todos los mviles,


2 Linux+ 3/2008
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
3 www.lpmagazine.org
l
i
n
u
x
@
s
o
f
t
w
a
r
e
.
c
o
m
.
p
l
E
l cada vez ms bamboleante sector de los
mviles est viviendo a da de hoy el mayor
cambio de su historia en cuanto a software se
refere. Atrs quedaron los sistemas propios
de cada empresa que apenas dejaban al usuario ejecutar
una mquina virtual de la versin Micro Edition de Java.
Las posibilidades del hardware mvil son hoy tan gran-
des, que es ms que posible llevar a cabo casi todas las
actividades que anteriormente slo estaban permitidas
para sistemas de escritorio o porttiles.
Por ejemplo la reproduccin de vdeo codifcado
con codec de cierta complejidad, la visualizacin de
presentaciones o simplemente la posibilidad de navegar
por Internet son hoy en da funcionalidades que se deben
exigir a los mviles de gama alta.
Con el paso del tiempo todas estas funcionalidades
irn pasando cada vez a gamas ms bajas y posiblemente
los mviles sustituirn a los equipos actuales de sobre-
mesa y porttiles para la realizacin de muchas tareas.
Esta revolucin que se nos avecina est empezndose a
librar a da de hoy ya en el terreno de los sistemas operati-
vos. La primera fgura en caer de esta batalla ha sido Palm
OS. El sistema operativo para PDA y smartphones (los m-
viles que combinan funciones con PDA) desapareci como
tal en febrero de 2006 dando paso a un sucesor llamado
ACCESS Linux Platform del que no se sabe demasiado.
En esta dura batalla de los sistemas operativos para
dispositivos mviles los grandes contrincantes son todos
de cdigo cerrado y sus nombres son Microsoft Windows
Mobile, Blackberry OS y Symbian OS.
Aparte est el sistema operativo libre para PDA y
mviles OpenMoko, y el sistema que trae iPhone que
est comenzando a llegar al mercado. Sin duda, se espera
una autntica guerra entre todos estos dispositivos y el
protagonista de este artculo, Android.
Qu es Android?
Android es una plataforma libre para telfonos mviles,
basada en GNU/Linux y con licencia GPL que va a meter
de lleno al software libre en esta batalla.
Creado por la Open Handset Alliance, alianza tecnol-
gica encabezada por Google, acompaada de compaas del
nivel de T-Mobile, HTC, Motorola, Telefnica, Samsung,
Intel o Nvidia; tiene el respaldo sufciente para tener un
Programacin
en Android
El anuncio por parte de Google y las compaas lderes mundiales del sector de las
telecomunicaciones mundiales sobre la creacin de Android, el sistema operativo para
mviles basado en el ncleo de Linux, ha supuesto el mayor empujn que ha recibido el
software libre quizs en toda su historia. Y es que en un sector en el que todava no hay
un monopolio de facto como en el de los ordenadores de escritorio, en el que tambin se
est progresando, la colaboracin de Google y los gigantes de las telecomunicaciones
van a suponer para Android poder competir en unas condiciones inmejorables contra sus
rivales de cdigo cerrado.
Francisco Javier Carazo Gil
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
2 Linux+ 3/2008
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
3 www.lpmagazine.org
xito seguro y para convertir al software libre
en el producto dominante en esta porcin del
mercado de la tecnologa.
El potencial de Android no est slo ava-
lado por las empresas que lo respaldan sino
por sus propias caractersticas tcnicas.
Caractersticas de Android
La caracterstica que me parece ms im-
portante es que se trata de una plataforma
totalmente abierta tanto para fabricantes de
dispositivos mviles como para desarrolla-
dores de aplicaciones. Vayamos explicando
uno a uno los puntos ms importantes de la
plataforma.
Ncleo
Es Linux, concretamente la versin 2.4.16
del kernel de Linux, por ahora. A este nivel
estn implementados todos los controladores
primarios (cmara, USB, teclado...), aunque
tambin pueden aadirse ms drivers por par-
te del fabricante del dispositivo (por ejemplo
el controlador de la pantalla tctil).
Sobre el ncleo estn escritas las libreras
que se encargan de las funcionalidades bsi-
cas. Estas libreras estn escritas en C/C++ y
pueden ser accedidas directamente desde los
programas de la plataforma. Algunas de ellas
y sus funcionalidades son:
Libreras en C del sistema: Implemen-
taciones de las libreras estndar de C,
preparadas para un mejor funciona-
miento en dispositivos embebidos que
usan Linux.
Libreras multimedia: Proporcionan so-
porte para grabacin y reproduccin de
audio y vdeo, as como de imgenes.
Gestor de superfcies: Maneja el acceso
al dispositivo de pantalla.
Librera del ncleo web: Moderno mo-
tor de navegacin web que posibilita
usar el navegador de Android as como
vistas incrustadas de los sitios web.
SGL: El motor grfco 2D.
Libreras para 3D: Implementacin ba-
sada en las API de OpenGL ES 1.0.
FreeType: Renderizacin de mapas de
bit y grfcos vectoriales.
SQLite: Proporciona soporte para base
de datos relacionales.
Mquina virtual Dalvik
Es la encargada de ejecutar los programas.
Maneja dos tipos de archivos:
.APK: Comprimido con ejecutables y
datos del programa.
Figura 1. Arquitectura del sistema
Figura 2. Interfaz grfca de usuario de OpenMoko
4
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
Linux+ 3/2008
5
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
www.lpmagazine.org
.DEX: De Dalvik ejecutable, es un ar-
chivo similar a .class de Java pero post
procesado para conseguir un mejor ren-
dimiento en la mquina Dalvik.
La mquina virtual tiene acceso a:
Core Libraries: Libreras con las clases
estndar de Java.
Application Framework: Mdulos es-
critos en Java que permiten interactuar
con la agenda de contactos, la mensaje-
ra, llamadas...
Aplicaciones
Todas estn escritas en Java pero tienen ac-
ceso directo a bajo nivel a travs de la API.
Estn armadas en base a cuatro bloques de
construccin:
Activity: Parte visual de la aplicacin.
Intent Reciver: Un intento, traduccin
al espaol de intent, sera algo as como
un evento genrico que sera indepen-
diente de los programas, por lo que en
caso de pedirse Android buscara la
aplicacin adecuada para servir dicho
intento. Por ejemplo podra ser algo as
como enviar sms.
Service: El concepto de demonio en
Linux aplicado a Android.
Content provider: Proporciona a la aplica-
cin capacidad de interactuar de manera
sencilla con la parte interna de Android.
Seguridad
La seguridad es uno de los aspectos ms
cuidados de Android. Est dividido en nive-
les. Primero est el bajo nivel, manejado por
las facilidades estndar de Linux teniendo
en cuenta permisos de acceso para archivos,
usuarios, servicios, etc. El nivel alto, est ma-
nejado en Java, que se encarga de la integridad
del cdigo, del sistema de acceso, y de aislar
una aplicacin de otra. Adems en niveles
intermedios Android hace uso de la Memoria
Protegida, gestin de procesos, as como un
sistema de permisos explcitos de cara a los
servicios a los que un programa desea acceder
en un momento dado.
Otros aspectos de importancia
Aparte de lo ya comentado es interesante re-
saltar que Android es totalmente compatible
con cualquier tipo de transmisin por lo que
funcionar igual sobre dispositivos que usen
GPRS con otros que usen 3G. Las interfases
grfcas de usuario estn diseadas usando
archivos XML que adems de fciles de
disear permiten al equipo representar las
interfases en la mayor parte de los casos
independientemente de las dimensiones de
la pantalla.
El navegador que utiliza WebKit que a
su vez tambin est implementado usando
KHTML, por lo que nos aseguramos de
un perfecto visionado de los sitios web que
cumplan con los estndares. La versin del
reproductor Flash, de excepcional importan-
cia en la actualidad a pesar de no ser libre,
est prevista que sea liberada en breve para
atender a los miles de dispositivos que trae-
rn consigo Android.
Adems Android asegura una funciona-
lidad comparable o incluso mejor de la de
dispositivos tan cuidados como iPhone, por lo
que en Android tenemos un ganador seguro.
Previsiones de comercializacin
Con las empresas que se encuentran respal-
dando el proyecto, y no me refero a Google
ahora, sino a HTC, Motorola, Samsung...,
Android no tendr problemas de comercia-
lizacin. Slo falta software sufciente para
rivalizar de manera directa con las dems
plataformas (que llevan unos cuantos aos
por delante de Android) pero gracias a las
facilidades que da Android a la comunidad
esto tampoco ser problema a la larga. Las
fechas por ahora son muy difusas, pero se
espera que Android est disponible y ope-
rativo en el mercado a fnales de 2008, as
que desgraciadamente nos tendremos que
esperar un poco.
Lo que s es seguro, es que en el momen-
to de su lanzamiento al pblico tendr ms
de una campaa publicitaria detrs y mucho
ms marketing aparte, por lo que os puedo
asegurar que nos enteraremos todos.
OpenMoko la otra
alternativa libre
Android no es ni mucho menos el primer
sistema operativo libre que aparece en los
dispositivos de carcter mvil. Anunciado
en 2006, hasta la aparicin de Android
supona el sistema libre con ms fuerza en
este campo. Basado tambin en el ncleo de
Linux, OpenMoko usa un entorno grfco
de usuario basado en el servidor X.org,
las libreras GTK+ y el gestor de ventanas
Matchbox (el mismo que por cierto usarn
los OLPC). Est basado en el framework
de OpenEmbedded y el sistema de paquetes
ipkg.
Sin embargo, OpenMoko no ha tenido
el respaldo de ninguna gran empresa y slo
el mvil Neo1973 de la empresa coreana
FIC ha llegado a venderse con dicho siste-
ma instalado para ser usado con cualquier
compaa. OpenMoko es un ejemplo ms de
cmo un gran producto no llega a triunfar
por culpa de la falta de comercializacin y
sobre todo por no tener el respaldo de al-
gn grande de la tecnologa mundial. Algo
parecido le pas por ejemplo a la consola
GP2X que por desgracia tiene un pblico
realmente limitado y no ha podido despegar
al igual que sus competidoras Nintendo DS
y Play Station Portable por culpa de la falta
de comercializacin. Figura 3. Vista inicial del emulador
Figura 4. Resultado del proyecto de prueba
Figura 5. Hola Mundo Hola Android
4
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
Linux+ 3/2008
5
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
www.lpmagazine.org
Instalacin del kit
de desarrollo de software
de Android
Nada ms anunciar el producto, Google
anunciaba que liberaba tambin la SDK
del mismo y que convocaba un concurso
llamado Android Developer Challenge cu-
ya fecha de fnalizacin est prevista para
marzo de 2008 y cuya cuanta en premios
asciende hasta los 10 millones de dlares.
Estos dos movimientos, adems de mover a
la comunidad entera, han hecho que muchos
de los desarrolladores libres vean con ms
que buenos ojos a Android.
El kit de desarrollo proporciona las
herramientas necesarias para que, usando
Java y las clases pertinentes, podamos
desarrollar (y probar usando el emulador
que incorpora) el software necesario para
el sistema.
Instalacin de la SDK
Procedemos primeramente a descargar la
SDK, que viene comprimida en formato
ZIP de la web de Android en la seccin
de Software development kit -> Download
SDK -> Linux (i386). Una vez descargado
procedemos a:
Descomprimimos el archivo:
unzip android_sdk_linux_m3-rc22a.zip
Creamos un directorio para copiar el
contenido (cambiamos oportunamente
las rutas para adecuarlas a nuestro ca-
so):
mkdir $HOME/android_sdk
Copiamos el contenido:
sudo cp -r $HOME/android
_sdk_linux_m3-rc22a
/* $HOME/
android_sdk
Aadimos al PATH de bashrc (o bash_
profle) el directorio tools de la SDK:
sudo nano $HOME/.bashrc
Incluimos al fnal por ejemplo:
export PATH=${PATH}
:$HOME/android_sdk/tools
Ya tenemos todo listo para proseguir instalando
ahora, el plugin de Eclipse.
Listado 1. Conversor.java
package conversor.peso;
import android.app.Activity;
import android.os.Bundle;
public class Conversorextends Activity {
/** Called when the activity is frst created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);}}
Listado 2. Creando el primer LinearLayout horizontal
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.
com/apk/res/android"
android:orientation="vertical"
android:layout_width="fll_parent"
android:layout_height="fll_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="fll_parent"
android:layout_height="wrap_content">
</LinearLayout></LinearLayout>
Listado 3. main.xml
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com
/apk/res/android"
android:orientation="vertical"
android:layout_width="fll_parent"
android:layout_height="fll_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="fll_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@
string/libras" /><EditText id="@
+id/libras"
android:layout_width="fll_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fll_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/kilogramos" />
<EditText id="@+id/kilogramos"
android:layout_width="fll_parent"
android:layout_height="wrap_content" />
</LinearLayout></LinearLayout>
Listado 4. string.xml
<?xml version="1.0" encoding="utf-8"?><resources>
<string name="app_name">Conversor</string>
<string name="libras">Libras:</string>
<string name="kilogramos">Kilogramos:</string></resources>
6
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
Linux+ 3/2008
7
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
www.lpmagazine.org
Instalacin del plugin de Eclipse (ADT)
La instalacin del plugin de Eclipse para
desarrollar proyectos con Android se realiza
de manera totalmente grfca:
Iniciamos Eclipse y nos dirigimos a:
Help > Software updates > Find andins-
tall...
En el dilogo que nos aparece elegi-
mos: Search for new features to install
y presionamos en Next.
Creamos un nuevo sitio remoto, New
remote site incluyendo como ttulo An-
droid Plugin por ejemplo; y como URL
del mismo: https://dl-ssl.google.com/
android/eclipse/.
El sistema buscar informacin sobre
el plugin y acto seguido aparecer un
dilogo donde se nos mostrar el plugin
para elegir. Lo seleccionamos: Android
Plugin > Eclipse Integration > Android
Development Tools y presionamos
Next.
Una vez seleccionado, aceptamos las
condiciones de uso y acto seguido el
plugin se habr terminado de instalar.
Antes de hacer uso de l deberemos
reiniciar Eclipse y hacer que apunte al
directorio donde tenemos instalada la
SDK.
Para asignar la ruta de la SDK al plugin
entramos en las preferencias de Eclip-
se, Preferences > Android y asignamos
la ruta en SDK Location.
Ya estamos listos para comenzar a realizar
nuestros primeros proyectos con Eclipse pa-
ra Android. Dado que todava se encuentra
tanto Android, como su SDK, como el plu-
gin, en plena fase de desarrollo, deberemos
estar atentos y de vez en cuando repetir los
primeros pasos de la instalacin del plugin
para ver si hay disponible una versin
nueva.
Primeros pasos
con Eclipse y Android
Gracias al plugin que acabamos de instalar,
la creacin del proyecto para Android es
algo automtico. Accedemos a File > New
> Project... En el dilogo que nos aparece
tenemos disponible una opcin para crear
un proyecto para Android. Asignamos el
nombre del proyecto as como si vamos a
trabajar con nuevo cdigo o con cdigo ya
existente y:
Nombre del paquete: prueba.primera por
ejemplo.
Nombre de la actividad: prueba
Nombre de la aplicacin: prueba
El plugin crear dos directorios y un archivo
XML:
src/: Donde se almacenar nuestro cdigo.
res/: Donde se almacenarn los recursos
del proyecto.
androidManifest.xml: Informacin sobre el
proyecto.
Creando la confguracin de ejecucin
Nos dirigimos al dilogo de confguracin de la
ejecucin: Run > Run...
Dentro de l seleccionamos a Android y
elegimos crear una nueva confguracin. Le
damos nombre y asignamos:
Nombre del proyecto a ejecutar.
Actividad dentro del mismo a ejecutar.
Tambin podemos elegir otras opciones para
el emulador y en el apartado al margen que se
llama Common.
Ya podemos entonces ejecutar la apli-
cacin, depurarla o simplemente guardar
esta nueva confguracin de ejecucin para
usarla posteriormente.
Hola mundo, hola Android
Una vez visto esto, si ejecutis el cdigo
veris un texto parecido a un tpico Hello
World. Personalicemos algo ms eso. Veamos
qu debemos modifcar para que aparezca el
tpico, Hola mundo que todos, o casi todos,
hacemos cuando comenzamos a probar con
un nuevo lenguaje o plataforma. Para ello
Figura 6. Resultado con libras y kilogramos ya listos
para introducir.
Listado 5. Botones
<LinearLayout android:orientation="horizontal"
android:layout_width="fll_parent"
android:layout_height="wrap_content">
<Button id="@+id/librasAKilogramos"
android:text="@string/librasAKilogramos"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button id="@+id/kilogramosALibras"
android:text="@string/kilogramosALibras"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Listado 6. Incluyendo los EditText y Button dentro del fchero java
public class Conversorextends Activity {
private EditTexttextoLibras;
private EditTexttextoKilogramos;
/** Called when theactivity is frst created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
textoLibras = (EditText)fndViewById(R.id.libras);
textoKilogramos = (EditText)fndViewById(R.id.kilogramos);
Button librasAKilogramos =(Button)fndViewById(R.id.librasAKilogramos);
Button kilogramosALibras =(Button)fndViewById(R.id.kilogramosALibras)
;
}
}
6
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
Linux+ 3/2008
7
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
www.lpmagazine.org
creamos un nuevo proyecto como el anterior
y lo nombramos Hola Mundo. Posteriormen-
te antes de ejecutar modifcamos el archivo
main.xml, que est dentro de layouts y cam-
biamos el siguiente valor:
<TextView
android:layout_width="f ll_parent"
android:layout_height="wrap_content"
android:text="Hola Mundo! Hola
Android."
/>
De manera que el campo android:text, con-
tenga la cadena para escribir Hola Mundo!
Hola Android. Con esta simple modifcacin
ya cambiamos el valor del campo que apa-
rece en pantalla. Como veris, el directorio
layouts con sus distintos archivos XML de
los que os he hablado anteriormente para
defnir interfaces grfcos de usuario, puede
parecer de primeras ms complejo, sin em-
bargo es cuestin de acostumbrarse al modo
de programar del mismo.
Conversor de kilos a libras
Para hacer un ejemplo un poco ms complejo
en el que manejemos algo ms de Android,
vamos a comenzar a desarrollar un conversor
de kilos a libras. De esta manera tendremos
adems de algo de clculo detrs, un interfaz
un poco ms completo con:
Un campo para introducir los kilos y otro
para introducir las libras.
Un botn para convertir de kilos a libras y
otro para hacer lo contrario.
Lo primero que haremos ser crear un
proyecto tal y como lo hemos hecho antes.
Para el ejemplo he elegido los siguientes
nombres:
Nombre proyecto: Conversor
Nombre paquete: conversor.peso
Nombre actividad: Conversor
Nombre aplicacin: Conversor
Una vez cargado el proyecto, observamos el
contenido de Conversor.java:
La sentencia que nos interesa ahora es:
setContentView(R.layout.main); Esta sen-
tencia indica qu interfaz de usuario se esta-
blece cuando la actividad se llama. Como os
comentamos antes al comienzo del artculo,
un concepto muy importante en Android es
el de actividad que puede ser llamada por
otro software en ejecucin, por lo que se
facilita mucho labores como Enviar SMS o
Llamar a tal contacto que pueden ser a su
vez actividades.
Volviendo a la sentencia anterior, deciros
que establece el interfaz en el archivo main
de layout. Los layout estn defnidos en ar-
chivos XML, como el que hemos modifcado
en el ejemplo de Hola Mundo. Los layout
aunque puedan parecer poco intuitivos, nos
permiten crear interfaces de manera rpida
y lo que es ms importante, solucionan el
problema de los distintos tamaos de pantalla
que hay en los dispositivos mviles.
Empezando a trabajar con layouts
Puesto que queremos hacer algo as como:
Libras: (campo de texto para introducir
cantidad)
Kilogramos: (campo de texto para introdu-
cir cantidad)
Botn para convertir de libras a kilogra-
mos.
Botn para convertir de kilogramos a li-
bras.
Los layout nos ofrecen la posibilidad de ha-
cerlo defniendo primero un tipo de contene-
dores llamados: LinearLayout. stos agru-
pan otros contenedores a su vez en su interior
y pueden tener dos orientaciones: vertical u
horizontal. Nosotros tendremos primero un
LinearLayout vertical que almacene los
cuatro campos que nos interesan. Luego ani-
daremos dentro de l ms LinearLayout con
orientacin horizontal para poder contener
el resto de elementos. La sintaxis de XML
nos facilita muchos estos anidamientos. Si
os fjis ese LinearLayout vertical que os co-
mento ya viene defnido dentro del proyecto
autogenerado por la siguiente sentencia:
android:orientation="vertical. Para crear
la lnea defnida porla etiqueta Libras y el
campo de texto para insertar el valor de las
mismas, creamos otros LinearLayout que
tenga orientacin horizontal. Lo anidamos
como est demostrado en el Listado 2.
Lo nico que hemos cambiado en el nue-
vo LinearLayout ha sido la orientacin del
mismo. Ahora dentro de este LinearLayout
colocaremos la etiqueta de Libras y el campo
de texto para insertar la cantidad.
TextView y EditText
Para poner la palabra Libras en el interfaz
usaremos los llamados TextView. La sintaxis
es anloga a la de los LinearLayout. Las pro-
piedades que usaremos sern:
layout_height: Altura.
text: Texto del mismo.
Nuestro TextView ser as:
<TextView android:layout_width="wrap_
content"
android:layout_height="wrap_content"
android:text="@string/
libras" />
El campo @string/libras hace referencia al
archivo string.xml defnido en el directorio
values del proyecto.
Este archivo que de primeras slo tiene
guardado el nombre de la aplicacin, appNa-
me, nos servir para almacenar las cadenas
de nuestra interfaz. Por ejemplo en este caso
tendremos:
<?xml version="1.0"
encoding="utf-8"?>
<resources>
<string name="app_name">
Conversor</string>
<string name="libras">
Libras:</string>
</resources>
Ya tenemos la etiqueta puesta. Pasemos ahora
a crear el campo de texto donde se insertar
la cantidad de libras. Usaremos los llamados
EditText y tambin los incorporaremos al
LinearLayout vertical que hemos creado. Las
propiedades que usaremos sern:
Figura 7. Interfaz completo
Android
ht t p: / / code. googl e. com/ androi d/
index.html
Open Handset Alliance
http://www.openhandsetalliance.com/
Android Development Community
http://www.anddev.org/
En la red
8
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
Linux+ 3/2008
9
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
www.lpmagazine.org
id: Identifcador
layout_width: Anchura
layout_height: Altura
Los valores que hemos usado o usaremos
para anchura y altura, wrap_content y f-
ll_parent, envuelven el contenido o rellenan
al padre respectivamente. Es la manera ms
rpida y efciente (al menos para estos ejem-
plos) de defnir una altura y una anchura que
se ajustan a nuestras necesidades. Nuestro
EditText tendr la siguiente forma:
<EditText id="@+id/libras"
android:layout_width="fll_parent"
android:layout_height="wrap_content"
/>
Si hacemos lo mismo para kilogramos y lo
aadimos al main.xml y a string.xml nos
quedarn como en los Listados 3 y 4. El re-
sultado lo podis ver en la Figura 6.
Aadiendo botones
Para incluir los botones, los haremos inclu-
yendo dos button en un nuevo LinearLayout
horizontal que albergar a ambos botones. Los
botones, los incluiremos usando button, las
propiedades que usaremos del mismo son:
id: Identifcador
text: Texto
layout_width: Anchura
layout_height: Altura
En el texto se har una referencia al texto en s
que aparecer dentro del botn que estar guar-
dado en string.xml.
Como veis el sistema es siempre el mis-
mo, en main.xml defnimos las propiedades
y en string.xml almacenamos el contenido
y las cadenas que aparecen en nuestra in-
terfaz.
Defnamos primero lo que vamos a
incluir en el main.xml. Creamos un nuevo
LinearLayout horizontal e incluimos los
botones (Listado 5).
Figura 8. Conversor funcionando
Listado 7. Campos numricos
<EditText id="@+id/libras"
android:layout_width="fll_parent"
android:numeric="true"
android:layout_height="wrap_content" />
<EditText id="@+id/kilogramos"
android:layout_width="fll_parent"
android:numeric="true"
android:layout_height="wrap_content" />
Listado 8. Defnicin de los mtodos de clculo
librasAKilogramos.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
textoKilogramos.setText(""+Double.parseDouble(textoLibras.getText().
toString())*.4535924);
}
}
)
;
kilogramosALibras.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
textoLibras.setText(""+Double.parseDouble
(textoKilogramos.getText(
).toString())/.4535924);
}
}
)
;
Listado 9. Botn cerrar
En string.xml:
<string name="cerrar">Cerrar</string>
En main.xml:
<Button id="@+id/cerrar"
android:text="@string/cerrar"
android:layout_width="fll_parent"
android:layout_height="wrap_content" />
En Conversor.java:
Button salir = (Button) fndViewById(R.id.salir);
[...]
salir.setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
setResult(RESULT_OK);
fnish();
}
}
)
;
8
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
Linux+ 3/2008
9
para programadores
Programacin en Android, el Linux que estar en todos los mviles,
www.lpmagazine.org
Dotando de funcionalidad
a nuestro ejemplo
Como podis observar en la toma de pan-
talla anterior ya tenemos el interfaz dise-
ado y funcionando sin embargo, es un
mero esqueleto que no tiene funcionalidad.
Lo primero que haremos ser importar:
import android.widget.EditText y import
android.widget.Button. Eclipse puede hacer
esta labor por nosotros si presionamos: Con-
trol + Maysculas + O sobre la instanciacin
del objeto del que no tiene el import oportuno
(lo que resulta bastante cmodo la verdad).
Creamos dos atributos privados para la
clase, uno para cada EditText y otros dos
objetos ya dentro del mtodo onCreate para
manejar las acciones de los botones.
Adems asignamos a cada uno que
manejen el EditText o Button correspon-
diente con el mtodo fndViewById al que le
pasamos como parmetro el identifcador y
nos devuelve el objeto de la vista con dicho
identifcador. Veamos cmo sera el cdigo
(Listado 6).
Como podis observar textoLibras y texto-
Kilogramos son atributos de la clase Conversor
ya que los manejaremos en ms mtodos que en
el onCreate. Ahora crearemos dos mtodos ms
en la clase para hacer las dos acciones, pasar de
libras a kilogramos y viceversa.
Defniendo mtodos
para realizar los clculos
Lo primero que haremos ser obligar a
Android que no acepte valores que no sean
numricos en los EditText.
La manera ms efciente de hacerlo es
asignar la propiedad de campo numrico a
los mismos. Esto lo hacemos en el fchero
main.xml (Listado 7).
Una vez hecho sto nos ahorramos el
posible problema de que el usuario introduz-
ca una letra en alguno de estos dos campos
y el consiguiente manejo de excepciones,
con la tpica estructura de Java try y catch
tambin en Android.
Para hacer la operacin crearemos dos
mtodos dentro de onCreate que se dediquen
cada uno a hacer la operacin de libras a ki-
logramos y viceversa.
Para ello utilizaremos onClickListener
y dentro de l crearemos la defnicin de la
accin para el evento onClick.
La primera accin ser si hacemos clic
en el botn de transformacin de libras a ki-
logramos rellenar el campo texto kilogramos
con el producto del nmero de libras por la
razn de conversin (0.4535924) para este
caso. La accin inversa ser hacer lo mismo
pero dividiendo y cambiando de orden los
campos (Listado 8).
Incluimos un botn
para cerrar la aplicacin
Para terminar el ejemplo vamos a aadir a
nuestra aplicacin un botn para cerrarla.
Para ello usaremos en el archivo con el cdi-
go Java los mtodos:
setResult con el parmetro RESULT_OK
para indicar a Android que la actividad ha
fnalizado correctamente.
fnish() para cerrar la aplicacin.
Adems incluiremos el Listado 9. Si pulsa-
mos el botn Cerrar la aplicacin se cerrar
y volveremos al men inicial de Android en
el emulador. Podis ver el resultado en la
Figura 10
Conclusiones
Con este artculo no se ha intentado dar una
explicacin compleja y completa de todas
las posibilidades que nos ofrece Android.
Sin embargo, espero que el contenido
del mismo os sirva para romper el hielo y
animaros a programar en esta plataforma que
gracias al apoyo de las empresas lderes del
mercado, est llamada a ser quien lidere el
emergente sector de los sistemas operativos
para dispositivos mviles.
La inclusin de mens o de ms elementos
en la interfaz as como el manejo de las libreras
que os he comentado anteriormente, son el si-
guiente paso para seguir desarrollando nuestro
trabajo.
Manejar el bluetooth o crear una apli-
cacin que use navegacin web son posibi-
lidades que gracias a la API de Android se
desarrollan de manera bastante simple.
Las llamadas DevTools son una ayuda
ms para el desarrollador que Android nos
ofrece. Os animo desde aqu a que formis
parte de la comunidad de desarrolladores y
comencis a hacer an ms grande a este
sistema operativo que est llamado a hacer
historia.
Las posibilidades como habis visto
son numerosas y las difcultades, como
por ejemplo lo raro que pueden resultar
de primeras el uso de layouts, son slo
cuestin de acostumbrarse, porque Google
y el resto de componentes del proyecto han
conseguido disearlo de manera que resulta
realmente fcil programar y desarrollar para
el mismo.
Figura 9. Botn cerrar incluido
Francisco Javier Carazo Gil esIngeniero
Tcnico en Informtica de Sistemas.
Nacido en Crdoba, actualmente est
estudiando Ingeniera en Informtica. Ha
trabajado anteriormente con contrato de
becario en el Ilustre Colegio de Aboga-
dos de Lucena.
Es webmaster de LinuxHispano.net,
sitio del que es uno de los fundadores.
Colaborador habitual de esta revista,sus
intereses son principalmente el software
libre, la programacin y todo lo relaciona-
do con GNU/Linux.
Su sitio web personal est en http:
//www.jcarazo.com. Podis contactar
con l a travs de su correo personal,
carazo@gmail.com.
Sobre el autor
Figura 10. Logo de Android

También podría gustarte