前言
在Android开发过程中,我们有时会涉及到USB连接的问题,这里为了方便USB连接的使用,我将相关知识封装成了一个工具类—USBHelper,下面就来介绍下它的使用吧。
今天涉及的内容有:
USB 权限相关设置
USB 设备接口确定
USB 连接流程讲解
USBHelper在 MainActivity 中的使用
项目结构图
USBHelper 源码
一. USB 权限相关设置
1.1 Android设备上打开 OTG 开关
USB连接涉及到OTG技术,需要我们在带有USB接口的Android设备上打开相关设置。在Android设备上操作如下:
设置 -----> 更多设置 -----> OTG Host //将OTG Host 开关打开
1.2 在 androidmanifast.xml 中添加 usb 权限
在 Androidmanifast.xml 中添加如下权限:
android:name="android.hardware.usb.host"
android:required="true" />
然后在 Androidmanifast.xml 中给要进行USB连接的Activity下添加usb列表文件。假设我们要在MainActivity中进行USB连接,则在 Androidmanifast.xml 中的MainActivity注册下添加以下代码:
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/usb" />
主要是在Usb连接相关的Activity注册下添加下面的代码:
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/usb" />
这里我们需要在res/下新建xml文件夹,然后在xml文件夹下新建usb.xml文件。即usb.xml路径为:res/xml/usb.xml。usb.xml文件中主要放置的是每个USB接口相关信息(因为一个Android设备可能有多个USB接口),usb.xml文件内容大致如下:
usb.xml里面基本是放的一个Android设备中所有USB接口的信息了。以上代码中,一个即代表一个USB接口了。通常一个USB接口中有很多信息,包括vendor-id,product-id,DeviceID等信息。这里需要注意的是,同一个usb接口热插拔一次,DeviceID是会变化的,标记一个USB接口的唯一性,我们通常用vendor-id和product-id。
二. USB 设备接口确定
上面我们已经讲过了一个Android设备可能有很多USB接口,而区分一个USB接口的唯一性我们是用vendor-id和product-id。
首先,我们需要获取一个Android设备上所有USB接口信息列表,这里我们可以用USBHelper中的以下方法获得:
/**
* 获取设备所有USB接口信息
*
* @param context
* @