1

我目前有一个工作实现,允许我列出 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 正在这样做一样,但我没有运气。

我曾尝试使用存储访问框架。在三星 Galaxy Tab 上,它可以与 SD 卡和 USB 一起使用,但是在 Google Nexus 10 上,它不能与任何一个(它没有 SD 卡插槽)一起使用,所以我正在尝试实现另一种与 USB 通信的方式。

版本是棒棒糖及以上。

有任何想法吗?谢谢。

4

1 回答 1

0

请参考链接。每个大容量存储设备至少有一个类代码为 08h 的接口描述符,它代表大容量存储类。设备描述符中没有定义大容量存储类!USB 接口正好有两个端点描述符。一个从设备读取的 IN 端点和一个向设备写入的 OUT 端点。这种情况下的读写并不一定意味着在实际的存储介质上进行读写,这将在后面描述。关于大容量存储类有两种不同的类型。有一种最常见的仅批量传输 (BBB) 机制。所有较新的设备都遵循该标准。然后是不再重要的控制/批量/中断 (CBI) 标准,因为 USB-IF 建议使用 BBB 方法

UsbDevice 被识别为海量存储设备 如果:

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
于 2017-02-23T04:25:13.987 回答