Experimentando con WiiUseJ en Linux Ubuntu 9.04

Introducción.

WiiUseJ es otra de las prometedoras librerías para manipular la información proveniente del Wiimote desde java que el día de hoy estoy probando después de una primera experiencia con WiiRemoteJ.

Una diferencia importante de esta librería frente a otras probadas anteriormente es que no necesita del complemento de terceras librerías de soporte como Avetana o BlueCove ya que se basa en WiiUse el cual incluye librerías nativas (para Windows y Linux) lo que le permite acceder directamente a la pila de bluetooth del sistema operativo.

Esto es regularmente un punto a favor sin embargo puede llegar a ser una desventaja ya que las librerías al ser nativas deben, especialmente en Linux, corresponder con las versiones correctas de otras librerías a las se enlazan como sucede efectivamente en este momento cuando el release 0.12 fue compilado para libbluetooth 2.0 y esta librería fue actualizada  a la versión 3.0 en Ubuntu 8.10 y posteriores, obligando a que se deban actualizar o compilar nuevamente.

Implementación.

Es necesario importar los siguientes paquetes para la conexión con el wiimote y el manejo de los eventos generados por él.

 import wiiusej.*;
 import wiiusej.wiiusejevents.*;
 import wiiusej.wiiusejevents.utils.*;
 import wiiusej.wiiusejevents.physicalevents.*;
 import wiiusej.wiiusejevents.wiiuseapievents.*;

La clase encargada de manejar los eventos deberá implementar la interfaz WiimoteListener lo que le obligará a implementar los siguientes métodos.

 public void onButtonsEvent(WiimoteButtonsEvent arg0) {}
 public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent e) {}
 public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent e) {}
 public void onIrEvent(IREvent arg0) {}
 public void onMotionSensingEvent(MotionSensingEvent arg0) {}
 public void onExpansionEvent(ExpansionEvent arg0) {}
 public void onStatusEvent(StatusEvent arg0) {}
 public void onDisconnectionEvent(DisconnectionEvent arg0) {}
 public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {}
 public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {}
 public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent e) {}
 public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent e) {}

Para la demostración se hizo uso del método onButtonsEvent el cual permite a través del parámetro que recibe de tipo WiimoteButtonsEvent verificar que botón del control fue presionado mediante los métodos isButtonXXXPressed donde XXX puede ser los botones A, B, One, Two, Minus, Plus, Home, Up, Down, Left y Right.

Ejecución.

Se obtuvo la última versión disponible de WiiUseJ, en este caso era la 0.12.

$ wget http://wiiusej.googlecode.com/files/wiiusej%200.12b.zip

$ wget http://wiiusej.googlecode.com/files/WiiuseJ%200.12a%20Javadoc.zip

La segunda descarga es opcional y corresponde con la documentación del API de la librería.

Coo se mencionó en la introducción, las librerías nativas para Linux incluídas en la versión binaria 0.12 se encuentran obsoletas ya que fueron compiladas con libbluetooth 2.0 mientras que las distribuciones actuales ya incluyen la versión 3.0.  Para hacer esto se descarga el siguiente archivo, se descomprime y se reemplaza el archivo libwiiuse.so con la nueva versión.

$ wget http://wiiusej.googlecode.com/files/libwiiuse.zip

Asegúrese de copiar las librerías nativas incluídas con WiiUseJ al directorio raíz de la nueva aplicación.

  • Para Windows: wiiuse.dll y WiiUseJ.dll.
  • Para Linux: libwiiuse.so y libWiiuseJ.so.

De igual manera es necesario contar con el archivo wiiusej.jar en una ubicación conocida.

Para compilar el programa de demostración invocamos el siguiente comando.

$ javac -classpath wiiusej.jar:. WiiUseJTest.java

Para ejecutar el progrmaa de instalación utilizamos el siguiente comando.

$ java  -classpath ../wiiusej.jar:. -Djava.library.path=. WiiUseJTest

Enlaces.

One thought on “Experimentando con WiiUseJ en Linux Ubuntu 9.04”

  1. Hola,

    No entendí varias cosas de tu explicación para parte de Linux:

    1- Cuando me descargo el archivo libwiiuse.zip sólo contiene un archivo, el libwiiuse.so. ¿De dónde sacas el libWiiuseJ.so?

    2- ¿Qué hay que hacer con la librería libwiiuse.so?

    3- ¿De donde obtienes el archivo wiiusej.jar?

    Gracias por la ayuda.
    Saludos!

Leave a Reply

Your email address will not be published. Required fields are marked *