У меня возникла проблема с USBInterface от USBDevice, когда устройство подключено к USB-концентратору с несколькими устройствами.Android USB Host Последовательная связь через USB-концентратор
Когда я подключаю устройство USB напрямую через OTG или через концентратор, подключенный через OTG, все работает нормально, но как только я подключу дополнительное устройство в концентраторе, я не могу открыть соединение.
Я извлекаю все драйверы устройств 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, и система генерирует исключение ArrayIndexOutOfBoundException на getInterfaceCount, как только я попытаюсь открыть соединение.
Дополнительная информация: Я использую библиотеку usb-serial-for-android в качестве обертки для связи с устройством. Это либо ардуино (для тестирования), либо чип FTDI.
Как часто вы запустите код выше? Вам нужно будет повторно запустить код, а затем проверить новые устройства. –