下側のUSBデバイスとして動作する為のライブラリが
Android USB Accessory Development Kit ADKとして提供されている。
そしてこのときのUSBホストがArduinoという構成だ。ADKにはDemoKitというアプリが入っているので読んでみよう。
まずはAndroidManifest.xml。
アクティビティ
・.DemoKitLaunch <ーー"android.intent.action.MAIN"
・.DemoKitActivity
・.DemoKitPhone
・.DemoKitTablet
・UsbAccessoryActivity
次にMAINのDemoKitLaunchクラス。
ここではactivity.getWindowManager().getDefaultDisplay()から
画面サイズを取り出している。
画面サイズが閾値以上ならDemoKitTablet、以下ならDemoKitPhoneを
IntentにつめてstartActivityしている。
タブレットかスマートフォンかの識別子が無いのだろう。
Xperiaで動かすのでDemoKitPhoneクラスを見ていこう。
ここは画面上のIN/OUTタブの切り替えを管理しているだけ。
DemoKitPhoneが継承しているのはBaseActivityクラス。
ここはUSBホストへの入力信号を受け取ったハンドラに合わせて
処理実行クラスのメソッドを呼び出している。
さらにBaseActivityが継承しているのはDemoKitActivityクラス。
ここでUsbManagerが生成されるいわば実装クラス。
UsbManagerのFileInputStreamとFileOutputStreamを使って
入力信号受信スレッドと、出力信号生成メソッドを実装している。DemoKitLaunch
|__ DemoKitPhone ー BaseActivity ー DemoKitActivity
| |
InputController ColorWheelLEDController
RelayController
ServoController
AndroidManifest.xmlにはUsbAccessoryActivityが記述されている。
<intent-filter>、<meta-data>に
"android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
が指定されているので、このクラスはソースから明示的に呼ばれるのではなく、
USBホストにAndoroid端末が接続された際に呼び出される。
このクラスがDemoKitLaunchをIntentにつめてstartActivityしている。

0 件のコメント:
コメントを投稿