lunes, 20 de septiembre de 2010

Primeros pasos: parametros del JAD o JAR

Este es un tema interesante al que iremos recurriendo cuando vayamos avanzando en nuestros Midlets.

Muchas de las configuraciones a cerca de como queremos que el telefono trate nuestras aplicaciones se configuran en el properties del JAD o en el Manifest del JAR.

En cualquier caso, ambas las editaremos desde el Application Descriptor, en diferentes campos.
  • Nombre del Midlet, el fabricante (vendor) y la version
  • El tamaño en datos, la descripcion de la aplicacion y los mensajes de borrado e instalacion.
  • Los valores especificos para Motorolas y Nokias
  • Los certificados y firmas
  • Otras operativas como la necesidad de mostrar las teclas de navegacion, la orientacion de la pantalla (en los dispositivos que soportan el "apaisado"), etc.
Todos los valores posibles podeis consultarlos en la biblioteca de Desarrollo JavaME de Nokia buscando por "JAR manifest attributes".

Los mas ultiles son:
  • Nokia-MIDlet-App-Orientation: [portrait|landscape] que define la orientacion obligatoria del telefono. Si indicas "landscape" el telefono ignorará la posicion y siempre mantendrá tu aplicación apaisada.
  • Nokia-MIDlet-On-Screen-Keypad: [no|gameactions|navigationkeys] que permite ocultar o mostrar los botones de navegacion y juegos (sobre todo util poder ocultarlos).
  •  Nokia-MIDlet-On-Screen-Softkeys-Position: [right|bottom] que permite cambiar la situacion de los botones en modo apaisado (landscape), forzando que queden siempre en la parte inferior de la pantalla (y no a la derecha, que es la posicion por defecto para S60v5)
  • Nokia-MIDlet-Original-Display-Size y Nokia-MIDlet-Target-Display-Size: width, height que se usan para informar de las dimensiones con las que se ha diseñado la aplicación, así como los valores reales del dispositivo donde va a ejecutarse (tendrás que cambiar el Target_size si quieres hacer aplicaciones para dos telefonos con diferente resolución). Estos dos parametros son muy utiles para adaptar aplicaciones, imagenes, fondos, sprites y demás cosas hechas para dispositivos de pantalla pequeña (240,320) a dispositivos de pantalla grande (360,480), combinandolo con "on_screen_keypad = no" si es un dispositivo tactil.
  • Especificos para dispositivos NOKIA tienes algunos mas que te permiten controlar la ejecución de tu aplicativo en el arranque, impedir que se apague, mantenerlo en background o cosas por el estilo... utiles si quieres hacer software tipo "demonio" que esté ejecutandose todo el tiempo... por ejemplo para mantener estadisticas de uso o monitorizar alguna funcion del sistema.

Primeros pasos: "Hola mundo"

En la web encontraréis un millon de ejemplos del "hola mundo", aqui os dejo el que yo usé.

De todos modos, lo realmente importante es saber como iniciar un proyecto de tipo "MIDlet".

La estructura basica del proyecto es:
  1. Un directorio scr con nuestro codigo
  2. Un directorio res con los recursos encesarios (iconos, imagenes, etc)
  3. Un descriptor de la aplicacion (con datos de configuracion y parametros de ejecucion)
  4. Un fichero de propiedades de la compilacion (y de generacion del jar).
Eclipse genera todos estos elementos de forma automatica cuando elegimos: New > Midlet proyect
O bien, si Midlet proyecto no parece directamente: New > Proyect...  Desplegamos Java ME y elegimos Midlet proyect.


Ahora podemos copiar el ejemplo del Hola Mundo y compilarlo.

Antes de lanzar el emulador de dispositivo, para probar nuestro programa tenemos que fijar algunos parametros en el descriptor de aplicacion.

Podemos hacer doble click sobre el Application Descriptor y Eclise nos muestra varias pestañas con diferentes elementos a configurar. Por ahora solo nos interesa la sengunda pestaña, donde elegiremos el Midlet a ejecutar (un proyecto puede tener varios Midlets, unos pueden llamar a otros, o puedes hacer que tu instalación genere "dos aplicaciones" con dos iconos en el telefono).


Pulsamos Add, ponemos un nombre al Midlet y elegimos la clase que se ejecutará, en nuestro caso el HolaMundoMidlet.

Ahora en la primera pestaña "Overview" en la seccion Runtime elegimos el "tipo de telefono" donde queremos probarlo. Por defecto aparece el telefono elegido al configurar JavaMe. Yo os aconsejo, aunque es más pesado de cargar, que useis el S60Emulator, porque permite cargar varias veces la aplicacion sin tener que apagarlo cada vez (como pasa con los dispositivos del JavaMe o del Wireless Toolkit).

Lanza la aplicacion ejecutando la opcion JavaME Midlet en la seccion Running y comprueba como tu dispositivo virtural saluda al mundo entero.

viernes, 17 de septiembre de 2010

El entorno de trabajo: Symbian S60

La guia para instalar las librerias y complementos necesarios para desarrollar software sobre plataforma Symbian está en el foro de Nokia

Los pasos a seguir son:
  1. Descargar el Sun Java Wireless Toolkit for CLDC aunque yo recomiendo que descargueis directamente el Java ME SDK, que contiene dicho toolkit en su ultima version, la 3.0.
  2. Descargar las librerias de Symbian S60 del foro de Nokia. Elegid el fichero: S60_5th_Edition_SDK_v1_0_en.zip (o version posterior).
  3. Descargar ActivePerl, esta no es una descarga obligatoria para un desarrollador en Java, pero el Emulador utiliza Perl en algunas de sus funciones.
  4. Además podeis descargar la librería de consulta para desarrolladores en Java ME que se integra con Eclipse (y funciona pulsando F1 en la herramienta)
Realmente si habeis descargado Pulsar, no hace falta nada más porque el paquete de Eclipse ya lleva todos los plugin necesarios, si ya teníais instalada una version de Eclipse y no quereis cambiarla, podeis instalar Eclipse Mobile Tools desde el udate site oficial o desde la opcion Help > Install New Software del propio Eclipse.

Ahora vamos a ir instalando cada uno de los ficheros descargados:
  1. Si habeis decidido instalar el Perl, es lo primero.
  2. Descomprimimos y ejecutamos la instalacion de Symbian_S60_5th y "recordamos" el directorio donde se ha instalado, por defecto es C:/S60/devices. Si no habeis instalado Perl, aparecerá una alerta durante la instalacion, la ignorais y continuais el proceso.
  3. Ahora hacemos lo mismo con el Java Me v3.0 y tambien "recordarmos" donde lo hemos instaldo, por ejemplo: C:\Java_ME_platform_SDK_3.0
Comenzamos a configurar todo junto: encemos Eclipse, vamos al Workbench y abrimos la ventana de configuracion: Window > Preferences. En el arbol de configuracion buscamos Java ME y dentro de ella: Device Management.
Este proceso tendremos que hacerlo dos veces, salvo que hayais tenido la precaucion de instalar el Java ME v3 dentro del directorio C:/S60 (jeje, podría haberlo dicho antes, verdad?).
  1. Elegimos Manual Install
  2. Pulsado Browse y elegimos el directorio S60 donde hemos instalado las librerias de Symbian... esperamos un poco y aparecen los dos dispositivos: Device y Emulator.
  3. Volvemos a pulsar Manual Install
  4. Ahora buscamos el directorio Java ME platform DSK... esperamos otro poco y aparecen todos los dispositivos standar de Java, son 9. Si instasté el Wireless Toolkit, aparecen menos dispositivos (y los nombres son distintos).
  5. Pulsamos OK, y se cierra la ventana.

Ahora, para mejorar la experiencia con los simuladores de dispositivos, vamos a cambiar un par de cosas en el debuger de Eclipse.
  1. Entramos en las opciones de configuracion otra vez: Window > Preferences
  2. Navegamos hasta Java - Debug
  3. Desmarcamos las dos opciones:
  • Suspend execution on uncaught exceptions.
  • Suspend execution on compilation errors.
De este modo, los errores que pueda lanzar el emulador no afectan a la ejecucion o debug de nuestros programas.

Ya solo nos queda añadir la documentacion de Java ME a Eclipse, copiado el fichero Java_Developers_Library_3.1.0.jar dentro del direcrtorio eclipse/plugins. Esto ultimo es mejor hacerlo con Eclipse apagado.

El entorno de trabajo: Eclipse

Cuando nos planteamos comenzar a desarrollar software para un telefono, lo primero es disponer un entorno de trabajo que nos ayude en la labor.

El entorno de desarrollo más extendido para trabajar con Java en dispositivos moviles es Eclipse y mas concretamente el paquete Pulsar

La version con la que yo trabajo es Helios, que es la release de 2010.

Descargad la aplicacion e instaladla (creo que es suficiente con descomprimir el archivo en un directorio "/eclipse"). Luego modificad el fichero eclise.ini para que asigne 1Gb al heap, editando la linea:

-Xmx384m
y poniendo

-Xmx1024m
Ahora iremos instalando las librerias necesarias para cada sistema operativo: Symbian, Android, etc.