1
我正在嘗試使用this guide at android.developers來讀取USB大容量存儲閃存驅動器的內容。我在決定哪個驅動器實際上是閃存驅動器時遇到問題。如何確定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
)。
根據this documentation的USB_CLASS_MASS_STORAGE
協議爲8
和0
涉及到USB_CLASS_PER_INTERFACE
我怎麼可以在代碼中哪個設備是閃存驅動器決定,如果他們都返回USB_CLASS_PER_INTERFACE
?我查看了UsbDevice
的其他屬性,而且似乎沒有任何回報對我有用。