Android4.0之后,OTG开始普及,我们可以拓展U盘、鼠标等设备用于安卓设备。那么就需要了解USB的数据交换。
USB设备分为Host主设备和Slave从设备,我们通常理解的OTG就是安卓作为”host”:通过安卓设备作为主设备进行设备间通信。安卓中也封装好了API使我们不必研究USB协议便能进行简单设备通信。
首先 USB Host需要3.1以上的安卓版本支持,即minSdkVersion 12。然后我们需要一台设备,一部支持OTG的安卓手机,当然也需要一条OTG的数据线。
然后我们开始了解API:
UsbManager管理器允许你枚举出USB用来后续使用
UsbInterface设备通信接口
UsbEndpoint接口的接入点,分为单向和双向,多数设备请求和响应分占两个端口,部分设备共用同一端口。以我测试为例,使用的是虹膜识别设备,就是共用端口,发送和接收不能同时使用。
关于设备我们需要知道Vid和Pid,分别为VendorID(生产厂商ID)和ProductID(产品ID),用它可以区分设备的种类,这样就可以在枚举后筛选出需要的设备。