jueves, 29 de septiembre de 2011

Prácticas Android: arrastrar para desplazarse entre distintas pantallas


En esta pequeña aplicación de demostración podrás ver el uso del componente ViewFlipper que te permitirá deslizarte entre distintas pantallas. Concretamente, dispones de tres imágenes con sus respectivos títulos y podrás pasarlas arrastrando el dedo (ratón en el simulador) sobre la pantalla a la derecha o a la izquierda, o bien utilizando los botones de la parte superior. Puedes descargar el proyecto NetBeans aquí.

Prácticas Android: integrando un explorador de archivos en nuestras aplicaciones





A la hora de cargar archivos, seleccionar carpetas o indicar el destino de los ficheros que guarde nuestra aplicación resulta muy práctico contar con un gestor de archivos visual que nos permita realizar estas tareas a golpe de pulsación, sin tener que teclear largas cadenas de texto. Uno de estos gestores de libre distribución que, además, podemos integrar en nuestras aplicaciones es OI File Manager (véase http://www.openintents.org/en/node/159) Para ello, primero hay que instalar el gestor de archivos. Puedes descargar el archivo apk desde la web antes indicada o cogerlo dentro de la carpeta del proyecto de esta práctica. Para instalarlo en el emulador recuerda que debes situarte en la linea de comandos en la carpeta de herramientas de la plataforma (normalmente, c:\Archivos de Programa\Android\android-sdk\platform-tools). Después teclea :

adb install [ruta del apk]\FileManager-1.1.6.apk

donde [ruta del apk] se refiere a la carpeta donde has guardado el archivo de instalación dentro de tu equipo. Si no se producen errores durante la instalación en el menú de apps debe aparecerte un icono como el seleccionado en la figura:


Una vez instalado el gestor y aceptada la licencia de distribución, ya puedes ejecutar este proyecto de NetBeans de prueba. No es más que una app sin funcionalidad que lo único que pretende es mostrar cómo se produce la interacción con el gestor desde una actividad cualquiera. Consta de un cuadro de texto, donde se escribirá la ruta de la carpeta o archivo una vez haya sido seleccionada, y cuatro botones que te permitirán abrir el gestor para lectura/escritura de archivos y selección de carpetas. No obstante, insistimos, los botones no harán ninguna de estas tareas, simplemente escribirán la ruta de la carpeta o archivo seleccionado en el cuadro de texto. Queda como tarea opcional del alumno completar la funcionalidad de los botones o adaptar el proyecto a aplicaciones específicas.


miércoles, 28 de septiembre de 2011

Java. Splash-Screen de arranque de programa con transparencias.

Descargar el código y el ejecutable jar aquí


En este proyecto NetBeans dispones del código necesario para crear en Java una splash-screen de arranque de aplicación utilizando una imagen PNG con transparencia, al modo de los programas de Adobe, como Photoshop o Illustrator. El proceso consiste, grosso modo, en superponer en un buffer de memoria la imagen PNG que queremos mostrar sobre la captura de pantalla de la zona rectangular actual donde finalmente se desplagará, dando la sensación de superposición real. No obstante, este planteamiento tiene una limitación, a saber, que si movemos alguna ventana o elemento bajo la imagen PNG mientras arranca la aplicación se pondrá en evidencia el "truco" visual al aparecer el recorte rectangular desencajado con respecto al fondo original. No obstante, es una situación poco probable debido a que la aparición de la splash screen sólo suele durar unos pocos segundos, antes de que desaparezca definitivamente para dar paso a la ventana principal de la aplicación, tiempo en el que el usuario suele quedar a la espera sin realizar otras tareas.


martes, 27 de septiembre de 2011

Prácticas Android: enviando y recibiendo mensajes SMS


  • Descarga el proyecto NetBeans de ejemplo aquí
  • Para poder probar la aplicación deberás instalarla en dos terminales distintos, uno para enviar y otro para recibir. Como número de teléfono de cada terminal podrás usar el número de puerto en el que corre el emulador. Podrás verlo en la barra de título de la ventana del emulador.

AndEngine: una librería libre para desarrollar juegos Android


Prácticas Android: enviando un email a una lista de destinatarios

Para poder enviar emails primero debemos configurar alguna aplicación de correo a la que enviar nuestra petición. Para hacer pruebas con el emulador lo más sencillo es configurar la app "Email" con una cuenta de Gmail. Para ello, accedemos a ella desde el menú principal:


Se nos pedirá que introduzcamos el identificador de la cuenta y nuestra contraseña:



Pulsamos el botón Next para avanzar. El proceso de verificación de la cuenta puede tardar algún tiempo:


A continuación podemos darle opcionalmente un nombre a nuestra configuración de cuenta y proporcionar un nombre de usuario que aparecerá en los mensajes salientes:



Después de pulsar el botón Done y si todo ha ido bien, el proceso termina mostrándonos una lista con los correos de nuestra bandeja de entrada:


Una vez configurado el correo, crea una app Android en NetBeans añadiendo el siguiente código al método onCreate().

String listaDestinatarios[] = {"correo1@hotmail.es", "correo2@gmail.com"};

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, listaDestinatarios);
intent.putExtra(Intent.EXTRA_SUBJECT, "Asunto");
intent.putExtra(Intent.EXTRA_TEXT, "Contenido");
startActivity(Intent.createChooser(intent, "Email"));

Al arrancar la aplicación ésta invocará a "Email" pasándole la lista de correos a los que va destinado el correo, con el asunto del mismo y el contenido. Después el usuario tendrá que pulsar el botón "Send" para confirmar el envío. Antes podrá llevar a cabo las ediciones que considere oportunas.

jueves, 22 de septiembre de 2011

Prácticas Android: trabajando con bases de datos SQLite


Descarga el proyecto NetBeans de la base de datos de trabajadores aquí


Intenta subsanar los siguientes errores:

  • La aplicación permite agregar un empleado sin nombre, especificando sólo la edad.
  • El programa lanza un críptico mensaje de error cuando se introduce texto en el cuadro de la edad y se intenta insertar el empleado.
  • Cuando eliminamos un empleado y volvemos a la pestaña para añadir nuevos empleados, no se actualiza el contador de empleados totales registrados en la base de datos.
  • Tras ingresar un nuevo empleado, los cuadros de texto con la información del mismo no se limpian.
  • No se impide la introducción de registros duplicados.

Otras tareas propuestas:

  • Ya que los departamentos a los que pueden pertenecer los empleados se introducen desde el código, estos son fijos, no hay posibilidad de cambio. Habilita un cuadro de texto para poder añadir nuevos departamentos.
  • Crea una nueva tabla donde vayan a parar los empleados que se hayan eliminado, a manera de archivo histórico y habilita algún componente que permita ver el contenido de dicho histórico.

miércoles, 21 de septiembre de 2011

Prácticas Android: servicios y reproducción de sonido


Un servicio es una aplicación que corre de forma automática, sin interacción directa con el usuario (aunque pueden ser interactuados por mediación de una actividad, como en este ejemplo). Desarrollan tareas importantes, para el resto de las aplicaciones o para el sistema, ejecutándose en segundo plano. Tienen un ciclo de vida diferente a las actividades, por lo que los métodos que hay que sobrecargar también son diferentes. En este proyecto NetBeans de ejemplo dispones de una interfaz gráfica con dos botones para iniciar y detener un servicio que permite reproducir música de fondo. Además, aparecerán advertencias indicándote por qué fase del ciclo de vida del servicio se está pasando en cada momento. Trata de contestar a los siguientes puntos:

  • ¿Cuál es la clase base de la que han de derivar todos los servicios?
  • ¿Cuál es la clase que permite la reproducción de sonidos?
  • ¿Para qué sirve el método onBind() del servicio? ¿Por qué aquí devuelve null en todo caso?
  • ¿Se ha de especificar el servicio de alguna manera en el AndroidManifest.xml?
  • ¿Qué se invoca antes, a onCreate() o a onStart()?
  • ¿Qué clase de objetos permiten comunicar la actividad con el servicio para controlarlo a través de los botones?

Prácticas Android: ejemplo de cronómetro



Descarga el proyecto NetBeans aquí.

martes, 20 de septiembre de 2011

Prácticas Android: cambiando la altura de los tabs

Descarga el siguiente proyecto de NetBeans y modifica las líneas de código que se te indican para pasar de una altura de los tabs de 65 puntos (derecha) a 40 puntos (izquierda):

  • En main.xml localiza la etiqueta

    y cambia android:layout_height="65px" por android:layout_height="40px"

  • En MainActivity.java localiza las instrucciones tipo

    tabs.getTabWidget().getChildAt(<índice>).getLayoutParams().height = 65;

    y sustitúyelas por

    tabs.getTabWidget().getChildAt(<índice>).getLayoutParams().height = 40;

Prácticas Android: experimentando con secuencias animadas de imágenes


Descarga el siguiente proyecto de NetBeans que muestra un caballo en movimiento mediante el pase en sequencia de 8 fotogramas. Trata de contestar a las siguientes cuestiones:
  • ¿Qué clase es imprescindible para poder animar una sequencia de imágenes? ¿En qué paquete se encuentra?
  • ¿Cómo podrías variar la velocidad de la animación?
  • ¿Qué habría que hacer para incluir algún fotograma más?

lunes, 19 de septiembre de 2011

Java 2D

[Hacer clic en la portada del tutorial para descargarlo]

Java2D es una de las APIs (Application Program Interface) más ricas que proporciona la edición estándar de Java (J2SE). El presente texto aborda las tres áreas principales que integran Java2D: figuras geométricas, imágenes y dibujo de texto. Asimismo se introducen en profundidad los conceptos generales que pueden aplicarse a todos ellos, como pueden ser el tratamiento del color y de la transparencia, la gestión de transformaciones geométricas o la manipulación de ficheros JPEG.

A medida que se van introduciendo nuevas clases de la API, éstas se van hilvanando entre sí para proporcionar al programador un mayor control sobre el aspecto de los lienzos que quiera dibujar. De esta forma se estudia, entre otras muchas cosas, el dibujo de figuras sobre fotografías digitales, la sobreimpresión de texto sobre imágenes e incluso la utilización del contorno de un texto en negrita como elemento a través del que ver una imagen de fondo.

Cada uno de los conceptos necesarios se introduce desde cero, aunque se suponen conocimientos del lenguaje Java, y se proporcionan numerosos ejemplos completos que pueden ser puestos en práctica sin más modificación que la de elegir la foto preferida que se desea transformar, o modificar la cadena de texto a visualizar. Cada ejemplo se acompaña de una adecuada explicación sobre las líneas de código vitales que producen el efecto que se desea conseguir en cada caso, por lo que al lector le resultará muy cómodo realizar modificaciones personalizadas y obtener sus propios resultados. La inclusión de las imágenes que resultan de cada uno de los ejemplos comentados también ayuda enormemente a la comprensión del código y facilita la asimilación de conceptos.

jueves, 15 de septiembre de 2011

Prácticas Android: Cambiar/Restaurar el fondo de pantalla.


Descarga el siguiente proyecto de NetBeans que permite alternar el fondo de pantalla entre la imagen original y la fotografía de un tigre. Explora el código y trata de resolver estas cuestiones:
  • Cambiar el fondo de pantalla supone disponer de algún permiso especial. ¿Cómo se llama dicho permiso? ¿En qué archivo ha de ser especificado?
  • Intenta sustituir la imagen del tigre por otra imagen personalizada.
  • ¿Serías capaz de crear una lista de imágenes para poder elegir entre varias?

martes, 13 de septiembre de 2011

Android: ejemplo de Cajón Deslizante (SlidingDrawer)



  • Archivo /res/layout/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"

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<SlidingDrawer

android:id="@+id/drawer"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:handle="@+id/handle"

android:content="@+id/content">

<ImageView

android:id="@id/handle"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:src="@drawable/icon"/>

<LinearLayout

android:id="@id/content"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<Button

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:text="Ejemplo de Sliding Drawer"/>

</LinearLayout>



</SlidingDrawer>

</LinearLayout>


  • Archivo /res/values/strings.xml:


<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">Demo Cajón Deslizante</string>

<string name="hello">Hola a todos</string>

</resources>

Prácticas Android: Campos de texto con función de autocompletado dinámica




Descarga el siguiente proyecto de NetBeans e indaga sobre la implementación de este campo de texto dinámico para introducir nombres de países. A medida que se escribe irán apareciendo nombres cuya parte inicial coincida con los caracteres introducidos. Si no se selecciona ningún país de la lista desplegable y se introduce uno nuevo, al hacer clic en el botón "Agregar País", dicho país se añadirá a la lista ya existente de manera que también podrá formar parte de despliegues posteriores. Esto es, el programa tiene una lista estática inicial formada por los países "Argentina", "Albania", "Alemania", "Argelia", "Israel", "Bolivia", "México", "Brasil", "Holanda", "Italia", "España", "Etiopía" pero podrás aumentarla con los países que vayas introduciendo en tiempo de ejecución.

Trata de hallar respuesta a las siguientes cuestiones:
  • El TextView auxiliar con id "txt_texto" está declarado convenientemente pero su atributo de visibilidad ha sido marcado como "gone" y no se despliega en pantalla. ¿Qué diferencia aprecias al cambiar "gone" por "invisible"? ¿Son lo mismo? Estudia el comportamiento de la aplicación también cuando se marca como "visible"
  • ¿Cómo se consigue que no se almacene el mismo país más de una vez? Si los textos introducidos son exactamente iguales no aparecerán repetidos en la lista desplegable; pero si hay diferencias entre mayúsculas y minúsculas sí se repiten... ¿Se te ocurre alguna manera de evitar esta situación?
  • Cambia el valor de la propiedad android:completionThreshold para descubrir cuál es su cometido.

Prácticas Android: explorando los ficheros de texto

Ejemplo de escritura de archivo de texto:


En este ejemplo Environment.getExternalStorageDirectory() devolverá la ruta de la tarjeta SD. Así que has de emplear en el emulador un terminal que le dé soporte. La configuración mostrada permite añadir datos al fichero sin machacarlo. Si lo que quieres es sobreescribirlo cada vez, pon la bandera "sobreescribir" a true. Aquí, concretamente, estamos almacenando en el fichero "historial.txt" los campos de texto "txtEuros" y "txtDescripcion" con un salto de línea a continuación.

Ejemplo de lectura de fichero de texto:

En este ejemplo, "nombre" representa el nombre del fichero de texto que queremos leer. Por otra parte, "txtListado" es un TextView donde se muestran todas la líneas de dicho fichero. El método Log.e() nos permite escribir trazas de errores en el log del sistema Android. Para visualizar dicho log debes ejecutar la instrucción "adb logcat" en la línea de comandos. Recuerda que la aplicación "adb" está por defecto en la subcarpeta platform-tools del SDK. Para salir del log simplemente pulsa la combinación CTRL+C. Si lo que deseas es limpiar completamente el log ejecuta "adb logcat -c"


A partir de estos dos ejemplos crea una sencilla aplicación que permita ir añadiendo a un fichero de texto la temperatura en grados centígrados de una serie de ciudades. Habilita un botón para visualizar el listado completo de pares Ciudad - Temperatura que se han introducido hasta el momento.

Prácticas Android: crear aplicaciones con más de una pantalla




Sigue el siguiente ejemplo para construir una sencilla aplicación que en la pantalla de arranque nos pida el nombre y al pulsar el botón etiquitado como "Hola" nos lleve a otra pantalla diferente donde se salude al usuario empleando el nombre que ha introducido. Presta especial atención a los aspectos clave como:
  • La creación de una clase por cada pantalla extendiendo siempre la clase Activity
  • Los archivos descriptivos de las distintas interfaces en la subcarpeta /res/layout. ¿Cómo asocia el compilador cada archivo XML con la subclase de Activity (pantalla) que le corresponde?
  • La inclusión de las actividades en el descriptor AndroidManifest.xml
  • La comunicación entre pantallas mediante objetos Intent y el paso de pares (clave, valor) mediante Bundle.

jueves, 8 de septiembre de 2011

miércoles, 7 de septiembre de 2011

Prácticas Android: experimentando con Google Maps




Descarga este proyecto de NetBeans 7.0.1 en el que encontrarás una aplicación básica para el uso de Google Maps sobre Android. Para que funcione deberás contar con un terminal virtual con la siguiente configuración:

Asimismo, para poder usar la API de Google Maps es necesaria una clave personalizada que se incluirá en la propiedad "android:apiKey" de la etiqueta correspondiente al MapView en el archivo main.xml dentro de la ruta /res/layout. Sigue el siguiente tutorial o este, centrándote en las instrucciones correspondientes a Windows, para generar dicha clave.

Una vez cubiertos estos pormenores podrás ejecutar la aplicación desde el IDE de NetBeans. Simplemente, carga a pantalla completa un mapa donde se marca la ubicación del centro donde estamos impartiendo el curso, tal y como se muestra en la primera viñeta.

No obstante, hay comentadas algunas líneas de código que ilustran otras características adicionales de los mapas. Por ejemplo, en el método sobrecargado onCreate() de la clase AndroidMapas hay una línea comentada para activar la vista de satélite. Quita el comentario y vuelve a ejecutar el proyecto para comprobar que efectivamente funciona. En ese mismo método, al final, hay una llamada comentada al método privado buscarUbicacion() que es capaz de mostrarnos el mapa de alguna ubicación dando una descripción textual de la misma. Esto es, la función contraria a la primera: en vez de buscar un punto a partir de sus coordenadas, buscamos una coordenada a partir de la descripción del punto.

Si quieres una explicación más detallada de la funcionalidad de las distintas líneas de código lee atentamente estos tres artículos relacionados:


Prueba a cambiar las coordenadas de Anexo 4 por las de otro lugar. Para averiguar las coordenadas de algún punto terrestre, búscalo en Google Maps como lo harías normalmente, indicando alguna cadena descriptiva; por ejemplo, "París, Francia". A continuación centra el mapa en ese punto (botón derecho sobre el punto > Centrar el mapa aquí). Luego escribe el siguiente código en la barra de direcciones del navegador:

javascript:void(prompt('',gApplication.getMap().getCenter()));

Pulsa intro y te aparecerá una ventana con el par de valores (latitud, longitud). Es preferible que todo este proceso lo hagas en Internet Explorer; puede que no funcione adecuadamente en otros exploradores.

Una vez que dispongas de las coordenadas localiza el lugar del código donde se emplean así como dónde se le da nombre al punto referenciado para cambiar el texto de la etiqueta.

Prueba, también a hacer búsquedas descriptivas con distintas cadenas de texto. Lo ideal sería que ampliaras la interfaz mediante un cuadro de texto que me permitiese introducir la cadena de búsqueda y un botón para activarla.

¿Sabrías decir en qué parte del código se elimina la barra de título y los iconos de batería y cobertura para aprovechar todo el espacio de la pantalla para el mapa?

¿Serías capaz de cambiar el marcador típico de Google Maps por el icono de una chincheta o el logotipo de Android?

Averigua cómo cambiar el círculo azul del marcador por un cuadrado rojo.

Viñeta. Mundo inalámbrico


Frankly, me muero de miedo sólo de pensar en la posibilidad de un futuro completamente sin hilos.


martes, 6 de septiembre de 2011

Ejercicio. Desarrollar una aplicación Android básica.

A partir del ejemplo desarrollado en clase, empleando NetBeans y DroidDraw, crea una aplicación Android que calcule el índice de masa corporal. La aplicación solicitará la edad, el peso en kilogramos y la altura en centímetros para efectuar dicho cálculo realizando las siguientes validaciones (opcional):
  • La edad debe ser superior o igual a 18 años, pues se considera que el cálculo no es suficientemente preciso aplicado a menores de edad.
  • La altura debe ser superior o igual a 150 cms, pues el cálculo se desvirtúa para personas que padezcan algún tipo de problema de crecimiento.
  • El peso no puede ser negativo o cero.
  • Todos los campos son obligatorios.

El resultado que debe mostrarse en la salida, en función del índice calculado, será:

  • Por debajo de los 20 Kg/m2: "Anorexia nerviosa"
  • Entre 20 y 25: "Peso ideal"
  • Entre 25 y 30: "Sobrepeso o exceso de peso"
  • Entre 30 y 35: "Obesidad leve"
  • Entre 35 y 40: "Obesidad moderada"
  • Por encima de 40: "Obesidad mórbida"

Para calcular el IMC emplea la siguiente fórmula:

lunes, 5 de septiembre de 2011

Diseñador automático de aplicaciones Android



Herramienta para diseñar interfaces Android de forma visual




Haz clic aquí para descargarlo


Archivos principales de un proyecto Android en NetBeans

Cuando creamos un nuevo proyecto de Android nos genera siempre una estructura de archivos como esta:



MainActivity.java: es la actividad principal de nuestra aplicación; en otras palabras, es la clase que se inicia al ejecutarse nuestra app. Justo cuando acabamos de crear nuestro proyecto la clase sólo contiene esto:


R.java: esta clase sirve para encontrar los recursos de datos que se generen en la aplicación. Esta clase nunca debe modificarse manualmente ya que se genera automáticamente cada vez que compilamos o en el momento que ingresamos un nuevo recurso en algún archivo; inicialmente contiene esto:



main.xml: este archivo nos sirve para declarar o posicionar los objetos como botones, vistas, textos, inputs etc. Se basa en tags o etiquetas al estilo de HTML; inicialmente sólo tiene un objeto "TextView" con la leyenda "Hello Android from NetBeans". Básicamente este archivo es el que muestra todo lo que vemos en pantalla. Se pueden tener varios archivos de este tipo en la carpeta layout si se quiere tener más de una vista diferente.


Strings.xml: este archivo se utiliza para crear recursos estáticos de variables u otras cosas, como por ejemplo el nombre de la app o valores iniciales para algún input, en este caso solo tengo una string con el nombre de mi app.


AndroidManifest.xml: el archivo donde se indica qué actividad será la principal, cuales serán los intents, el nombre de versión, el nombre de aplicación y el icono que usará su aplicación, entre otros aspectos descriptivos de la aplicación.


Estos serían, grosso modo, los archivos principales de un proyecto en Android.

Infografía sobre la evolución de Android

Operaciones con el emulador de Android desde la línea de comandos

[Haz clic en la imagen para acceder al artículo]


Instalación y puesta a punto de Android sobre NetBeans 7

1. Suponiendo que ya tienes instalado NetBeans 7.0.1 y el JDK SE 7 de Oracle descarga el SDK de Android http://developer.android.com/sdk/index.html más apropiado para la plataforma que estes utilizando.

2. En un entorno Windows típico descarga el archivo de instalación installer_r12-windows.exe

3. Ejecútalo. Si por casualidad no detecta la instalación del JDK de Java SE a pesar de haberlo instalado correctamente, prueba a pulsar BACK y después NEXT para forzar el refresco de la pantalla y poder así continuar el proceso.

4. Descargamos los entornos necesario en Aviable Packages

5. Empieza la descarga después de aceptar todo (Acept all) y pulsar Install. Le llevará varios minutos. No desesperes. Si al final pide reiniciar el servicio pulsa Yes.

6. Ahora vamos a coger el IDE y configurarlo para que lance nuestra aplicación Android. Para ello abrimos NetBeans y nos vamos a Tools>Plugins>Settings>Add ponemos un nombre (por ej. Android) y en la URL ponemos http://kenai.com/projects/nbandroid/downloads/download/updatecenter/updates.xml

7. En Available Plugins ingresamos "android" en el campo de texto de búsqueda o lo buscamos directamente en la lista. Marca la casilla de verificación del plugin Android, una vez localizado, y luego haz clic en el botón de la parte inferior Install.

8. Presiona Next en la pantalla que te aparecerá, acepta la licencia, presiona continue e ignora los avisos que te muestre.

9. En el panel de Services podemos observar ya el Servicio de Android con su icono verde característico.


10.- Debes indicar a NetBeans dónde encontrar el SDK de Android. Hay que dirigirse al menú Tools>Options. En el apartado Miscellaneous busca la pestaña Android y en SDK location indica la ruta del mismo que por defecto es c:\Archiv~1\Android\android-sdk. Es importantísimo que utilices el formato de ocho caracteres Archiv~1 típico de MS-DOS para referirte a Archivos de Programa pues Android no funciona cuando se indican rutas que incluyan espacios.

11. Para crear un emulador de dispositivo Android nos dirigimos al menú Tools>Android SDK and AVD manager. En la pestaña Virtual Devices selecciona New. Al crear este dispositivo virtual vamos a darle un nombre como AVD01 y 1Gb de moria para la SD. En target, utilizaremos en principio la API Level 10. En Built-in selecciona HVGA. Más tarde añadiremos el hardware necesario pero de momento quédate con el hardware listado por defecto.

12. Vamos a crear un nuevo proyecto de tipo Android. File>New Project y seleccionamos Android; elegimos un nombre y Finish. (La ruta del proyecto no debe contener espacios; así que cuidado con carpetas como Documents and Settings que puedan dar problemas. En cuanto al nombre del paquete debe tener al menos dos partes como "es.anexo4" )

13. Vamos a crear una sencilla aplicación de Hola Mundo. Para ello creamos un objeto TextView (campo de texto) que referenciaremos para mostrar en él el mensaje "Hello, Android " en el emulador de Android. No olvides añadir una librería: import android.widget.TextView;

El codigo nos quedaría:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(“Hello, Android”);
setContentView(tv);
}
}

14. Al Correr el proyecto (como si fuera cualquier aplicación) obtendremos la siguiente salida:

15. Debemos esperar un tiempo hasta que se cargue el emulador y si aparece algún error vuelve a ejecutar el proyecto y obtendrás el "Hello, Android". No es necesario que abras y cierres el emulador cada vez que ejecutes el proyecto. Lo ideal es mantener siempre el emulador abierto y aprovecharlo para múltiples ejecuciones, especialmente si se tiene en cuenta que tarda bastante en cargarse.