In the previous post I demonstrated live wii-mote data going into Google Android. Here is how to replicate this for yourself.
Overview
A C program communicates with the wii-mote over bluetooth and outputs the accelerometer readings to a file. This is then read by a patched version of the OpenIntents sensor simulator and relayed into Android.
The bits
There are four main parts you'll need to get this going:
- http://dalethatcher.com/android-wii/wiiacc.tar.bz2 A small home grown C app that uses the CWiid library V0.6.
- http://dalethatcher.com/android-wii/wiimote-sensor-simulator.jar A patched version of the OpenIntents sensor simulator program that supports input from wiiacc.
- http://openintents.googlecode.com/files/openintents-binary-0.1.5.zip The OpenIntents binaries, which includes the sensors demo program.
- http://code.google.com/android/download.html The Android emulator.
Setup
Setting up each of the parts.
wiiacc
- Get cwiid-0.6.00.tgz if you need to and install it.
- Download wiiacc.tar.bz2 and unpack it.
- Run bootstrap.sh and then follow the instructions in the INSTALL file to build and install it.
- Run the program with the output filename as an argument. I use '
wiiacc wii' in my home directory. - Follow the instructions from the program and if all is well you should start to see wii accelerometer data in the output file.
Patched Sensor Simulator
- Download wiimote-sensor-simulator.jar or build from the source if you prefer.
- Run "
java -jar wiimote-sensor-simulator.jar" - Scroll down to the bottom of the settings window to the "Real sensor bridge" section.
- Enter the path to the output file in the text field (I use '
/home/dale/wii') and select "Use Wii-mote accelerometer". - If all is well you should see the image of the mobile phone in the top left mostly match the movement of the wii-mote. I say mostly because the wii-mote works out it's orientation by gravity which means that it doesn't measure yaw. There is a good explanation here.
OpenIntents and Android
There are some instructions on the OpenIntents wiki here. However this is the short version:
- Unpack android and run "
tools/emulator" - Unpack the open intents binary package and install the OpenGL viewer by running:
android_install/tools/adb install openintents-binary-0.1.5/OpenIntents.apk android_install/tools/adb install openintents-binary-0.1.5/samples/OpenGLSensors.apk - When the emulator starts launch the OpenGL Sensors program and go to the settings menu, enter the most plausible IP address found under 'Possible IP addresses'.
- You can then test it's working by going to the "Testing" tab and clicking connect, you should see the wii accelerometer data.
- For some reason I usually find at this point you'll need to come out of the OpenGL Sensors app and go back in. However once I've done this selecting 'connect' in the menu works.