【发布时间】:2016-01-29 16:34:24
【问题描述】:
我知道该怎么做:
- 监听 USB 设备的附加和分离事件
- 获取所有连接的设备
- 获取设备权限
所以最后我有一个UsbDevice 并且我有权读取/写入它。从这里开始怎么走?
我可以打开设备并获得FileDescriptor,如下所示:
UsbManager manager = (UsbManager) activity.getSystemService(Context.USB_SERVICE);
UsbInterface intf = device.getInterface(0);
UsbEndpoint endpoint = intf.getEndpoint(0);
UsbDeviceConnection connection = manager.openDevice(device);
boolean interfaceClaimed = connection.claimInterface(intf, true);
int fileDescriptor = connection.getFileDescriptor();
我现在如何处理这个FileDescriptor?或者我还能如何访问 USB 设备上的文件?
编辑
android 解决方案:不要打开
UsbDeviceConnection,而只是尝试查找USB 设备路径。尽管如此,你还是有区分多个usb设备的问题,不知道哪个路径属于哪个设备...android >= 6的解决方案:使用存储访问框架,实际上我还不知道它是如何工作的......
【问题讨论】:
-
大多数情况下,存储棒将安装在文件系统文件夹上,例如 /storage/usbdrive 左右。在 Marshmellow 下,该路径不存在,您可以使用存储访问框架。
-
我编辑了我的问题并添加了一些内容。其实你知道如何区分USB设备吗?我可以找到所有可用的 USB 存储路径,但我不知道哪个路径属于哪个设备
-
从未见过超过一个 USB 驱动器路径。您在哪里看到的更多?
-
通过usb otg你可以安装任何东西,USB驱动笔,外置硬盘甚至是外置读卡器,最终里面有很多卡......
-
是的。当里面有很多卡片时,你会看到什么路径?哪个设备显示?