Noticias:

Este es un mensaje de Fred para Maria. Maria, cásate conmigo. Te juro que internet no volverá a interponerse entre nosotros.

Menú Principal

El rinconcito de Android.

Iniciado por Bill, 14 de Julio de 2008, 13:11

0 Miembros y 1 Visitante están viendo este tema.

Bill

- Intencionadamente libre para índice -

Bill

#1
1. Introducción

En la batalla por el desarrollo de plataformas de telefonía móvil, las nuevas tecnologías y estrategias avanzan el ritmo de una feroz competencia. Es por ello que a día de hoy hay móviles bastante más potentes que computadoras de no hace tanto tiempo, e incluso con mayor tecnología de dispositivos. En esta batalla surge un nuevo competidor en escena, y además un competidor famoso por llevarse muchos patos al agua: Google.
Google entra en el mercado con una propusta llamada Android, una plataforma para móviles que incluye diversas aplicaciones, sistema operativo, APIs... El sistema operativo es descendiente de un kernel Linux 2.6, y sobre él se incluyen diversas librerías fundamentales, como librerías multimedia basadas en OpenCore PacketVideo, gestores 2D y 3D, librerías OpenGL y SGL, librerías de navegación web, SQLLite, fuentes FreeType o incluso unas libc derivadas del BSD y adaptada para dispositivos embebidos basados en Linux.

Los primeros móviles con Android no saldrán al mercado hasta finales del 2008 o principios del 2009, y el procesador mínimo debe ir a 200Mhz. Ya hay muchas empresas metidas en el ajo y compitiendo, y hay algunos prototipos, aunque no accesibles a usuarios de la calle. Lo que sí existe es el emulador del móvil y las SDK para desarrollo, y retos a las comunidades para hacer desarrollo en Android, incluso con premios jugosos en metálico.

Algunas de las propuestas de aplicaciones que han presentado los desarrolladores son muy curiosas, como por ejemplo el enkin, un sistema de navegación con marcaje basado en google maps, pero que además aprovecha las características de GPS, acelerómetro y cámara del móvil para incluir las marcas en la imagen real.

http://www.enkin.net/

Incluso hay un juego FPS (First Person Shooter) que se aprovecha del GPS y el acelerómetro para que el juego sea en vivo y el objetivo sea "disparar" a los contrincantes empleando la cámara del móvil.

http://www.youtube.com/watch?v=Rq53q1Fa0aQ


El desarrollo se puede hacer en Java perfectamente, un Java más completo que el JME, pero la máquina virtual que se emplea en los móviles no es la Java Virtual Machine, sino que se llama Dalvik y utiliza un bytecode diferente, de esta forma se libran de los problemas de licencias con Sun. Y programar es muy fácil, como podemos ver en este vídeo:

http://www.youtube.com/watch?v=I6ObTqIiYfE

La arquitectura del Android sería la siguiente:


Bill

#2
2. Instalando el entorno de desarrollo.

2.1. Instalando el JDK de Java.

Lo primero de todo es instalar el Java SE Development Kit (JDK), el cual ya incluye el Runtime Enviroment (JRE). Lo podéis bajar del siguiente enlace:

http://java.sun.com/javase/downloads/index.jsp

Los requisitos son que al menos sea la versión 5 o 6, personalmente he instalado la Java SE 6 Update 10 Beta, que a pesar de ser Beta va un paso por delante del Update 7, y de paso vale para probar.

2.2. Instalando el SDK de Android.

Lo podéis bajar del siguiente enlace.

http://code.google.com/android/download_list.html

Es un zip, sencillamente lo tenéis que descomprimir en el directorio que os apetezca. En mi caso prefiero que el nombre del directorio sea corto, pero ordenado, así que me decanté por d:\raiz\android\, y dentro de él la estructura que debe tener. Por defecto el zip viene con un directorio con un nombre largo incluyendo la versión, yo lo recorté a android. De esta forma poseo los directorios d:\raiz\android\docs, d:\raiz\android\samples y d:\raiz\android\tools.

2.3. Instalar el Eclipse

Es hora de instalar el Eclipse, que para algo será nuestro entorno de desarrollo. Se puede bajar del enlace:

http://www.eclipse.org/downloads/

Os recomiendo bajaros la versión Java EE Developers, pues a pesar de ser más pesada incluye el WTP que es necesario para varias funcionalidades del plugin de android. Si no os decidís por esta y la versión que instaláis no incluye el WTP, podéis bajarlo de
http://www.eclipse.org/webtools/

De nuevo es un zip, así que lo descomprimís en el directorio que deseéis, en mi caso d:\raiz\eclipse. Arrancáis por primera vez el Eclipse y os solicita un nombre de directorio para hacer de workspace. Seleccionáis uno, personalmente me gusta tenerlo ordenadito y dentro del propio eclipse, y si queréis marcar la opción de usar por defecto y no volver a preguntar, de esta forma no saldrá esta ventana cada vez que arranquéis eclipse.



2.4. Instalar el plugin Android Development Tools (ADT)

Una vez instalado el Eclipse hay que instalar el plugin de desarrollo de Android, de esta forma el Eclipse se comunica con el SDK de Android y además nos incluye los paquetes a utilizar y el tipo de proyecto.
Dentro del Eclipse pincháis en Help -> Software Updates



Seleccionáis la pestaña Available Software y pincháis en el botón Add Site.



Introducís la siguiente URL y le dáis a OK.

https://dl-ssl.google.com/android/eclipse/



De vuelta al interfaz de Available Software desplegáis la entrada que os ha aparecido (tiene la dirección que habéis puesto), marcáis todo para instalar y pincháis el botón Install, y luego Next, y ahí aceptáis los términos de licencia y pincháis el botón Finish. Os pedirá reiniciar, aceptad, y no os preocupéis que se refiere a reiniciar el Eclipse y no el sistema operativo.

De nuevo en Eclipse pincháis en Window -> Preferences y desplegáis la opción de Android. Os dará unos errores por no encontrar el SDK, aceptadlos y continuad. En la cajita que pone SDK Location seleccionáis la ruta hacia vuestro SDK de Android y pincháis en Apply y Ok.




2.5. Instalar el Plugin, versión alternativa si no funciona lo anterior.

A algunas personas el método del punto 2.4 no les funciona correctamente, y les dice que no encuentra el repositorio. Si este es vuestro caso, podéis ir a la siguiente URL y descargarlo manualmente:

http://code.google.com/android/adt_download.html

Dentro de este zip vienen dos versiones, una para MAC OS y otra para los demás. Descomprimid, y de la parte que sea la vuestra copiáis el contenido de features al directorio features del eclipse, y el contenido de plugins al directorio plugins del eclipse.


Bill

3. Hola Android

Llega el momento tan esperado, el universal programa "Hola mundo" que siempre se hace al empezar. En el Eclipse seleccionáis el menú File -> New -> Other



Seleccionáis Android Project y dáis al botón Next



Cubrís los datos.
Project Name: es el nombre del proyecto, y nombre que se dará al directorio dentro del WorkSpace
Package Name: es el nombre del paquete en el cual se ubicará el proyecto, para la hora de hacer los imports. En mi caso he puesto com.android.hola por poner algo.
Activity Name: Es el nombre de la clase principal que se creará.
Application Name: El título de la aplicación, que aparecerá como caption al ejecutarse.



Ahora os aparecerá el proyecto creado, solamente tenéis que desplegarlo como muestro en la imagen y hacer doble click en el HolaAndroid.java.



Vamos a hacer que salga un texto que ponga "Hola, este es mi primer programa en Android". Para ello necesitaremos instanciar la clase TextView del android.widget, con lo cual la añadimos a los imports. Creamos una instancia, y le hacemos un setText con nuestro texto, y finalmente hacemos que la viste de contexto apunte a este texto. El código quedaría así:

package com.android.hola;

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

public class HolaAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        TextView texto = new TextView(this);
        texto.setText("Hola, este es mi primer programa en Android");
        setContentView(texto);
    }
}




Ahora solo queda guardar (click en el disquetito azul o Ctrl+S) y ejecutar. Para ejecutar hacemos click con el botón secundario del ratón sobre nuestro proyecto y seleccionamos Run As -> Android Application



Y por fin veremos nuestro resultado en el emulador:



Thylzos

Yo me estoy leyendo la documentación también, así que cuando pueda y si me lo permites, también escribiré algo.

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Bill

Cita de: Thylzos en 14 de Julio de 2008, 19:43
Yo me estoy leyendo la documentación también, así que cuando pueda y si me lo permites, también escribiré algo.

Todo tuyo ;)
Pensaba continuar mañana, he estado jugueteando un poco con el GPS, y cómo meter señal.

Thylzos

#6
Pues venga, me aburro y había prometido poner algo.

4- Creando menús

Pues bien, vamos a hacer un programa que tenga menús que el usuario pueda elegir al presionar sobre ellos. Además, cuando lo haga saldrá un mensajito avisándole de que lo ha hecho (por si no se enteró, el pobre).

Como de costumbre, abrimos un nuevo proyecto. Siguiendo los pasos que describió Peluche: File->New->Other->Android->Android Project. Rellenamos con los siguientes datos y damos en Finalizar:

CitarProject Name: NuestrosMenus
Package Name: com.NuestrosMenus
Activity Name: NuestrosMenus
Application Name: Nuestros Menus

Una vez hecho esto, abrimos el archivo src/com.NuestrosMenus/NuestrosMenus.java. En él encontraremos otra vez:

package com.NuestrosMenus;

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

public class menussss extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
    }
}


Bien, para manipular menús utilizaremos los métodos: "onCreateOptionsMenu" y "onOptionsItemSelected", el primero para definir las opciones del menú y el segundo para agregar acciones que se realizarán al presionar sobre dichas opciones. Así que a nuestro código agregamos:

(...)
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
return result;
    }
   
    @Override
    public boolean onOptionsItemSelected(Menu.Item item){
        return false;
    }
}


Pues con esto sólo no hacemos nada de nada. Para agregar un ítem al menú del programa usaremos la función "add" de la interfaz "Menu" a la que pertenece la variable "menu" que pasamos como parámetro en "public boolean onCreateOptionsMenu(Menu menu)". Además, le daremos tres parámetros: uno para especificar el número del grupo de opciones al que pertenece el ítem del menú, otro para expresar la ID del ítem (con la que podremos manipular los eventos) y otro con el título del ítem. Así, nuestro "onCreateOptionsMenu" podría quedar como esto:

public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    menu.add (0, 0, "Archivo");
    menu.add (0, 1, "Hola");
    menu.add (0, 2, "Otra opción inútil");
    menu.add (1, 3, "Otro grupo");
return result;
}


Ahora ya tenemos los ítems, falta asignarle acciones que se cumplan al seleccionarlos (los llamados eventos). Para eso, usaremos la sentencia switch de la siguiente forma:

switch (item.getId())

La función item.getId() nos retorna un entero igual a la ID del ítem que eligió el usuario, en base a esto, podemos agregar los siguientes casos, quedando nuestro "onOptionsItemSelected" así:

public boolean onOptionsItemSelected(Menu.Item item){
     switch (item.getId()) {
      case 0:
       showAlert("Has elegido una opción", 0, "Archivo", "ok", false);
       return true;
      case 1:
       showAlert("Has elegido una opción", 0, "Hola", "ok", false);
       return true;
      case 2:
       showAlert("Has elegido una opción", 0, "Otra opción inútil", "Hit Me!", false);
       return true;
      case 3:
       showAlert("Has elegido una opción", 0, "Ésta es de otro menú", "¿Y a mí qué?", false);
       return true;
     }
    return false;
    }


Expliquemos la función showAlert, que se me olvidó. En ella hay cinco parámetros, uno que es un string que será el título del mensaje, otro que es el ID de algún iconito que queramos poner a dicho mensaje, el tercero que consiste en otro string con el contenido del mensaje y un tercero con lo que dice el botón. Simplecito.

Si lo probamos, comprobaremos que funciona.

Otra forma de hacerlo es mediante recursos. Aquí, almacenamos los valores de las variables de tipo string (por ejemplo) en el archivo res/values/strings.xml, de forma como esta:

<resources>
    <string name="app_name">Mi primer menú</string>
    <string name="archivo">Archivo</string>
    <string name="hola">Hola</string>
    <string name="Otra">Otra opción inútil</string>
    <string name="otro">Otro grupo</string>
</resources>


Y cambiar, por ejemplo, la primera función a:

public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    menu.add (0, 0, R.string.archivo);
    menu.add (0, 1, R.string.hola);
    menu.add (0, 2, R.string.Otra);
    menu.add (1, 3, R.string.otro);
return result;
}

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Últimos mensajes