IOIO-OTG for Android (ADK)
Get "Making Android Accessories with IOIO" book free when you buy IOIO OTG
IOIO (pronounced "yo-yo") is a bridge between Android devices and external hardware such as sensors and servos. IOIO enables you to add the computational power, touch display, connectivity, and built-in sensors (camera, GPS, accelerometer) of Android to your projects. IOIO can connect to any standard Android device (as early as Android 1.5) over both USB and Bluetooth.
The IOIO board contains a single MCU that acts as a USB host and interprets commands from an Android app. In addition, the IOIO can interact with peripheral devices in the same way as most MCUs. Digital Input/Output, PWM, Analog Input, I2C, SPI, and UART control can all be used with the IOIO.
Code to control these interfaces is written in the same way as you write an Android app with the help of a simple to use app-level library. In other words, you can combine the awesome computing power, Internet/Bluetooth connectivity, touch screen, and a variety of sensors from your Android device with the ability to easily add peripheral devices to interact with the outside world.
Also, using the IOIO does not require any hardware or software modifications to your Android device, thus preserving the warranty as well as making the functionality available to non-hackers.
Application Note (Operating Modes)