Android just got a whole lot more interesting for hardware development. We can already run music apps and tools like Processing and (via libpd) Pure Data patches on Android. Now, you should soon be able to plug in joysticks, custom hardware, sensors, and other devices and make Android a go-anywhere live music and visual platform. Updated: USB audio class is in fact supported; awaiting other details.

The new hardware APIs allow anyone to develop hardware accessories for Android, from individual DIYers all the way to brands. You don’t have to sign an NDA, and you don’t need a special hardware license – the aspects about which I’ve complained in the past with regards to Apple policies. Anyone can do it.

Here’s some of the documentation:
ADK Android Hardware Development Kit, based on Arduino (MEGA)
Android USB Accessory
USB Host Mode

In the keynote, Google even showed an Arduino MEGA-based board for doing I/O. This should theoretically be open source hardware, though we don’t yet have specifications or code. Based on the way it was described, I would imagine other Arduino boards would work, too, at least with modification.

It’s also unclear what the relationship of the new Arduino-based stuff is to the existing IOIO project, also based on Arduino and Android and with more or less the same capabilities. It’s very possible that what Google has done is add official support. Official SDK support seems like a good thing; I’m just unsure what it means if you’ve already got an IOIO or how the two things relate. (It should be a step forward in at least some ways. If you read the specs on IOIO at Sparkfun, you’ll note that – because of missing OS support – IOIO has to implement host mode itself. And handset support is limited. But IOIO is a much better name.)

I wanted to get out there with the news, so I’ll let you look through the documentation if you’re interested. Since Google IO isn’t covered by an NDA (cough, Apple), I’m hoping we’ll find out more details.

One very nice detail, aside from the Arduino support: the documentation specifically calls out USB bus power.

This leaves some significant questions unanswered, however. For one thing, despite Apple’s restrictions for hardware connected to the Dock Connector, Apple has a very liberal policy and some brilliant hardware work when it comes to USB connections made via the Camera Connection Kit. Power is often an issue, but Apple’s iOS on iPad supports a wide range of USB device classes, including USB audio and USB MIDI devices. There’s still no word on whether that’s supported on Apple – which would be a major detail for music use. (MIDI doesn’t have to be a dealbreaker; you could certainly perform the same functions via the existing classes, or even create your own Android-to-MIDI adapter. But the lack of quality audio I/O could hamper the use of Android for music applications.) USB audio is confirmed, as Google themselves cite it as an example. Waiting on other specifics.

Separated at birth? The IOIO project. Photo courtesy sparkfun.com, who still sell this board – and incidentally, it remains useful for prototyping!

That said, let me review: we’ve now gotten things I’d never really have imagined given the early development of mobile apps. We have Arduino-based and basic USB hardware on Android (possibly more), and USB MIDI and audio devices on iOS.

And furthermore, I think people will do really, really cool things with this stuff. The refrain from many advocates of mobile and next-generation platforms has been that users don’t need or want the kinds of capabilities that we get from conventional computer experiences, and that us pundit nerds should stop making comparisons to computers and let average users just check their Facebook accounts. Yet I’m pleased that engineers at places like Apple and Google have added just those features, because I think a wide variety of people – not just nerds like me, indeed – can do great, expressive things with them, and that that’s been a lesson of computing over the past decades.