Ich versuche, den Inhalt eines USB-Massenspeicher-Flash-Laufwerks mit this guide at android.developers zu lesen. Ich habe ein Problem zu entscheiden, welches Laufwerk eigentlich das Flash-Laufwerk ist.Wie wird der USB-Host-Gerätetyp ermittelt?
ich diesen Code verwenden durch die Geräte iterieren:
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();
}
Ich habe zwei Geräte angeschlossen, eine Maus und ein Flash-Laufwerk.
Der obige Code erzeugt die folgenden:
[0:] /dev/bus/usb/003/003
[0:] 0
[0:] /dev/bus/usb/003/019
[0:] 0
[0:] /dev/bus/usb/003/020
[0:] 0
Durch den Prozess der Eliminierung 020
ist das Flash-Laufwerk, und 019
ist die Maus. Ich weiß nicht, was 003
ist, vielleicht etwas interner oder einer der anderen Ports (ich habe adb
über Onboard-Ethernet verbunden).
Nach this documentation, das Protokoll von USB_CLASS_MASS_STORAGE
ist 8
und 0
betrifft USB_CLASS_PER_INTERFACE
Wie kann ich in Code entscheiden, welche der Geräte ist das Flash-Laufwerk, wenn sie beide USB_CLASS_PER_INTERFACE
zurückkehren? Ich habe mir die anderen Eigenschaften von UsbDevice
angeschaut und keine scheint mir etwas Nützliches zurückzugeben.