Android USB Host使用详解


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


=================


首先说一下为什么要写关于Android USB Host通信的介绍,对于android程序原来说不懂硬件做USB通信确实开头比较难,但是Google API介绍还是很详细的,而且网上也有很多例子,不过网上的基本把介绍和例子分开,光介绍不给例子,给个例子又不知道它是干什么的或者运行不了。那么我把自己通过阅读别人的博客和USB通信协议等来做下面的介绍,并给出一个通用的例子。

Android USB Host分以下三部份介绍:

(一)参考官方文档,查看USB设备信息。

(二)USB Host 相关API简介。

(三)给出一个U盘操作的例子。

Android USB Host使用详解之一:查看USB设备信息

首先来看一下Google的官方文档中关于Android USB的介绍:Android USB Host and Accessory

Android USB有两种模式Host  Mode和Accessory Mode:

在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进制的