The motej-demos package contains sample code, that should help you in adopting motej for your own projects.
To discover and connect a Wiimote, implement a MoteFinderListener, add it to the MoteFinder and start the Discovery, as shown below.
MoteFinderListener listener = new MoteFinderListener() {
public void moteFound(Mote mote) {
System.out.println("Found mote: " + mote.getBluetoothAddress());
mote.rumble(2000l);
motes.add(mote);
}
};
MoteFinder finder = MoteFinder.getMoteFinder();
finder.addMoteFinderListener(listener);
finder.startDiscovery();
Thread.sleep(30000l);
finder.stopDiscovery();
To react on button events propagated by motej, simply attach a CoreButtonListener instance to your Mote object.
mote.addCoreButtonListener(new CoreButtonListener() {
public void buttonPressed(CoreButtonEvent evt) {
if (evt.isButtonAPressed()) {
System.out.println("Button A pressed!");
}
if (evt.isButtonBPressed()) {
System.out.println("Button B pressed!");
}
if (evt.isNoButtonPressed()) {
System.out.println("No button pressed.");
}
}
});
In order to intercept Accelerometer Events, just add a AccelerometerListener to your Mote instance and set a report mode that contains accelerometer data.
AccelerometerListener listener = new AccelerometerListener() {
public void accelerometerChanged(AccelerometerEvent evt) {
System.out.println(evt.getX() + " : " + evt.getY() + " : " + evt.getZ());
}
};
Mote mote = MoteFinder.getMoteFinder().findMote();
mote.addAccelerometerListener(listener);
mote.setReportMode(ReportModeRequest.DATA_REPORT_0x31);
Thread.sleep(60000l);
mote.setReportMode(ReportModeRequest.DATA_REPORT_0x30);
mote.disconnect();
I do reset the report mode to 'Core Button data only' before disconnecting the Wiimote, as I've found my Bluetooth stack crashing sometimes if I didn't.
Using IrCamera events is quite similar to accessing the accelerometer data. Just add the IrCameraListener to your Mote instance.
IrCameraListener listener = new IrCameraListener() {
public void irImageChanged(IrCameraEvent evt) {
System.out.println(evt.getX() + " : " + evt.getY());
}
};
Mote mote = MoteFinder.getMoteFinder().findMote();
mote.addIrCameraListener(listener);
mote.enableIrCamera();
mote.setReportMode(ReportModeRequest.DATA_REPORT_0x36);
Thread.sleep(60000l);
mote.setReportMode(ReportModeRequest.DATA_REPORT_0x30);
mote.disableIrCamera();
mote.disconnect();