Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,288
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
47
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. DESARROLLO • Android Google se hace móvil. ANDROID El nuevo sistema operativo de Google se enfrenta cara a cara con el IPhone de Apple. Promete facilidad de uso, un montón de aplicaciones interesantes, conectividad total y un modelo de programación sencillo pero muy potente. POR ALBERTO GARCÍA SERRANO C on Android, Google ha hecho basado en Linux y que es software pantalla, el teclado, la cámara, la red una apuesta arriesgada libre. La propia Nokia abandera el pro- Wi-Fi, el audio y la memoria Flash, entrando en un mundo en el yecto Maemo, e incluso Ubuntu des- entre otros. En principio, el desarro- que ya brillan con luz propia Nokia con arrolla Ubuntu Mobile, pero no pare- llador no accederá directamente a esta Symbian, Apple con su IPhone, Black- cen alcanzar la masa crítica necesaria. capa, sino que utilizará una serie de Berry o Windows Mobile. ¿Para qué Android tiene todas las papele- librerías que están en un nivel supe- necesitaba el mundo un nuevo SO para tas para triunfar donde otros rior y que nos abstraen del hardware. móviles? Existen algunas diferencias han fracasado. Estas librerías, entre las que se inclu- que hacen de Android una opción yen la propia libc, están programadas muy interesante para los fabricantes, y Arquitectura en C. Otras librerías de este nivel son cómo no, para los usuarios y des- Como ya hemos comen SQLLite para la gestión de bases de arrolladores. tado, el corazón de datos, FreeType para las fuentes de A diferencia de sus Android es el ker- texto, WebKit y SSL para la navega- competidores, nel Linux, ción web y el cifrado de comunicacio- Android es software donde se nes, e incluso OpenGL ES para aprove- libre, lo que permite encuentran char la aceleración gráfica del disposi- que los fabricantes los drivers tivo. puedan usarlo sin necesarios Aunque estén escritas en C, el pro- necesidad de pagar para el gramador accede a ellas desde un API royalties. Por otra acceso al de Java, que es el lenguaje que se usa parte, al correr hardware, para desarrollar en Android. Para ello, sobre Linux, es en con- el sistema incluye una máquina vir- fácilmente por- creto, para tual java (JVM). La máquina virtual table y adap- la gestión que incluye Android se llama Dalvik, table a de la y ha sido creada por Google para casi cual- correr en dispositivos con poca memo- quier hard- ria y poca capacidad de pro- ware. ceso. A diferencia de la JVM Android de SUN, Dalvik ejecuta no es el archivos .dex en lugar de primer los clásicos archivos .class sistema de Java. Los archivos .dex móvil son más compactos y están más optimizados para el entorno del teléfono. No dispondre- mos de toda la API de JavaSE o JavaME, sino que se incluye un sub- conjunto llamado Core Libraries. Toda la programación del dispositivo se hace usando el Framework de aplica- ción, que nos ofrece todo lo necesario. davdibiase, Cosas como el ciclo de vida de la apli- www.sxc.hu cación o la gestión de recursos, se ges- tionan desde aquí. 50 Número 4 49 WWW.LINUX- MAGAZINE.ES
  • 2. Android • DESARROLLO Eclipse. Una vez instalado, selecciona- Listado 1: main.xml. mos Window > Preferences > 01 <?xml version=”1.0” 10 Android, y pulsando el botón Browse, encoding=”utf-8”?> android:layout_height=”wrap_co seleccionamos el directorio donde 02 <LinearLayout ntent” hemos instalado el SDK. Ya podemos xmlns:android=”http://schemas. 11 android:layout_weight=”1” empezar a crear nuestra primera apli- android.com/apk/res/android” 12 android:lines=”1” /> cación. 03 13 android:orientation=”horizonta 14 <Button Modelo de Programación l” 15 Antes de crear nuestra primera aplica- 04 android:id=”@+id/nav_button” ción Android, vamos a exponer algu- android:layout_width=”fill_par 16 nos conceptos que habrá que tener pre- ent” android:layout_width=”wrap_con sentes a la hora de crear aplicaciones. 05 tent” Empecemos con las Actividades (Acti- android:layout_height=”fill_pa 17 vities). Una Actividad se corresponde rent” /> android:layout_height=”wrap_co con una pantalla de la aplicación, es 06 ntent” decir, que tendremos tantas actividades 07 <EditText 18 como pantallas tenga nuestro pro- 08 android:id=”@+id/url_text” android:text=”@string/go_url” grama. Cada Actividad es responsable 09 /> de mantener su estado, de forma que android:layout_width=”wrap_con 19 </LinearLayout> tent” puedan integrarse en el ciclo de vida de la aplicación, que es gestionado por el propio framework de aplicación. En Finalmente, en la capa superior están aplicaciones. El emulador recrea per- Android podemos crear las interfaces las aplicaciones de usuario, desde el fectamente un móvil Android, por lo de usuario de dos formas, desde la pro- navegador web hasta la propia aplica- que, en principio, casi todo el pia actividad usando código Java, o ción que nos permite llamar por telé- desarrollo podremos hacerlo sin usar usando un fichero XML para describirla fono pasando por las aplicaciones de un terminal real. Para instalar el SDK como si fuera una página HTML. Esta Google, como Maps o Gmail. sólo hay que descomprimir el archivo última es la manera más sencilla y que hemos descargado en un directorio cómoda. Teléfonos (por ejemplo, /opt/androidSDK/), y ya Otro elemento importante son los El primer teléfono en utilizar Android podremos empezar a trabajar con el Intents. Un Intent es un mecanismo ha sido el HTC G1. Desgraciadamente, SDK; sin embargo, usarlo directamente para describir una acción, por ejemplo, en Europa sólo lo comercializa T- puede ser un poco engorroso. hacer una foto o enviar un email. Todas Mobile, que no ofrece servicio en Afortunadamente, han pensado en las acciones que queramos realizar la España. Sin embargo, en el momento todo y han creado un plugin para haremos mediante Intents. Este meca- de escribir este artículo, Telefónica Eclipse que nos va a facilitar mucho el nismo es muy flexible ya que, por Movistar ha comunicado que va a trabajo. Instalar el plugin en Eclipse es ejemplo, podríamos crear una actividad comercializarlo (bajo el nombre de sencillo. Lo primero es descargar para envío de mensajes SMS y regis- HTC Dream) y Vodafone está a punto Eclipse de [2] en caso de que no lo ten- trarla de forma que maneje el Intent de comercializar el HTC Magic (tam- gamos ya instalado. Lo iniciamos, y correspondiente. De esta forma, bién conocido como HTC G2). Proba- seleccionamos el menú Help > Soft- cuando alguien quiera enviar un SMS blemente, cuando lea estas líneas ware updates… Tras seleccionar la pes- mediante este Intent, se invocará nues- ambos teléfonos estarán ya disponi- taña Available Soft- bles. ware, pulsamos el En principio, son muy parecidos. El botón Add Site… y HTC Dream incluye un teclado físico añadimos la URL que no incluye el HTC Magic, a cambio, https://dl- HTC Magic incorpora más capacidad de ssl.google.com/ memoria ROM y una batería más lon- android/eclipse/. Pul- geva. En el Cuadro 1 se describen las samos OK. Nos apare- características de ambos. cerá el nuevo sitio en el listado de la pestaña El Entorno de Desarrollo Available Software. Lo La última versión del SDK de Android marcamos y pulsamos es la 1.1. Puede descargarse de [1]. El el botón Install. A par- SDK nos ofrece, además de un emula- tir de aquí sólo hay dor, todas las aplicaciones y librerías que seguir los pasos que vamos a necesitar para desarrollar que nos va indicando Figura 1: Arquitetura de Android. WWW.LINUX- MAGAZINE.ES Número 49 51
  • 3. DESARROLLO • Android Eclipse. Para mostrar las capacidades de la plataforma, vamos a crear un sencillo navegador web. Selecciona- mos el menú File > New > Project… y en la ventana que aparece a conti- nuación seleccionamos Android Pro- ject. Eclipse abrirá un asistente que generará el esqueleto de una aplica- ción sencilla. Simplemente rellena- mos los campos de esta nueva ven- tana con los mismos que pueden observarse en la figura 3 y pulsamos el botón Finish. En la figura 4 pode- mos ver cómo queda el entorno de desarrollo y la estructura de directo- Figura 3: Asistente para la creación de una apli- rios que ha creado el asistente. cación Android en Eclipse. Vamos a echar un vistazo más a fondo: El archivo principal de nuestra Por último, hablaremos del archivo actividad es AndroidBrowser.java. Cada androidManifest.xml, que contiene una una de las actividades (pantallas) del gran cantidad de información acerca de programa hereda de la clase Activity. El la aplicación, como por ejemplo, nom- Figura 2: Nuevo HTC Magic de Vodafone. framework se encarga de llamar al bre de la aplicación, versión, activida- método onCreate() de nuestra actividad des que la componen (tendremos que tra actividad en vez de la actividad por cuando se lanza la aplicación, y en este registrar cada actividad del programa defecto para envío de mensajes. En el caso, lo único que se hace es, mediante aquí), información de permisos y fir- ejemplo que desarrollaremos en este setContentView(), decirle a Android mas, documentación, etc… artículo, le pediremos a Android que qué vista queremos mostrar en la pan- Después de este recorrido por este abra una página web mediante un talla. La vista se referencia mediante esqueleto de aplicación, es hora de eje- Intent, y el sistema operativo sabrá qué un archivo de recursos llamado R.java. cutarlo. En el explorador de paquetes aplicación tiene que utilizar para ello. En principio, la gestión de este archivo de Eclipse, pulsamos con el botón dere- Los Servicios (Services) son tareas es automática y nosotros no tendremos cho del ratón sobre la carpeta raíz de la que corren en segundo plano, como si que preocuparnos por él, ya que según aplicación y seleccionamos Run as > se tratara de un demonio Unix. Imagi- se añadan recursos, Eclipse actualizará Android application. Esto lanzará el nemos que queremos hacer sonar un la clase. Todos los recursos de nuestra emulador y nos permitirá ver a Android MP3, pero mientras escuchamos, que- aplicación se almacenan dentro del saludándonos. Pero no vamos a que- remos poder seguir usando el teléfono. directorio res. En nuestro ejemplo, se darnos aquí, vamos a continuar cre- Mediante un servicio, podemos dejar hace referencia a un recurso llamado ando nuestro navegador. sonando la música de fondo mientras main, que está en la carpeta layout del Comenzaremos definiendo la interfaz usamos otras aplicaciones. Una activi- directorio res. En este archivo se des- de usuario sustituyendo el archivo res/ dad puede luego acoplarse a un servi- cribe la interfaz de usuario como layout/main.xml por el que aparece en el cio para, por ejemplo, parar o cambiar fichero XML, de forma parecida a como listado 1. Estamos creando un cuadro de la canción. lo haríamos con un archivo HTML. En texto para introducir la URL y un botón Por último, los Proveedores de con- este caso se utiliza un layout llamado para navegar. Todo de forma declarativa. tenido (Contents Providers) almacenan LinearLayout (que dispone todos los Al archivo /res/values/strings.xml le datos que son compartidos por todas elementos de la interfaz de forma añadimos la línea que define el texto las aplicaciones. El acceso a esos datos lineal) y dentro una etiqueta TextView, “Ir…” para el botón, tal y como se se hace a través del API definida para que muestra un texto en pantalla. Por observa en el listado 2. cada proveedor de contenidos. Un supuesto hay una larga lista de tipos de ejemplo de proveedor de contenidos layouts y de componentes de interfaz, Listado 2: strings.xml. que ofrece Google son los contactos como botones, listas, etc… 01 <?xml version=”1.0” que tenemos almacenados en nuestro En la etiqueta TextView, podemos ver encoding=”utf-8”?> teléfono. Desde nuestra aplicación la propiedad android:text=”@string/ 02 <resources> podremos acceder a los contactos hello” que hace referencia a una eti- 03 <string usando el proveedor de contenidos queta XML en el archivo de recursos name=”app_name”>AndroidBrowser correspondiente. values/strings.xml y que se llama hello. </string> En este archivo almacenamos todos los 04 <string Nuestro Primer Programa literales de la aplicación, haciendo más name=”go_url”>Ir...</string> Vamos a crear nuestro primer programa sencilla la internacionalización de las 05 </resources> Android, y para ello vamos a usar aplicaciones. 52 Número 49 WWW.LINUX- MAGAZINE.ES
  • 4. Android • DESARROLLO Por último, vamos a añadir el código que aparece en el listado 3 al archivo AndroidBrowser.java. Podemos ejecu- tarlo igual que lo hicimos antes. Lo que realmente ocurre en este código, es que cuando pulsamos el botón “Ir…”, Android trata de lanzar un Intent que ya tiene predefinido (ACTION_VIEW), y al que se le pasa la URL (como objeto de tipo Uri). Este Intent ya sabe que para ver este tipo de contenidos necesita lanzar el navega- dor del teléfono. En [1] podemos acceder a tutoriales y a toda la documentación necesaria para continuar profundizando. Android Market Ya llevas algún tiempo programando para Android y has creado tu killer application. ¿Y ahora qué? ¿Cómo la distribuyo? Google ha pensado en todo y ha creado Android Market, un sis- Figura 4: Estructura de directorios de la aplicación. tema de distribución de aplicaciones, tanto gratuitas como de pago. Gracias a Por otra parte, a diferencia de App inunde de aplicaciones mal hechas o Market cualquiera puede acceder y des- Store para IPhone, no existen requisitos que directamente no funcionen, pero cargar nuestra aplicación. Para poder para subir una aplicación, es decir, que Market ofrece un sistema de puntuacio- ofrecerla sólo hay que subscribirse apenas hay filtros, con lo que, en prin- nes por votación que pretende corregir como desarrollador, lo que tiene un cipio, nadie va a rechazar nuestro pro- este problema y facilitarnos el acceso a coste de 25$ (un solo pago). grama. A cambio, es probable que se aplicaciones de calidad. Listado 3: AndroidBrowser.java. Conclusiones Cualquiera que haya programado para 01 package ate); otras plataformas, como Symbian, sabe es.linuxmagazine.ejemplo; 20 lo complicado que es todo el proceso. En 02 setContentView(R.layout.main); especial, Symbian, además de tener un 03 import android.app.Activity; 21 modelo de aplicación bastante complejo, 04 import android.content.Intent; 22 url = (EditText) la propia Nokia pone obstáculos a los 05 import findViewById(R.id.url_text); desarrolladores de software libre con su android.view.View.OnClickListe 23 botonIr = (Button) modelo de firmado y restricciones de ner; findViewById(R.id.nav_button); capacidades. 06 import android.net.Uri; 24 En Android todo es muy diferente. El 07 import android.os.Bundle; 25 propio sistema es libre, y tanto el entorno 08 import android.view.View; botonIr.setOnClickListener(new de desarrollo como el framework son 09 import android.widget.Button; OnClickListener() { extremadamente simples en cuanto se 10 import 26 public void onClick(View coge algo de práctica. Para el desarrolla- android.widget.EditText; view) { dor, Android ofrece sencillez y acceso a 11 27 Uri uri = todas las capacidades del terminal. I 12 public class AndroidBrowser Uri.parse(url.getText().toStri extends Activity { ng()); 13 28 Intent browseIntent = RECURSOS 14 private EditText url; new Intent(Intent.ACTION_VIEW, [1] Página desarrolladores Android: 15 private Button botonIr; uri); http://developer.android.com/ 16 29 [2] Página del proyecto Eclipse: http:// 17 @Override startActivity(browseIntent); www.eclipse.org/ 18 public void onCreate(Bundle 30 } [3] Página de Android Market: http:// savedInstanceState) { 31 }); www.android.com/market/ 19 32 } [4] Página principal de Android: http:// super.onCreate(savedInstanceSt 33 } www.android.com/ WWW.LINUX- MAGAZINE.ES Número 49 53