関連ドキュメントにあるように、基本的にOpen Accessory APIのサポートはAndroid 3.1以降(API Level 12以上)となるが、アドオンライブラリの利用によりAndroid 2.3.4 (API Level 10)でも利用が可能だ。ただ前述のUSBホストモードと異なる点は、ホストコントローラの有無の問題で通常のUSB周辺機器がそのままでは利用できない点で、Open Accessory APIの「USBアクセサリーモード」に対応した専用ハードウェアを用意する必要がある。専用ハードウェアに求められるのは次の2点だ。

・ USBホストコントローラの搭載
・ 最低限500mA/5Vの給電が行われること

基本的には現在提供されているAndroid 3.1以降のデバイスやAndroid 2.3.4搭載デバイス(Nexus OneやNexus Sなど)を利用し、開発者がそれに対応したハードウェアを自分で開発する必要がある。またUSBアクセサリーモードの特徴として、対応ハードウェアをUSB接続した場合はそれに対応するアプリがAndroidデバイスで自動起動する、あるいはアプリのダウンロードに必要なURL等の情報がUSB経由でハードウェアから送信されてくるといった点がある。つまり開発者としてはハードウェアの開発と並行して、それを制御するためのアプリを開発しなければならない。そのため、ターゲットとしてはIce Cream Sandwich以降に登場するAndroidデバイスらが対象になるものとみられる。そして、そのハードウェア開発の一助としてGoogleから提供されているのが「Accessory Development Kit (ADK)」となる。

ADKはUSBホストコントローラと給電用電源ジャックを備えたボードコンピュータといった外観をしており、ここには各種入出力端子やセンサー、LED、スイッチ等が搭載されている。ADK用のリファレンスアプリも用意されており、これらを組み合わせて専用ハードウェア開発の研究に役立ててほしいというのがGoogle側の説明だ。Google I/Oで公開されたデモでは、温度や湿度の計測、LEDの点灯、モーター内蔵のロボット(ドロイド君)をアプリから操作したりと、ロボティクス方面での活用や、コントローラとしてのAndroidデバイスの活用を検討しているようだった。未知の部分もあるが、今後の拡張性という意味では面白い試みだ。

Google I/O 2011で配布されたAccessory Development Kit (ADK)

ホストモードとアクセサリーモードという違いこそあるが、どちらもハードウェアを挿入した段階で対応アプリを呼び出す仕組みは同じ

センサー側で触れたスイッチを、Android上のアプリが認識する

逆にAndroidアプリ側からADK上のハードウェアを制御することも可能。LEDを点灯させたり、ロボットの腕を動かせたりできる