Список файлов Android с USB-накопителя

В настоящее время у меня есть работающая реализация, которая позволяет мне перечислять USB-устройства, запрашивать разрешение для этого USB-устройства и затем подключаться к ним (в основном с http://developer.android.com/guide/topics/connectivity/usb/host.html), У меня есть такой же код, как и в связанной статье, но ни один из методов в приведенных классах не предназначен для вывода списка файлов на устройстве или проверки наличия файлов.

Однако я не понимаю, как я могу перечислить файлы, которые находятся на устройстве USB, чтобы проверить, существуют ли файлы перед передачей данных.

Устройство "путь" идет по линии /dev/bus/usb/00x но это не может быть доступно напрямую через File, Я вижу приложение ES File Explorer в состоянии перечислить файлы на USB (устройство без рута), так что я знаю, что это возможно. Я также пытался получить доступ к путям URI, как usb://100x казалось, что ES File Explorer делает это, но мне не повезло.

Я попытался с помощью Storage Access Framework. На Samsung Galaxy Tab он работает как с SD-картами, так и с USB, однако на Google Nexus 10 он не работает ни с одним (у него нет слота для SD-карт), поэтому я пытаюсь реализовать другой способ общения с USB.

Версия Lollipop и выше.

Есть идеи? Благодарю.

1 ответ

Пожалуйста, обратитесь по этой ссылке. Каждое запоминающее устройство имеет как минимум один дескриптор интерфейса с кодом класса 08h, который обозначает класс запоминающего устройства. Класс запоминающего устройства не определен в дескрипторе устройства! Интерфейс USB имеет ровно два дескриптора конечной точки. Одна конечная точка IN для чтения с устройства и одна конечная точка OUT для записи на устройство2. Чтение и запись в этом случае не обязательно означает чтение или запись на фактическом носителе, это будет описано позже. Есть два разных типа относительно класса запоминающего устройства. Существует механизм перевозки только навалочных грузов (BBB), который является наиболее распространенным. Все новые устройства соответствуют этому стандарту. Затем существует стандарт Control/Bulk/Interrupt (CBI), который больше не важен, потому что USB-IF рекомендует использовать подход BBB

UsbDevice распознается как устройство massStorage, если:

usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_MASS_STORAGE
                        || usbInterface.getInterfaceSubclass() == INTERFACE_SUBCLASS // int 6
                        || usbInterface.getInterfaceProtocol() == INTERFACE_PROTOCOL // int 80

а также

usbInterface.getEndpointCount() == 2

где одна из конечных точек должна удовлетворять следующим условиям:

endPoint direction == 0
endPoint type = UsbConstants.USB_ENDPOINT_XFER_BULK //int 2
Другие вопросы по тегам