A500で、AndroidのUSBアクセサリモードが動かない、という話があったように思う。
うちではAccessoryChatできていたようなので、なぜかわからなかったのだ。
よくよく考えてみると、AccessoryChatを動かすために、PC側のソフトを変更させたような気がする。
何かというと、Vendor IDをチェックするときにAcerの番号もOKにするようにしたのだ。
AccessoryModeの接続確認は、まず最初にUSBのVendor IDとProduct IDをチェックする。
VID==0x1801 && (PID==0x2d00 || PID==0x2d01)であればAccessory Modeになったと判断する。
しかし、VIDの0x1801ってGoogleなのだ。
メーカーとしては、PIDくらいは変更してもいいけれども、VIDを他社の番号にするのが難しいんじゃなかろうか。
なので、ADKのボードみたいなのを持ってるけど動かない場合は、ADK側のファームを変更するといいんじゃなかろうかね。
もってないので適当なことをいえば、
http://developer.android.com/guide/topics/usb/adk.html#getting-started
のThe ADK packageで取得したファイルのAndroidAccessory.hにあるisAccessoryDevice()のidVendorチェック条件を増やせばいいんじゃないかね。
bool isAccessoryDevice(USB_DEVICE_DESCRIPTOR *desc)
{return (desc->idVendor == 0x18d1 || desc->idVendor == 0x0502) &&
(desc->idProduct == 0x2D00 || desc->idProduct == 0x2D01);}
ソース未公開ライブラリがあるんならどうしようもないんだけどね。
AndroidAccessory.cppを眺めた感じでは、アクセサリモードになるためのシーケンスでも使われているようなので、何とかなるんじゃないかね。
USBのベンダIDは、こんなところに一覧がある。
http://www.linux-usb.org/usb.ids
ここから、自分のIDを探して追加するといいかも。
A500のときは、0x0502を追加したようだ。
XOOMだと、0x22B8なのかな? この数値は、accessorychat.cに載ってた値なので、よくわからん。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。