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();
}
私は、2つのデバイスが差し込まれ、マウスやフラッシュドライブを持っています。
上記のコードは次のように生成:消去法により
[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
が何であるか分かりません。
this documentationによると、USB_CLASS_MASS_STORAGE
のプロトコルが8
あると0
は、どちらもUSB_CLASS_PER_INTERFACE
を返す場合、私はフラッシュドライブがある機器のコードに決定することができますどのようにUSB_CLASS_PER_INTERFACE
に関し?私はUsbDevice
の他のプロパティを見てきましたが、何も役に立たないものはありません。