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