Android Open Accessoryの理想と現状と自分の取り組み
昨年5月のGoogle I/Oで、Androidの新機能の目玉として登場したAndroid Open Accessory。
あれから半年、直後はRT-ADKが高価だったり入荷待ち状態だったり、Android Open Accessory対応Android端末があまりなかったりして環境構築を出来ない人もいたけど、その後すぐにArduino+USBホストシールドやPC,mbedなのでADKボードを自作する人が増えたり、Arduino-ADKやRT-ADKminiなどお手頃価格で手に入りやすいADKボードも増え、各社のAndroid端末もアップデート等でAndroid Open Accessory対応が進んでいて、誰でも簡単に開発出来るようになった。
ところが、一通りの情報が流れて以降、Open Accessory/ADK関係で新しい情報が流れてくることはあまり多くなくなった気がする。やっぱりというべきか、そう思っている人はいて、こんなツイートを見かけた。
ADK のデモキット動かすエントリや、ADK を Arduino で自作するエントリはあるのに、Android アプリのほうのプログラミングについての日本語エントリって全然ないのね。
— Yuki Anzai (@yanzm) December 8, 2011
そうなんだよね。
ADKが刺さる人ってマイコンとかに興味がある人だから、マイコン側のエントリが多いんだよね。確かにググッても出てくるのはIO後のDemoKit動かす系のエントリと、自作ボードでADKをつくるエントリがほとんど。
でも、ADKの本質ってそこじゃないと思うんだよね。ハードのこと知らなくてもアプリ開発者がJavaでハードをいじれるってところが推し。本当はADKボードのほうじゃなくて、Android Open Accessoryというプロトコルの方がもうちょっと注目されて欲しい。
希望的に考えると近い将来、Android Open Accessory対応デバイスが市販される。例えば、ADK対応クレードル。家に帰ってAndroid端末をクレードルにさしておくと、目覚まし時計になったり、天気予報を表示したりとか、そこから家電をコントロールできたりとか。
GingerBreadからAndroidでNFCが対応になったけど、Androidでサポートしても対応する端末が普及するまでには半年とか1年というレベルで時間がかかる。Android端末のOpen Accessoryサポートが前提となれば、対応デバイスとして製品を出せば、その瞬間から多くの人が使える事となる。
OpenCall-ADKで、というかIO直後に行われた報告会で @zaki50 が早くも作っていたが([http://www.slideshare.net/MakotoYamazaki/gdd2011-opencall-adk-nfc-for-everybody-design-document
http://www.slideshare.net/MakotoYamazaki/gdd2011-opencall-adk-nfc-for-everybody-design-document:title=資料])、こういったものの完成品が製品としてリリースされるというのがADKの理想的な近い将来イメージだと思う。
その時必要なのは、マイコンのプログラミングじゃなくて、Androidアプリ、あるいはインターネット連携の実装なんだよね。ADKでNFCを動かすことじゃなくて、そのNFCを使って何をするか。
Android Open AccessoryはUSB接続しか対応しておらず、電源もAndroid端末ではなく、接続するデバイス側から供給しなくてはならないなど使いづらいところもある。将来このへんにGoogleが手を入れてくるかどうかは、現状の仕様でのTry&Errorを見てからになるんじゃないかと思う。
ところが、国内のいわゆるガラスマは、製品仕様にAndroid2.3までしか書いてないことがほとんどだし、2.3.4対応をうたっていてもAndroid Open Accessoryには対応していない事がけっこうあるみたい。
2.3->2.3.3は、NFC関係の機能追加が大きな変更点だったので、NFCを搭載していない端末に関してはあまり意味を持たないので、あえて区別する必要はないと思う。
一方2.3.3->2.3.4はGoogle I/Oで大々的に発表したAndroid Open Accessory対応なのだから違いは明確にすべきだし、2.3.4にしながらOpen Accessoryのライブラリを入れないとうのは、この機能を推す気がないということなんだろう。ライブラリ一ついれるだけで実装工数はほとんどかからないし、対応デバイスは開発ボードだけなんだから検証も少なくて済みそうなのに。
Google側もバージョンを2.4にするとかすればよかったんだろうけど、3.0系を先に出しちゃってAPI Levelを変えられないのにマイナーバージョンアップは、、、みたいなところがあったのかも知れない。4.0系は4.0.3でAPI Levelが上がってる。diffは多いのかも知れないけど、機能の注目度や影響の大きさで言ったら2.3.3->2.3.4の方が大きいんじゃないかと思う。
とまあ、こんな背景もありいくつかの取り組みを初めてます。多少なりとも開発の役に立てれば幸いです。
ADISに機能追加
ADISに PackageInfo を追加しました。
これは pm list コマンドで取得できる情報です。今のところ、 features と libraries に対応しています。
これを見ればSO-03CがUSB Accessoryに対応しているということが端末を持ってなくても分かります。
http://adis.pigmal.com/show/device/docomo%2FSO-03C_1250-8604%2FSO-03C%3A2.3.4%2F4.0.1.C.1.9%2F9nv33w%3Auser%2Frelease-keys#packageInfo
2.3.4端末を持っている方はぜひアプリをインストールして情報シェアをお願いします!
インストールはこちらからhttps://market.android.com/details?id=com.itog_lab.android.adis