当设备插入具有多个设备的 USB 集线器时,我从 USBDevice 获取 USBInterface 时遇到问题。
当我直接通过 OTG 或通过 OTG 连接的集线器连接 USB 设备时,一切正常,但是一旦我在集线器中插入额外的设备,我就无法打开连接。
我检索所有 USB 设备驱动程序并遍历它们,直到找到要与之通信的设备。
以下代码片段包含我检索 USB 设备的方法:
String manufacturer = "MY_MANUFACTURER" // Dummy text for this snippet
int interfaceCount; // Number of USB interfaces
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
List<UsbSerialDriver> drivers UsbSerialProber.getDefaultProber().findAllDriver(manager);
for (UsbSerialDriver serialDriver : drivers) {
// Check for my specific USB device
if (serialDriver.getDevice().getManufacturerName().equals(manufacturer)) {
interfaceCount = driver.getInterfaceCount();
}
}
当我的设备是集线器中唯一的设备时,接口数为 2,但一旦我添加其他设备,计数为 0,并且系统在我尝试打开连接时立即在 getInterfaceCount 上抛出 ArrayIndexOutOfBoundException。
附加信息:我使用usb-serial-for-android库作为与设备通信的包装器。它是 arduino(用于测试)或 FTDI 芯片。