项目中使用到usb camera ,同时该模组有一个虚拟usb串口,可以进行通信,发送指令和接收模组返回的实时温度数据;
根据usb host的开发流程,主要需要用到(UsbManager,UsbDevice,UsbEndpoint,UsbInterface,UsbDeviceConnection):
1、获取UsbManager 服务:
UsbManager mUsbManager;
mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
2、获取UsbDevice,这是我们需要操作的外设device:
通过设置usb插拔监听,根据外设的device.getProductId(),找到我们需要操作的usbDevice,申请usb使用权限即可。
usb 使用授权成功后,根据UsbDevice,获取需要的UsbInterface,并由UsbInterface获取输出/输入UsbEndpoint,最后通过UsbManager 管理mUsbManager.openDevice(device);打开外设,建立连接,UsbDeviceConnection。如下图:
注意,UsbEndpoint的type有几种类型,
USB_ENDPOINT_XFER_CONTROL (endpoint zero)
USB_ENDPOINT_XFER_ISOC (isochronousendpoint)
USB_ENDPOINT_XFER_BULK (bulkendpoint)
USB_ENDPOINT_XFER_INT (interruptendpoint)
分别为对应四种不同的传输类型:控制传输,实时传输,批量传输,中断传输,我们这里使用的USB设备的端口类型为bulk endpoint,直接使用bulkTransfer方法: