Правильный способ закрыть USB-подключение аксессуаров - PullRequest
22 голосов
/ 26 ноября 2011

Как правильно закрыть соединение с UsbAccessory в Android?Кажется, даже в стандартном примере Google, если я подключаюсь и подключаюсь к нему, выхожу из приложения и затем возвращаюсь к нему, соединение не восстанавливается.

Если присмотреться, кажется, что после вызова close() на FileDescriptor он не откроется снова, и выдается журнал "не удалось открыть / dev / usb_accessory".НЕ вызывать close() - плохая опция, поскольку блокировка потока на read() не будет снята.При физическом отключении / повторном подключении устройства все в порядке.

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

Я использую Nexus S под управлением Android 2.3.6.

Ответы [ 2 ]

15 голосов
/ 27 ноября 2011

Проблема в том, что поток чтения никогда не завершается, поэтому дескриптор файла остается открытым и не может быть открыт снова при возобновлении работы приложения.

Подтверждено, что это ошибка: http://code.google.com/p/android/issues/detail?id=20545

Проголосуйте за эту ошибку, если вы заботитесь о ней.

0 голосов
/ 15 января 2015

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

...