我试图使用this guide at android.developers读取USB大容量存储闪存驱动器的内容。我在决定哪个驱动器实际上是闪存驱动器时遇到了问题。
我将使用以下代码迭代设备:
protected override void OnResume()
{
usbManager = (UsbManager)this.GetSystemService(Context.UsbService);
monitorUsb();
}
private async void monitorUsb()
{
var deviceList = usbManager.DeviceList;
foreach (var device in deviceList.Values)
{
Debug.WriteLine("USB",device.DeviceName);
Debug.WriteLine("USB",device.DeviceProtocol.ToString());
}
await Task.Delay(30000);
monitorUsb();
}
我插了两个设备,一个鼠标和一个闪存驱动器。
上面的代码生成以下内容:
[0:] /dev/bus/usb/003/003
[0:] 0
[0:] /dev/bus/usb/003/019
[0:] 0
[0:] /dev/bus/usb/003/020
[0:] 0
通过排除的过程,020
是闪存驱动器,019
是鼠标。我不知道003
是什么,也许是内部的东西或其他端口之一(我有adb
通过板载以太网连接)。
根据此文档,USB_CLASS_MASS_STORAGE
的协议是8
,0
与USB_CLASS_PER_INTERFACE
相关
如果两个设备都返回USB_CLASS_PER_INTERFACE
,我如何在代码中确定哪个设备是闪存驱动器?我已经查看了UsbDevice
的其他属性,似乎没有返回任何对我有用的东西。
1条答案
按热度按时间az31mfrm1#
我看错了协议。
这返回的协议是
80
而不是文档中建议的8
。我无法解释这一点。