前回のADKの記事で「チェックポイントは、Android側のAndroidManifest.xmlファイルにUSBアクセサリーに関係する部分を正しく書くことと、リソースのxml/accessory_filter.xmlとArduino側のAndroidAccessoryの記述を合わせること。」部分の説明が無かったので、この部分について、実例(自分で作ったAdkAppのモノ)を挙げて説明します。
まずは「Android側のAndroidManifest.xmlファイル」ですが、USBアクセサリーとしてビルド&認識されるための部分を赤で示しました。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.digick.physicom.AdkApp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="com.android.future.usb.accessory" /> <activity android:name=".AdkAppActivity" android:label="@string/app_name" android:launchMode="singleInstance" > <intent-filter> <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/accessory_filter" /> </activity> </application> </manifest>
次にAndroid側のリソースのxml/accessory_filter.xmlとArduino側のAndroidAccessoryの記述です。
それぞれ赤、緑、青の色の部分が同じである必要があります。
これら3つの値(文字列)で、接続されたアクセサリーのハードに対応するアプリ(?)を特定しているもようです。
Android側のxml/accessory_filter.xmlです。
<?xml version="1.0" encoding="utf-8"?> <resources> <usb-accessory manufacture="Physical Computing Blog" model="AdkApp" version="1.0" /> </resources>
Arduino側のAndroidAccessoryの宣言部分です。
AndroidAccessory acc("Physical Computing Blog", // 組織名 "AdkApp", // アプリ名 "AdkApp Arduino Board", // アプリ説明 "1.0", // バージョン "http://physicom.digick.jp", // URL "0000000012345678" // シリアル );
丁寧に解説記事追加ありがとうございます。
小生の場合は、雑誌記事をみて初めてトライするので、Demokitそのままです。AndroidManifest.xmlファイル、Accessory-filterの記述とDemokit.pdeの記述比較確認しましたが、一致していました。
他に原因がありそうです。もう少し調査・トライしてみます。
気になっているのが、Arduino-1.0のIDEでDemokitのコードをベリファイしたらエラーがでており、海外のサイトの記述にUSB_Host_Shield0023を使えとあって、それでやったらエラーがなくなり、ArduinoのADKにアップロードしていることです。
どうもありがとうございました。
adac5963さん
お役に立てなかったようで、申し訳ありません。
原因が判明しましたらご一報ください。