USB 機器のインターフェイスとエンドポイント


20140104usb_sample1

USB ホスト API を使って、USB 機器のインターフェイスとエンドポイントを取得します。

ソースコードは Github に置いています。

中身は、Android Developers の解説に、若干の変更を加えたものです。

(1) 機器の接続と切断は、UsbManager.ACTION_USB_DEVICE_ATTACHED と UsbManager.ACTION_USB_DEVICE_DETACHED のイベントを BroadcastReceiver で受けています。
(2) Vendor ID の一覧は usb.org の Company List に掲載されています。
掲載されていないものの方が多いようですが。
(3) Class は Android API の UsbConstants で定義されています。
(4) Subclass と Protocol は Class 毎に規定されている個別の仕様書を調べる必要があります。
例えば、USBメモリは、Mass Storage Class です。

USBメモリの結果

Vendor ID : ADATA Technology (4703)
Product ID : 0
Interface : 0
  Class : Mass Storage Devices
  Subclass : SCSI transparent command set
  Protocol : BBB Bulk-Only
Endpoint 0
  Direction : OUT host to device
  Transfer Type : Bulk
Endpoint 1
  Direction : IN device to host
  Transfer Type : Bulk

参考
android.hardware.usb – Android Developers
USB ホストとアクセサリ‎ – ソフトウェア技術ドキュメントを勝手に翻訳
Company List – usb.org
Universal Serial Bus Mass Storage Class Specification Overview – usb.org


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です