Android

89 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
89
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Android

  1. 1. para programadores Programación en Android, el Linux que estará en todos los móviles, Programación en Android Francisco Javier Carazo Gil El anuncio por parte de Google y las compañías líderes mundiales del sector de las telecomunicaciones mundiales sobre la creación de Android, el sistema operativo para móviles basado en el núcleo de Linux, ha supuesto el mayor empujón que ha recibido el software libre quizás en toda su historia. Y es que en un sector en el que todavía no hay un monopolio de facto como en el de los ordenadores de escritorio, en el que también se está progresando, la colaboración de Google y los gigantes de las telecomunicaciones van a suponer para Android poder competir en unas condiciones inmejorables contra sus rivales de código cerrado. E l cada vez más bamboleante sector de los OS. El sistema operativo para PDA y smartphones (los mó- linux@software.com.pl móviles está viviendo a día de hoy el mayor viles que combinan funciones con PDA) desapareció como cambio de su historia en cuanto a software se tal en febrero de 2006 dando paso a un sucesor llamado refiere. Atrás quedaron los sistemas propios ACCESS Linux Platform del que no se sabe demasiado. de cada empresa que apenas dejaban al usuario ejecutar En esta dura batalla de los sistemas operativos para una máquina virtual de la versión Micro Edition de Java. dispositivos móviles los grandes contrincantes son todos Las posibilidades del hardware móvil son hoy tan gran- de código cerrado y sus nombres son Microsoft Windows des, que es más que posible llevar a cabo casi todas las Mobile, Blackberry OS y Symbian OS. actividades que anteriormente sólo estaban permitidas Aparte está el sistema operativo libre para PDA y para sistemas de escritorio o portátiles. móviles OpenMoko, y el sistema que trae iPhone que Por ejemplo la reproducción de vídeo codificado está comenzando a llegar al mercado. Sin duda, se espera con codec de cierta complejidad, la visualización de una auténtica guerra entre todos estos dispositivos y el presentaciones o simplemente la posibilidad de navegar protagonista de este artículo, Android. por Internet son hoy en día funcionalidades que se deben exigir a los móviles de gama alta. ¿Qué es Android? Con el paso del tiempo todas estas funcionalidades Android es una plataforma libre para teléfonos móviles, irán pasando cada vez a gamas más bajas y posiblemente basada en GNU/Linux y con licencia GPL que va a meter los móviles sustituirán a los equipos actuales de sobre- de lleno al software libre en esta batalla. mesa y portátiles para la realización de muchas tareas. Creado por la Open Handset Alliance, alianza tecnoló- Esta revolución que se nos avecina está empezándose a gica encabezada por Google, acompañada de compañías del librar a día de hoy ya en el terreno de los sistemas operati- nivel de T-Mobile, HTC, Motorola, Telefónica, Samsung, vos. La primera figura en caer de esta batalla ha sido Palm Intel o Nvidia; tiene el respaldo suficiente para tener un2 Linux+ 3/2008
  2. 2. para programadores Programación en Android, el Linux que estará en todos los móviles,éxito seguro y para convertir al software libreen el producto dominante en esta porción delmercado de la tecnología. El potencial de Android no está sólo ava-lado por las empresas que lo respaldan sinopor sus propias características técnicas.Características de AndroidLa característica que me parece más im-portante es que se trata de una plataformatotalmente abierta tanto para fabricantes dedispositivos móviles como para desarrolla-dores de aplicaciones. Vayamos explicandouno a uno los puntos más importantes de laplataforma.NúcleoEs Linux, concretamente la versión 2.4.16del kernel de Linux, por ahora. A este nivelestán implementados todos los controladoresprimarios (cámara, USB, teclado...), aunque Figura 1. Arquitectura del sistematambién pueden añadirse más drivers por par-te del fabricante del dispositivo (por ejemploel controlador de la pantalla táctil). Sobre el núcleo están escritas las libreríasque se encargan de las funcionalidades bási-cas. Estas librerías están escritas en C/C++ ypueden ser accedidas directamente desde losprogramas de la plataforma. Algunas de ellasy sus funcionalidades son:• Librerías en C del sistema: Implemen- taciones de las librerías estándar de C, preparadas para un mejor funciona- miento en dispositivos embebidos que usan Linux.• Librerías multimedia: Proporcionan so- porte para grabación y reproducción de audio y vídeo, así como de imágenes.• Gestor de superficies: Maneja el acceso al dispositivo de pantalla.• Librería del núcleo web: Moderno mo- tor de navegación web que posibilita usar el navegador de Android así como vistas incrustadas de los sitios web.• SGL: El motor gráfico 2D.• Librerías para 3D: Implementación ba- sada en las API de OpenGL ES 1.0.• FreeType: Renderización de mapas de bit y gráficos vectoriales.• SQLite: Proporciona soporte para base de datos relacionales.Máquina virtual DalvikEs la encargada de ejecutar los programas.Maneja dos tipos de archivos:• .APK: Comprimido con ejecutables y datos del programa. Figura 2. Interfaz gráfica de usuario de OpenMoko www.lpmagazine.org 3
  3. 3. para programadores Programación en Android, el Linux que estará en todos los móviles, • .DEX: De Dalvik ejecutable, es un ar- les. Primero está el bajo nivel, manejado por chivo similar a .class de Java pero post las facilidades estándar de Linux teniendo procesado para conseguir un mejor ren- en cuenta permisos de acceso para archivos, dimiento en la máquina Dalvik. usuarios, servicios, etc. El nivel alto, está ma- nejado en Java, que se encarga de la integridad La máquina virtual tiene acceso a: del código, del sistema de acceso, y de aislar una aplicación de otra. Además en niveles • Core Libraries: Librerías con las clases intermedios Android hace uso de la Memoria estándar de Java. Protegida, gestión de procesos, así como un • Application Framework: Módulos es- sistema de permisos explícitos de cara a los critos en Java que permiten interactuar servicios a los que un programa desea acceder con la agenda de contactos, la mensaje- en un momento dado. Figura 5. Hola Mundo – Hola Android ría, llamadas... Otros aspectos de importancia plataformas (que llevan unos cuantos años Aplicaciones Aparte de lo ya comentado es interesante re- por delante de Android) pero gracias a las Todas están escritas en Java pero tienen ac- saltar que Android es totalmente compatible facilidades que da Android a la comunidad ceso directo a bajo nivel a través de la API. con cualquier tipo de transmisión por lo que esto tampoco será problema a la larga. Las Están armadas en base a cuatro bloques de funcionará igual sobre dispositivos que usen fechas por ahora son muy difusas, pero se construcción: GPRS con otros que usen 3G. Las interfases espera que Android esté disponible y ope- gráficas de usuario están diseñadas usando rativo en el mercado a finales de 2008, así • Activity: Parte visual de la aplicación. archivos XML que además de fáciles de que desgraciadamente nos tendremos que • Intent Reciver: Un intento, traducción diseñar permiten al equipo representar las esperar un poco. al español de intent, sería algo así como interfases en la mayor parte de los casos Lo que sí es seguro, es que en el momen- un evento genérico que sería indepen- independientemente de las dimensiones de to de su lanzamiento al público tendrá más diente de los programas, por lo que en la pantalla. de una campaña publicitaria detrás y mucho caso de pedirse Android buscaría la El navegador que utiliza WebKit que a más marketing aparte, por lo que os puedo aplicación adecuada para servir dicho su vez también está implementado usando asegurar que nos enteraremos todos. intento. Por ejemplo podría ser algo así KHTML, por lo que nos aseguramos de como enviar sms. un perfecto visionado de los sitios web que OpenMoko la otra • Service: El concepto de demonio en cumplan con los estándares. La versión del alternativa libre Linux aplicado a Android. reproductor Flash, de excepcional importan- Android no es ni mucho menos el primer • Content provider: Proporciona a la aplica- cia en la actualidad a pesar de no ser libre, sistema operativo libre que aparece en los ción capacidad de interactuar de manera está prevista que sea liberada en breve para dispositivos de carácter móvil. Anunciado sencilla con la parte interna de Android. atender a los miles de dispositivos que trae- en 2006, hasta la aparición de Android rán consigo Android. suponía el sistema libre con más fuerza en Seguridad Además Android asegura una funciona- este campo. Basado también en el núcleo de La seguridad es uno de los aspectos más lidad comparable o incluso mejor de la de Linux, OpenMoko usa un entorno gráfico cuidados de Android. Está dividido en nive- dispositivos tan cuidados como iPhone, por lo de usuario basado en el servidor X.org, que en Android tenemos un ganador seguro. las librerías GTK+ y el gestor de ventanas Matchbox (el mismo que por cierto usarán Previsiones de comercialización los OLPC). Está basado en el framework Con las empresas que se encuentran respal- de OpenEmbedded y el sistema de paquetes dando el proyecto, y no me refiero a Google ipkg. ahora, sino a HTC, Motorola, Samsung..., Sin embargo, OpenMoko no ha tenido Android no tendrá problemas de comercia- el respaldo de ninguna gran empresa y sólo lización. Sólo falta software suficiente para el móvil Neo1973 de la empresa coreana rivalizar de manera directa con las demás FIC ha llegado a venderse con dicho siste- ma instalado para ser usado con cualquier compañía. OpenMoko es un ejemplo más de cómo un gran producto no llega a triunfar por culpa de la falta de comercialización y sobre todo por no tener el respaldo de al- gún grande de la tecnología mundial. Algo parecido le pasó por ejemplo a la consola GP2X que por desgracia tiene un público realmente limitado y no ha podido despegar al igual que sus competidoras Nintendo DS y Play Station Portable por culpa de la falta Figura 3. Vista inicial del emulador Figura 4. Resultado del proyecto de prueba de comercialización.4 Linux+ 3/2008
  4. 4. para programadores Programación en Android, el Linux que estará en todos los móviles,Listado 1. Conversor.java Instalación del kit de desarrollo de softwarepackage conversor.peso; de Androidimport android.app.Activity; Nada más anunciar el producto, Googleimport android.os.Bundle; anunciaba que liberaba también la SDKpublic class Conversorextends Activity { del mismo y que convocaba un concurso/** Called when the activity is first created. */ llamado Android Developer Challenge cu-@Override ya fecha de finalización está prevista parapublic void onCreate(Bundle icicle) { marzo de 2008 y cuya cuantía en premiossuper.onCreate(icicle); asciende hasta los 10 millones de dólares.setContentView(R.layout.main);}} Estos dos movimientos, además de mover a la comunidad entera, han hecho que muchosListado 2. Creando el primer LinearLayout horizontal de los desarrolladores libres vean con más<?xml version="1.0"encoding="utf-8"?> que buenos ojos a Android.<LinearLayout xmlns:android="http://schemas.android. El kit de desarrollo proporciona lascom/apk/res/android" herramientas necesarias para que, usandoandroid:orientation="vertical" Java y las clases pertinentes, podamosandroid:layout_width="fill_parent" desarrollar (y probar usando el emuladorandroid:layout_height="fill_parent"> que incorpora) el software necesario para<LinearLayout android:orientation="horizontal" el sistema.android:layout_width="fill_parent"android:layout_height="wrap_content"> Instalación de la SDK</LinearLayout></LinearLayout> Procedemos primeramente a descargar la SDK, que viene comprimida en formatoListado 3. main.xml ZIP de la web de Android en la sección<?xml version="1.0"encoding="utf-8"?> de Software development kit -> Download<LinearLayout xmlns:android="http://schemas.android.com SDK -> Linux (i386). Una vez descargado /apk/res/android" procedemos a:android:orientation="vertical"android:layout_width="fill_parent" • Descomprimimos el archivo:android:layout_height="fill_parent"><LinearLayout android:orientation="horizontal" unzip android_sdk_linux_m3-rc22a.zipandroid:layout_width="fill_parent"android:layout_height="wrap_content"> • Creamos un directorio para copiar el<TextView android:layout_width="wrap_content" contenido (cambiamos oportunamenteandroid:layout_height="wrap_content" las rutas para adecuarlas a nuestro ca-android:text="@ so): string/libras" /><EditText id="@ +id/libras" mkdir $HOME/android_sdkandroid:layout_width="fill_parent"android:layout_height="wrap_content" /> • Copiamos el contenido:</LinearLayout><LinearLayout android:orientation="horizontal" sudo cp -r $HOME/androidandroid:layout_width="fill_parent" _sdk_linux_m3-rc22aandroid:layout_height="wrap_content"> /* $HOME/<TextView android:layout_width="wrap_content" android_sdkandroid:layout_height="wrap_content"android:text="@string/kilogramos" /> • Añadimos al PATH de bashrc (o bash_<EditText id="@+id/kilogramos" profile) el directorio tools de la SDK:android:layout_width="fill_parent"android:layout_height="wrap_content" /> sudo nano $HOME/.bashrc</LinearLayout></LinearLayout> • Incluimos al final por ejemplo:Listado 4. string.xml<?xml version="1.0" encoding="utf-8"?><resources> export PATH=${PATH}<string name="app_name">Conversor</string> :$HOME/android_sdk/tools<string name="libras">Libras:</string><string name="kilogramos">Kilogramos:</string></resources> Ya tenemos todo listo para proseguir instalando ahora, el plugin de Eclipse. www.lpmagazine.org 5
  5. 5. para programadores Programación en Android, el Linux que estará en todos los móviles, Instalación del plugin de Eclipse (ADT) • Antes de hacer uso de él deberemos La instalación del plugin de Eclipse para reiniciar Eclipse y hacer que apunte al desarrollar proyectos con Android se realiza directorio donde tenemos instalada la de manera totalmente gráfica: SDK. • Para asignar la ruta de la SDK al plugin • Iniciamos Eclipse y nos dirigimos a: entramos en las preferencias de Eclip- Help > Software updates > Find andins- se, Preferences > Android y asignamos tall... la ruta en SDK Location. • En el diálogo que nos aparece elegi- mos: Search for new features to install Ya estamos listos para comenzar a realizar y presionamos en Next. nuestros primeros proyectos con Eclipse pa- • Creamos un nuevo sitio remoto, New ra Android. Dado que todavía se encuentra Figura 6. Resultado con libras y kilogramos ya listos remote site incluyendo como título An- tanto Android, como su SDK, como el plu- para introducir. droid Plugin por ejemplo; y como URL gin, en plena fase de desarrollo, deberemos del mismo: https://dl-ssl.google.com/ estar atentos y de vez en cuando repetir los un proyecto para Android. Asignamos el android/eclipse/. primeros pasos de la instalación del plugin nombre del proyecto así como si vamos a • El sistema buscará información sobre para ver si hay disponible una versión trabajar con nuevo código o con código ya el plugin y acto seguido aparecerá un nueva. existente y: diálogo donde se nos mostrará el plugin para elegir. Lo seleccionamos: Android Primeros pasos • Nombre del paquete: prueba.primera por Plugin > Eclipse Integration > Android con Eclipse y Android ejemplo. Development Tools y presionamos Gracias al plugin que acabamos de instalar, • Nombre de la actividad: prueba Next. la creación del proyecto para Android es • Nombre de la aplicación: prueba • Una vez seleccionado, aceptamos las algo automático. Accedemos a File > New condiciones de uso y acto seguido el > Project... En el diálogo que nos aparece El plugin creará dos directorios y un archivo plugin se habrá terminado de instalar. tenemos disponible una opción para crear XML: Listado 5. Botones • src/: Donde se almacenará nuestro código. <LinearLayout android:orientation="horizontal" • res/: Donde se almacenarán los recursos android:layout_width="fill_parent" del proyecto. android:layout_height="wrap_content"> • androidManifest.xml: Información sobre el <Button id="@+id/librasAKilogramos" proyecto. android:text="@string/librasAKilogramos" android:layout_width="wrap_content" Creando la configuración de ejecución android:layout_height="wrap_content" /> Nos dirigimos al diálogo de configuración de la <Button id="@+id/kilogramosALibras" ejecución: Run > Run... android:text="@string/kilogramosALibras" Dentro de él seleccionamos a Android y android:layout_width="wrap_content" elegimos crear una nueva configuración. Le android:layout_height="wrap_content" /> damos nombre y asignamos: </LinearLayout> • Nombre del proyecto a ejecutar. Listado 6. Incluyendo los EditText y Button dentro del fichero java • Actividad dentro del mismo a ejecutar. public class Conversorextends Activity { private EditTexttextoLibras; También podemos elegir otras opciones para private EditTexttextoKilogramos; el emulador y en el apartado al margen que se /** Called when theactivity is first created. */ llama Common. @Override Ya podemos entonces ejecutar la apli- public void onCreate(Bundle icicle) { cación, depurarla o simplemente guardar super.onCreate(icicle); esta nueva configuración de ejecución para setContentView(R.layout.main); usarla posteriormente. textoLibras = (EditText)findViewById(R.id.libras); textoKilogramos = (EditText)findViewById(R.id.kilogramos); Hola mundo, hola Android Button librasAKilogramos =(Button)findViewById(R.id.librasAKilogramos); Una vez visto esto, si ejecutáis el código Button kilogramosALibras =(Button)findViewById(R.id.kilogramosALibras) veréis un texto parecido a un típico Hello ; World. Personalicemos algo más eso. Veamos } qué debemos modificar para que aparezca el } típico, Hola mundo que todos, o casi todos, hacemos cuando comenzamos a probar con un nuevo lenguaje o plataforma. Para ello6 Linux+ 3/2008
  6. 6. para programadores Programación en Android, el Linux que estará en todos los móviles, Una vez cargado el proyecto, observamos el mismo. Ahora dentro de este LinearLayout contenido de Conversor.java: colocaremos la etiqueta de Libras y el campo La sentencia que nos interesa ahora es: de texto para insertar la cantidad. setContentView(R.layout.main); Esta sen- tencia indica qué interfaz de usuario se esta- TextView y EditText blece cuando la actividad se llama. Como os Para poner la palabra Libras en el interfaz comentamos antes al comienzo del artículo, usaremos los llamados TextView. La sintaxis un concepto muy importante en Android es es análoga a la de los LinearLayout. Las pro- el de actividad que puede ser llamada por piedades que usaremos serán: otro software en ejecución, por lo que seFigura 7. Interfaz completo facilita mucho labores como Enviar SMS o • layout_height: Altura. Llamar a tal contacto que pueden ser a su • text: Texto del mismo.creamos un nuevo proyecto como el anterior vez actividades.y lo nombramos Hola Mundo. Posteriormen- Volviendo a la sentencia anterior, deciros Nuestro TextView será así:te antes de ejecutar modificamos el archivo que establece el interfaz en el archivo mainmain.xml, que está dentro de layouts y cam- de layout. Los layout están definidos en ar- <TextView android:layout_width="wrap_biamos el siguiente valor: chivos XML, como el que hemos modificado content" en el ejemplo de Hola Mundo. Los layout android:layout_height="wrap_content"<TextView aunque puedan parecer poco intuitivos, nos android:text="@string/android:layout_width="fill_parent" permiten crear interfaces de manera rápida libras" />android:layout_height="wrap_content" y lo que es más importante, solucionan elandroid:text="Hola Mundo! Hola El campo @string/libras hace referencia al problema de los distintos tamaños de pantallaAndroid." que hay en los dispositivos móviles. archivo string.xml definido en el directorio/> values del proyecto. Empezando a trabajar con layouts Este archivo que de primeras sólo tieneDe manera que el campo android:text, con- Puesto que queremos hacer algo así como: guardado el nombre de la aplicación, appNa-tenga la cadena para escribir ¡Hola Mundo! me, nos servirá para almacenar las cadenasHola Android. Con esta simple modificación • Libras: (campo de texto para introducir de nuestra interfaz. Por ejemplo en este casoya cambiamos el valor del campo que apa- cantidad) tendremos:rece en pantalla. Como veréis, el directorio • Kilogramos: (campo de texto para introdu-layouts con sus distintos archivos XML de cir cantidad) <?xml version="1.0"los que os he hablado anteriormente para • Botón para convertir de libras a kilogra- encoding="utf-8"?>definir interfaces gráficos de usuario, puede mos. <resources>parecer de primeras más complejo, sin em- • Botón para convertir de kilogramos a li- <string name="app_name">bargo es cuestión de acostumbrarse al modo bras. Conversor</string>de programar del mismo. <string name="libras"> Los layout nos ofrecen la posibilidad de ha- Libras:</string>Conversor de kilos a libras cerlo definiendo primero un tipo de contene- </resources>Para hacer un ejemplo un poco más complejo dores llamados: LinearLayout. Éstos agru-en el que manejemos algo más de Android, pan otros contenedores a su vez en su interior Ya tenemos la etiqueta puesta. Pasemos ahoravamos a comenzar a desarrollar un conversor y pueden tener dos orientaciones: vertical u a crear el campo de texto donde se insertaráde kilos a libras. De esta manera tendremos horizontal. Nosotros tendremos primero un la cantidad de libras. Usaremos los llamadosademás de algo de cálculo detrás, un interfaz LinearLayout vertical que almacene los EditText y también los incorporaremos alun poco más completo con: cuatro campos que nos interesan. Luego ani- LinearLayout vertical que hemos creado. Las daremos dentro de él más LinearLayout con propiedades que usaremos serán:• Un campo para introducir los kilos y otro orientación horizontal para poder contener para introducir las libras. el resto de elementos. La sintaxis de XML• Un botón para convertir de kilos a libras y nos facilita muchos estos anidamientos. Si otro para hacer lo contrario. os fijáis ese LinearLayout vertical que os co- mento ya viene definido dentro del proyecto En la redLo primero que haremos será crear un autogenerado por la siguiente sentencia:proyecto tal y como lo hemos hecho antes. android:orientation="vertical”. Para crear • AndroidPara el ejemplo he elegido los siguientes la línea definida porla etiqueta Libras y el http://code.google.com/android/nombres: campo de texto para insertar el valor de las index.html mismas, creamos otros LinearLayout que • Open Handset Alliance• Nombre proyecto: Conversor tenga orientación horizontal. Lo anidamos http://www.openhandsetalliance.com/• Nombre paquete: conversor.peso como está demostrado en el Listado 2. • Android Development Community• Nombre actividad: Conversor Lo único que hemos cambiado en el nue- http://www.anddev.org/• Nombre aplicación: Conversor vo LinearLayout ha sido la orientación del www.lpmagazine.org 7
  7. 7. para programadores Programación en Android, el Linux que estará en todos los móviles, • id: Identificador Listado 7. Campos numéricos • layout_width: Anchura <EditText id="@+id/libras" • layout_height: Altura android:layout_width="fill_parent" android:numeric="true" Los valores que hemos usado o usaremos android:layout_height="wrap_content" /> para anchura y altura, wrap_content y fi- ll_parent, envuelven el contenido o rellenan <EditText id="@+id/kilogramos" al padre respectivamente. Es la manera más android:layout_width="fill_parent" rápida y eficiente (al menos para estos ejem- android:numeric="true" plos) de definir una altura y una anchura que android:layout_height="wrap_content" /> se ajustan a nuestras necesidades. Nuestro EditText tendrá la siguiente forma: Listado 8. Definición de los métodos de cálculo <EditText id="@+id/libras" librasAKilogramos.setOnClickListener(new View.OnClickListener() android:layout_width="fill_parent" { android:layout_height="wrap_content" public void onClick(View view) /> { textoKilogramos.setText(""+Double.parseDouble(textoLibras.getText(). Si hacemos lo mismo para kilogramos y lo toString())*.4535924); añadimos al main.xml y a string.xml nos } quedarán como en los Listados 3 y 4. El re- } sultado lo podéis ver en la Figura 6. ) ; Añadiendo botones Para incluir los botones, los haremos inclu- kilogramosALibras.setOnClickListener(new View.OnClickListener() yendo dos button en un nuevo LinearLayout { horizontal que albergará a ambos botones. Los public void onClick(View view) botones, los incluiremos usando button, las { propiedades que usaremos del mismo son: textoLibras.setText(""+Double.parseDouble (textoKilogramos.getText( • id: Identificador ).toString())/.4535924); • text: Texto } • layout_width: Anchura } • layout_height: Altura ) ; En el texto se hará una referencia al texto en sí que aparecerá dentro del botón que estará guar- Listado 9. Botón cerrar dado en string.xml. En string.xml: Como veis el sistema es siempre el mis- <string name="cerrar">Cerrar</string> mo, en main.xml definimos las propiedades En main.xml: y en string.xml almacenamos el contenido <Button id="@+id/cerrar" y las cadenas que aparecen en nuestra in- android:text="@string/cerrar" terfaz. android:layout_width="fill_parent" Definamos primero lo que vamos a android:layout_height="wrap_content" /> incluir en el main.xml. Creamos un nuevo En Conversor.java: LinearLayout horizontal e incluimos los Button salir = (Button) findViewById(R.id.salir); botones (Listado 5). [...] salir.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { setResult(RESULT_OK); finish(); } } ) ; Figura 8. Conversor funcionando8 Linux+ 3/2008
  8. 8. para programadores Programación en Android, el Linux que estará en todos los móviles,Dotando de funcionalidada nuestro ejemploComo podéis observar en la toma de pan-talla anterior ya tenemos el interfaz dise-ñado y funcionando sin embargo, es unmero esqueleto que no tiene funcionalidad.Lo primero que haremos será importar: Figura 10. Logo de Androidimport android.widget.EditText y import La manera más eficiente de hacerlo es mercado, está llamada a ser quien lidere elandroid.widget.Button. Eclipse puede hacer asignar la propiedad de campo numérico a emergente sector de los sistemas operativosesta labor por nosotros si presionamos: Con- los mismos. Esto lo hacemos en el fichero para dispositivos móviles.trol + Mayúsculas + O sobre la instanciación main.xml (Listado 7). La inclusión de menús o de más elementosdel objeto del que no tiene el import oportuno Una vez hecho ésto nos ahorramos el en la interfaz así como el manejo de las librerías(lo que resulta bastante cómodo la verdad). posible problema de que el usuario introduz- que os he comentado anteriormente, son el si- Creamos dos atributos privados para la ca una letra en alguno de estos dos campos guiente paso para seguir desarrollando nuestroclase, uno para cada EditText y otros dos y el consiguiente manejo de excepciones, trabajo.objetos ya dentro del método onCreate para con la típica estructura de Java try y catch Manejar el bluetooth o crear una apli-manejar las acciones de los botones. también en Android. cación que use navegación web son posibi- Además asignamos a cada uno que Para hacer la operación crearemos dos lidades que gracias a la API de Android semanejen el EditText o Button correspon- métodos dentro de onCreate que se dediquen desarrollan de manera bastante simple.diente con el método findViewById al que le cada uno a hacer la operación de libras a ki- Las llamadas DevTools son una ayudapasamos como parámetro el identificador y logramos y viceversa. más para el desarrollador que Android nosnos devuelve el objeto de la vista con dicho Para ello utilizaremos onClickListener ofrece. Os animo desde aquí a que forméisidentificador. Veamos cómo sería el código y dentro de él crearemos la definición de la parte de la comunidad de desarrolladores y(Listado 6). acción para el evento onClick. comencéis a hacer aún más grande a este Como podéis observar textoLibras y texto- La primera acción será si hacemos clic sistema operativo que está llamado a hacerKilogramos son atributos de la clase Conversor en el botón de transformación de libras a ki- historia.ya que los manejaremos en más métodos que en logramos rellenar el campo texto kilogramos Las posibilidades como habéis vistoel onCreate. Ahora crearemos dos métodos más con el producto del número de libras por la son numerosas y las dificultades, comoen la clase para hacer las dos acciones, pasar de razón de conversión (0.4535924) para este por ejemplo lo raro que pueden resultarlibras a kilogramos y viceversa. caso. La acción inversa será hacer lo mismo de primeras el uso de layouts, son sólo pero dividiendo y cambiando de orden los cuestión de acostumbrarse, porque GoogleDefiniendo métodos campos (Listado 8). y el resto de componentes del proyecto hanpara realizar los cálculos conseguido diseñarlo de manera que resultaLo primero que haremos será obligar a Incluimos un botón realmente fácil programar y desarrollar paraAndroid que no acepte valores que no sean para cerrar la aplicación el mismo.numéricos en los EditText. Para terminar el ejemplo vamos a añadir a nuestra aplicación un botón para cerrarla. Para ello usaremos en el archivo con el códi- go Java los métodos: Sobre el autor • setResult con el parámetro RESULT_OK para indicar a Android que la actividad ha Francisco Javier Carazo Gil esIngeniero finalizado correctamente. Técnico en Informática de Sistemas. • finish() para cerrar la aplicación. Nacido en Córdoba, actualmente está estudiando Ingeniería en Informática. Ha Además incluiremos el Listado 9. Si pulsa- trabajado anteriormente con contrato de mos el botón Cerrar la aplicación se cerrará becario en el Ilustre Colegio de Aboga- y volveremos al menú inicial de Android en dos de Lucena. el emulador. Podéis ver el resultado en la Es webmaster de LinuxHispano.net, Figura 10 sitio del que es uno de los fundadores. Colaborador habitual de esta revista,sus Conclusiones intereses son principalmente el software Con este artículo no se ha intentado dar una libre, la programación y todo lo relaciona- explicación compleja y completa de todas do con GNU/Linux. las posibilidades que nos ofrece Android. Su sitio web personal está en http: Sin embargo, espero que el contenido //www.jcarazo.com. Podéis contactar del mismo os sirva para romper el hielo y con él a través de su correo personal, animaros a programar en esta plataforma que carazo@gmail.com.Figura 9. Botón cerrar incluido gracias al apoyo de las empresas líderes del www.lpmagazine.org 9

×