Está en la página 1de 8

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

Programacin en Android
Francisco Javier Carazo Gil

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.

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 refiere. 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 grandes, 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 codificado 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 sobremesa 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 operativos. La primera figura en caer de esta batalla ha sido Palm

OS. El sistema operativo para PDA y smartphones (los mviles 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.

linux@software.com.pl

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 tecnolgica encabezada por Google, acompaada de compaas del nivel de T-Mobile, HTC, Motorola, Telefnica, Samsung, Intel o Nvidia; tiene el respaldo suficiente para tener un

Linux+ 3/2008

para programadores Programacin en Android, el Linux que estar en todos los mviles,
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 avalado por las empresas que lo respaldan sino por sus propias caractersticas tcnicas.

Caractersticas de Android

La caracterstica que me parece ms importante es que se trata de una plataforma totalmente abierta tanto para fabricantes de dispositivos mviles como para desarrolladores 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 Figura 1. Arquitectura del sistema tambin pueden aadirse ms drivers por parte 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 bsicas. 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: Implementaciones de las libreras estndar de C, preparadas para un mejor funcionamiento en dispositivos embebidos que usan Linux. Libreras multimedia: Proporcionan soporte para grabacin y reproduccin de audio y vdeo, as como de imgenes. Gestor de superficies: Maneja el acceso al dispositivo de pantalla. Librera del ncleo web: Moderno motor de navegacin web que posibilita usar el navegador de Android as como vistas incrustadas de los sitios web. SGL: El motor grfico 2D. Libreras para 3D: Implementacin basada en las API de OpenGL ES 1.0. FreeType: Renderizacin de mapas de bit y grficos 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 Figura 2. Interfaz grfica de usuario de OpenMoko datos del programa.

www.lpmagazine.org

para programadores Programacin en Android, el Linux que estar en todos los mviles,
.DEX: De Dalvik ejecutable, es un archivo similar a .class de Java pero post procesado para conseguir un mejor rendimiento en la mquina Dalvik. 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 manejado 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 Figura 5. Hola Mundo Hola Android en un momento dado.

La mquina virtual tiene acceso a: Core Libraries: Libreras con las clases estndar de Java. Application Framework: Mdulos escritos en Java que permiten interactuar con la agenda de contactos, la mensajera, llamadas...

Aplicaciones
Todas estn escritas en Java pero tienen acceso 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 independiente 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 aplicacin capacidad de interactuar de manera sencilla con la parte interna de Android.

Otros aspectos de importancia


Aparte de lo ya comentado es interesante resaltar 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 grficas 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 importancia en la actualidad a pesar de no ser libre, est prevista que sea liberada en breve para atender a los miles de dispositivos que traern consigo Android. Adems Android asegura una funcionalidad comparable o incluso mejor de la de dispositivos tan cuidados como iPhone, por lo que en Android tenemos un ganador seguro.

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 operativo en el mercado a finales de 2008, as que desgraciadamente nos tendremos que esperar un poco. Lo que s es seguro, es que en el momento 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

Seguridad
La seguridad es uno de los aspectos ms cuidados de Android. Est dividido en nive-

Previsiones de comercializacin
Con las empresas que se encuentran respaldando el proyecto, y no me refiero a Google ahora, sino a HTC, Motorola, Samsung..., Android no tendr problemas de comercializacin. Slo falta software suficiente para rivalizar de manera directa con las dems

Figura 3. Vista inicial del emulador

Figura 4. Resultado del proyecto de prueba

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 grfico 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 sistema 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 algn 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.

Linux+ 3/2008

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

Listado 1. Conversor.java
package conversor.peso; import android.app.Activity; import android.os.Bundle; public class Conversorextends Activity { @Override

Instalacin del kit de desarrollo de software de Android

/** Called when the activity is first created. */ 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="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> </LinearLayout></LinearLayout>

Nada ms anunciar el producto, Google anunciaba que liberaba tambin la SDK del mismo y que convocaba un concurso llamado Android Developer Challenge cuya fecha de finalizacin 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:

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="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_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="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_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="fill_parent" android:layout_height="wrap_content" /> </LinearLayout></LinearLayout>

unzip android_sdk_linux_m3-rc22a.zip

Creamos un directorio para copiar el contenido (cambiamos oportunamente las rutas para adecuarlas a nuestro caso):

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_ profile) el directorio tools de la SDK:

sudo nano $HOME/.bashrc

Incluimos al final por ejemplo:

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> export PATH=${PATH} :$HOME/android_sdk/tools

Ya tenemos todo listo para proseguir instalando ahora, el plugin de Eclipse.

www.lpmagazine.org

para programadores Programacin en Android, el Linux que estar en todos los mviles, Instalacin del plugin de Eclipse (ADT)
La instalacin del plugin de Eclipse para desarrollar proyectos con Android se realiza de manera totalmente grfica: Iniciamos Eclipse y nos dirigimos a: Help > Software updates > Find andinstall... En el dilogo que nos aparece elegimos: Search for new features to install y presionamos en Next. Creamos un nuevo sitio remoto, New remote site incluyendo como ttulo Android 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.
Listado 5. Botones
<LinearLayout android:orientation="horizontal" android:layout_width="fill_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>

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 Eclipse, Preferences > Android y asignamos la ruta en SDK Location.

Ya estamos listos para comenzar a realizar nuestros primeros proyectos con Eclipse para Android. Dado que todava se encuentra tanto Android, como su SDK, como el plugin, 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.

Figura 6. Resultado con libras y kilogramos ya listos para introducir.

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

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

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 configuracin de ejecucin


Nos dirigimos al dilogo de configuracin de la ejecucin: Run > Run... Dentro de l seleccionamos a Android y elegimos crear una nueva configuracin. Le damos nombre y asignamos: Nombre del proyecto a ejecutar. Actividad dentro del mismo a ejecutar.

Listado 6. Incluyendo los EditText y Button dentro del fichero java


public class Conversorextends Activity { private EditTexttextoLibras; private EditTexttextoKilogramos; @Override

/** Called when theactivity is first created. */ public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); textoLibras = (EditText)findViewById(R.id.libras); textoKilogramos = (EditText)findViewById(R.id.kilogramos); Button librasAKilogramos =(Button)findViewById(R.id.librasAKilogramos); Button kilogramosALibras =(Button)findViewById(R.id.kilogramosALibras) ; } }

Tambin podemos elegir otras opciones para el emulador y en el apartado al margen que se llama Common. Ya podemos entonces ejecutar la aplicacin, depurarla o simplemente guardar esta nueva configuracin 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 modificar 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

Linux+ 3/2008

para programadores Programacin en Android, el Linux que estar en todos los mviles,
Una vez cargado el proyecto, observamos el contenido de Conversor.java: La sentencia que nos interesa ahora es: setContentView(R.layout.main); Esta sentencia indica qu interfaz de usuario se establece 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 definidos en archivos XML, como el que hemos modificado 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. 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 propiedades que usaremos sern: layout_height: Altura. text: Texto del mismo.

Figura 7. Interfaz completo

creamos un nuevo proyecto como el anterior y lo nombramos Hola Mundo. Posteriormente antes de ejecutar modificamos el archivo main.xml, que est dentro de layouts y cambiamos el siguiente valor:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hola Mundo! Hola Android." />

Nuestro TextView ser as:


<TextView android:layout_width="wrap_ content" android:layout_height="wrap_content" android:text="@string/ libras" />

De manera que el campo android:text, contenga la cadena para escribir Hola Mundo! Hola Android. Con esta simple modificacin ya cambiamos el valor del campo que aparece en pantalla. Como veris, el directorio layouts con sus distintos archivos XML de los que os he hablado anteriormente para definir interfaces grficos de usuario, puede parecer de primeras ms complejo, sin embargo es cuestin de acostumbrarse al modo de programar del mismo.

El campo @string/libras hace referencia al archivo string.xml definido en el directorio values del proyecto. Este archivo que de primeras slo tiene Empezando a trabajar con layouts guardado el nombre de la aplicacin, appNaPuesto que queremos hacer algo as como: me, nos servir para almacenar las cadenas Libras: (campo de texto para introducir de nuestra interfaz. Por ejemplo en este caso tendremos: cantidad) Kilogramos: (campo de texto para introdu<?xml version="1.0" cir cantidad) Botn para convertir de libras a kilogra- encoding="utf-8"?> <resources> mos. Botn para convertir de kilogramos a li- <string name="app_name"> Conversor</string> bras. Los layout nos ofrecen la posibilidad de hacerlo definiendo primero un tipo de contenedores llamados: LinearLayout. stos agrupan 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 anidaremos 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 fijis ese LinearLayout vertical que os comento ya viene definido dentro del proyecto autogenerado por la siguiente sentencia: android:orientation="vertical. Para crear la lnea definida 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 nuevo LinearLayout ha sido la orientacin del
<string name="libras"> Libras:</string> </resources>

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.

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:

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

En la red
Android http://code.google.com/android/ index.html Open Handset Alliance http://www.openhandsetalliance.com/ Android Development Community http://www.anddev.org/

www.lpmagazine.org

para programadores Programacin en Android, el Linux que estar en todos los mviles,
id: Identificador layout_width: Anchura layout_height: Altura

Listado 7. Campos numricos


<EditText id="@+id/libras" android:layout_width="fill_parent" android:numeric="true" android:layout_height="wrap_content" /> <EditText id="@+id/kilogramos" android:layout_width="fill_parent" android:numeric="true" android:layout_height="wrap_content" />

Los valores que hemos usado o usaremos para anchura y altura, wrap_content y fill_parent, envuelven el contenido o rellenan al padre respectivamente. Es la manera ms rpida y eficiente (al menos para estos ejemplos) de definir una altura y una anchura que se ajustan a nuestras necesidades. Nuestro EditText tendr la siguiente forma:
<EditText id="@+id/libras" android:layout_width="fill_parent" android:layout_height="wrap_content" />

Listado 8. Definicin 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); } } ) ;

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 resultado lo podis ver en la Figura 6.

Aadiendo botones
Para incluir los botones, los haremos incluyendo 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: Identificador text: Texto layout_width: Anchura layout_height: Altura

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="fill_parent" android:layout_height="wrap_content" /> En Conversor.java: Button salir = (Button) findViewById(R.id.salir); [...] { salir.setOnClickListener(new View.OnClickListener() public void onClick(View view) { setResult(RESULT_OK); finish(); } } ) ;

En el texto se har una referencia al texto en s que aparecer dentro del botn que estar guardado en string.xml. Como veis el sistema es siempre el mismo, en main.xml definimos las propiedades y en string.xml almacenamos el contenido y las cadenas que aparecen en nuestra interfaz. Definamos 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

Linux+ 3/2008

para programadores Programacin en Android, el Linux que estar en todos los mviles, Dotando de funcionalidad a nuestro ejemplo
Como podis observar en la toma de pantalla anterior ya tenemos el interfaz diseado 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: Control + 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 correspondiente con el mtodo findViewById al que le pasamos como parmetro el identificador y nos devuelve el objeto de la vista con dicho identificador. Veamos cmo sera el cdigo (Listado 6). Como podis observar textoLibras y textoKilogramos 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.

Figura 10. Logo de Android

Definiendo mtodos para realizar los clculos

La manera ms eficiente de hacerlo es asignar la propiedad de campo numrico a los mismos. Esto lo hacemos en el fichero main.xml (Listado 7). Una vez hecho sto nos ahorramos el posible problema de que el usuario introduzca 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 kilogramos y viceversa. Para ello utilizaremos onClickListener y dentro de l crearemos la definicin de la accin para el evento onClick. La primera accin ser si hacemos clic en el botn de transformacin de libras a kilogramos 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).

Lo primero que haremos ser obligar a Incluimos un botn Android que no acepte valores que no sean para cerrar la aplicacin numricos en los EditText. Para terminar el ejemplo vamos a aadir a nuestra aplicacin un botn para cerrarla. Para ello usaremos en el archivo con el cdigo Java los mtodos: setResult con el parmetro RESULT_OK para indicar a Android que la actividad ha finalizado correctamente. finish() para cerrar la aplicacin.

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 siguiente paso para seguir desarrollando nuestro trabajo. Manejar el bluetooth o crear una aplicacin que use navegacin web son posibilidades 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 dificultades, 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.

Sobre el autor
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 Abogados 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 relacionado 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.

Adems incluiremos el Listado 9. Si pulsamos 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

Figura 9. Botn cerrar incluido

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

www.lpmagazine.org

También podría gustarte