android のusb support

22
Android USB support まごろく

Upload: magoroku-yamamoto

Post on 31-May-2015

1.970 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Android のusb support

Android のUSB support

まごろく

Page 2: Android のusb support

USB on Android Yesterday

• Android USB device built-in functions

– USB mass storage

– Adb

– USB tethering

• Limitations

– Most Android devices have no USB host support

– USB Host in Android 3.0 is very limited

– No USB APIs

Page 3: Android のusb support

What is an Open Accessory

• Simple USB protocol for communication between peripherals and Android devices

• Accessory is the host, Android is the device

• Bi-directional communication over two bulk end points

• protocol for associating Android applications with the hardware they support

Page 4: Android のusb support

Accessory Mode

Page 5: Android のusb support

ADK

• Android Accessory Board:

– Based on arduino Mega 2560

– Maxim MAX3421E host controller

– Works with arduino tool chain

Page 6: Android のusb support

Google Shield

• 3 RGB LEDs

• 4 buttons (3 channels, 1 capacitive)

• 3 servo channels, 2 relays

• joystick

• light & temperature sensors

Page 7: Android のusb support

Requirements forOpen Accessory Hardware

• USB host

• Must supply 500mA @5V charging power

Page 8: Android のusb support

Open Accessory Handshake

• When a new device connected, the accessory will perform these steps:– Send "Get Protocol" command to get Accessory

protocol version. if they fails, the device does not support accessories

– Send manufacture, mode description version, serial number and URL strings to identify the accessory to the Android Device

– Send "start" command

– The Android device should re-enumerate in accessory mode and launch an app

Page 9: Android のusb support

USB Accessory Handshake, part2

• You're in Accessory Mode if:

– vendor ID is 0x18d1 (Google)

– Product ID is 0x2D00 or 0x2D01

• Read configuration descriptors

• Look for first In and first bulk OUT endpoint

• Set configuration to 1

• Endpoints are now ready for communication

Page 10: Android のusb support

Open Accessory APIs

• New USB APIs in Android 3.1• - com.android.hardware.udb.*• - Use the is your app will require Android 3.1 (API 12) or

later• - Supported on Motorola Xoom with android 3.1 update• Compatibility Library for Gingerbread• - com.andorid.future.ubs.*• - Link against com.android.future.usb.accessory.jar• - Very similar to Android 3.1 API• - Use this if you want to support Gingerbread and later• - Supported on Nexus One and Nexus S with 2.3.4 update

Page 11: Android のusb support

Connecting to and Accessory

• Application describes compatible accessories in manifest meta-data

• USB Manager matches accessory to compatible application(s)

• Asks user if it is OK to use your app with the accessory to choose among multiple applications

• Application's Activity is started with USB_ACCESSORY_ATTACHED Intent

• Association made permanent if the user selects "always use the app for this accessory" in this dialog

• USB_ACCESSORY_DETACHED Intent send when accessory disconnected

Page 12: Android のusb support

UsbAccessory class

• Describes the USB accessory base on the strings if provides in the handshake– manufacture Name

– Model Name

– Description (user-visible strings)

– URL (web page to visit if no installed support the accessory)

• Serial Number (Optional)

• Manufacture, Model and Version are used for associating accessories with applications

Page 13: Android のusb support

USB Manager class

• getAccessoryList() return currently attached accessories (currently these can only one)

• openAccessory() returns a ParcelFileDescriptor

• hasPermission() to see if you have access to the accessory

• requestPermission() to request permission from user

Page 14: Android のusb support

What is ADK

Page 15: Android のusb support

arduino

• open-source electronics prototyping platform

• http://www.arduino.cc/

• http://www.circuitsathome.com/arduino_usb_host_shield_projects

Page 16: Android のusb support

ATmega2560

• ATmega2560フラッシュメモリ256KB

• SRAM 8KB • EEPROM 4KB • デジタルI/O 54本

PWM I2C含

• アナログ入力 16本

Page 17: Android のusb support

USB Host

• MAX3421E が乗ってるだけ

Page 18: Android のusb support

よーするに

AVR マイコン

USB HOST

Shield

Page 19: Android のusb support

Microchip からPIC24F

Page 20: Android のusb support

IOIO

Page 21: Android のusb support

Hrdakinoriさん

• 4月ごろからPIC24F OTG付きで実験

• https://github.com/hrdakinori/ADB_PIC24F

Page 22: Android のusb support

結論

• おもちゃ・遊び場が増えて

• 睡眠時間が減る

• Androidアプリ書けないけどDeviceの

prototypingはできます

• PIC24F OTG付き 64Kbyte DIP版入手

いっしょに遊ぶ人募集