2015-03-29 3 views
0

У меня возникла проблема с 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.

+0

Как часто вы запустите код выше? Вам нужно будет повторно запустить код, а затем проверить новые устройства. –

ответ

1

Мы боремся с той же проблемой. Кажется, это ошибка в Android 5 (по крайней мере для нас, вы не указали свою версию Android). Вы можете найти ошибку в

https://code.google.com/p/android/issues/detail?id=159529

или

https://www.reddit.com/r/androiddev/comments/37v2c0/usbdevice_getinterface_seems_to_be_broken_in_5x/

или

https://code.google.com/p/android/issues/detail?id=159897

Имейте в виду, что она работает с Android версий < 5, а также с Android 6.0 еще раз. Таким образом, повышение или понижение рейтинга Android может быть решением.

С уважением,

Daniel

+0

Привет, У меня такая же проблема с android 5.1.1, вы нашли какое-либо решение, спасибо. – boy

+0

У нас есть исправление от производителя устройства, которое нашло уловку для нас. Я не знаю другого решения. Я прошу прощения. –

+0

Ваш ответ работает с android 5 или он должен быть 4, спасибо. – boy

0

я достиг этой проблемы без компиляции ядра. Как вы знаете, когда приложение впервые создано отлично, но при подключении новых устройств после запуска приложения получает только последний и отключает другие. Поэтому я создал новую активность, которая возвращается в mainactivity, но до того, как приложение переходит во вторую активность, я убил весь прогресс в mainactivity, а затем переходит к второму активному действию, которое сразу возвращается к mainactivity, и каждая вещь работает так, как сначала созданная.

Главная Activiy коды:

int pid = android.os.Process.myPid(); 
android.os.Process.killProcess(pid); 

Bundle temp_bundle = new Bundle(); 
onSaveInstanceState(temp_bundle); 
Intent intentRecreate = new Intent(MainActivity.this,SecondActivity.class); 
intent.putExtra("bundle", temp_bundle); 
tartActivity(intentRecreate); 
finish(); 

Второй Активность: Коды

Intent start; 
start = new Intent(FreshStartActivity.this,MainActivity.class); 
startActivity(start); 
finish(); 

Поблагодарили: How to kill a process?

 Смежные вопросы

  • Нет связанных вопросов^_^