Android USB Host使用詳解


http://blog.csdn.net/glouds/article/details/40260805html


=================
android


首先說一下爲何要寫關於Android USB Host通訊的介紹,對於android程序原來講不懂硬件作USB通訊確實開頭比較難,可是Google API介紹仍是很詳細的,並且網上也有不少例子,不過網上的基本把介紹和例子分開,光介紹不給例子,給個例子又不知道它是幹什麼的或者運行不了。那麼我把本身經過閱讀別人的博客和USB通訊協議等來作下面的介紹,並給出一個通用的例子。ide

Android USB Host分如下三部份介紹:post

(一)參考官方文檔,查看USB設備信息。ui

(二)USB Host 相關API簡介。spa

(三)給出一個U盤操做的例子。.net

Android USB Host使用詳解之一:查看USB設備信息
xml

首先來看一下Google的官方文檔中關於Android USB的介紹:Android USB Host and Accessoryhtm

Android USB有兩種模式Host  Mode和Accessory Mode:blog

在Host Mode下,Android手機做爲主設備,如經過OTG線鏈接的HID設備或者U盤爲從設備;在Accessory Mode下,Android手機做爲從設備,如經過USB數據線鏈接的電腦爲主設備。

本文主要介紹在Host Mode下,Android手機與USB設備之間的通訊。Android USB Host的介紹可參見Google 官方文檔:Android USB Host介紹

關於Android USB相關類的介紹留在下面慢慢展開,先編寫一個Android程序:

1)在AndroidManifest.xml文件中添加

       <uses-feature android:name="android.hardware.usb.host" />  


2)在<activity ...>添加

  1. <intent-filter>  
  2.      <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />  
  3. </intent-filter>  
  4. <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"  
  5.      android:resource="@xml/device_filter" />  
在res/xml文件夾下新建device_filter.xml
  1. <resources>  
  2.     <usb-device vendor-id="3544" product-id="8199" />  
  3.     <usb-device vendor-id="5251" product-id="4608" />  
  4. </resources>  
 其中vendor-id和product-id爲插入USB設備的生產廠家號和產品號, 在 插入(attached)上面列出的設備之一時,就會彈出選擇打開應用程序的對話框。

注:上面的id爲10進制的,而經過電腦上查看的id爲16進制的