Google I/O でもらったGalaxy Tab 10.1 でADK動作できない!

ADK (Open Accessory Dev Kit) を動かす手順 - Hacking My Way 〜 itogのhack日記に書いたように、Nexus S からADKを動作させることはできた。

先日 Galaxy Tab 10.1 が3.1にアップデートされたのでこっちで試してみたが、動かなかった。。。
最新情報が入手でき次第アップデートします。


8/18 続報
Galaxy Tab 10.1, Optimus PAD (L-06C)でADK動作確認しました - Hacking My Way 〜 itogのhack日記

USB Accessory Support on 2.3.4 vs 3.1

USB Accessory は 3.1(API Level 12)でサポートされると同時に、2.3.4(API Level 10)にもバックポートされ、add-on libraryとして提供されている。
ADKのサンプルアプリであるDemoKitは add-on library を使った呼び出しをしているのでNexus one, Nexus S のような2.3.4デバイス向けにはAndroid SDKAPI level 10 でビルドすれば動作するが、3.1系のタブレット端末で動作させる場合はAPI level 12にして下記の違いを修正しないといけない。

  • 2.3.4

AndroidManifest.xml内に下記記述を追加

<uses-library android:name="com.android.future.usb.accessory" />

add-on library からインポート

import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager;

UsbManager, UsbAccessory の生成

UsbManager manager = UsbManager.getInstance(this);
UsbAccessory accessory = UsbManager.getAccessory(intent);
  • 3.1

APIからインポート

import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;

UsbManager, UsbAccessory の生成

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

ところが、この変更をしたDemoKitをインストールたGalaxly Tab 10.1でADK接続してもBroadcastが飛んでこないっぽい、、、 @muo_jp @curry_man 両氏の助けを借りてGalaxy Tab 10.1 と XOOM (どちらも3.1)の動作確認をしたので挙動をまとめてみた。

Galaxy Tab, XOOM でのADK挙動
  • Galaxy Tab で add-on library を呼び出した場合

Galaxy Tab には add-on library が含まれていないので、2.3.4でビルドしてDemoKitアプリを実行すると下記エラーで落ちる。add-on library は2.3.4へのバックポートなので、これが3.1に含まれないというの普通の挙動だと思う。

NoClassDefFoundError: com.android.future.usb.UsbManager

  • Galaxy Tab でAPIを呼び出した場合

DemoKitアプリ時代は正常に起動するが、ADKを挿しても反応がない。

手元では未確認だが、 http://forum.xda-developers.com/showthread.php?t=1117975 によると以下のエラーが出ているらしい。

Start
Device addressed... Requesting device descriptor.
found possible device. swithcing to serial mode
Data packet error: 5could not read device protocol version

  • XOOMで add-on library を呼び出した場合

なぜかこれが動く。3.1でAPIに含まれているのでadd-on libraryをサポートする必要はないと思うんだけど、互換性確保のために用意したのかな?

  • XOOMでAPIを呼び出した場合

正常動作。

MicrochipのAccessoryの場合

@yokmama からMicrochipのAccessory Develop Kit + Galaxy Tab 10.1 でDemoKitが動作するとの報告をもらった。
以下サイトから購入、ファームやドキュメントの入手ができる。
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2919¶m=en546070