在Xamarian(Android)中获取附加的USB设备信息

时间:2019-12-06 10:06:06

标签: android xamarin usb

我正在开发一个android应用程序。我必须检测何时有新的USB设备连接到android设备。为此,我正在使用 UsbManager.ActionUsbDeviceAttached 事件。当我运行我的android应用程序时,我必须获取连接的USB设备的信息,我正在使用以下代码进行操作:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    SetContentView(Resource.Layout.activity_main);

    UsbManager manager = (UsbManager)GetSystemService(Context.UsbService);
    var DeviceList = manager.DeviceList;
    foreach (var device in DeviceList.Values)
    {
        var Class = device.Class;
        var DeviceClass = device.DeviceClass;
        var DeviceId = device.DeviceId;
        var DeviceName = device.DeviceName;
        var DeviceProtocol = device.DeviceProtocol;
        var DeviceSubClass = device.DeviceSubclass;
        var Type = device.GetType();
        var ManufacturerName = device.ManufacturerName;
        var ProductId = device.ProductId;
        var ProductName = device.ProductName;
        var SerialNumber = device.SerialNumber;
        var VendorId = device.VendorId;
        var Version = device.Version;
   }
}

以上代码为我提供了连接到android的所有USB设备的信息。当我的应用程序运行时,如果有任何USB设备连接到android设备,则我必须触发一个事件。的代码是:

public class BroacastReceiverSystem : BroadcastReceiver
{
    public BroacastReceiverSystem() { }
    public event EventHandler usbAttached;
    public override void OnReceive(Context c, Intent i)
    {
        usbAttached(this, EventArgs.Empty);
    }
}

我使用上面代码的代码是:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    SetContentView(Resource.Layout.activity_main);

    UsbManager manager = (UsbManager)GetSystemService(Context.UsbService);

    BroacastReceiverSystem usbReciever = new BroacastReceiverSystem();
    IntentFilter filter = new IntentFilter(UsbManager.ActionUsbDeviceAttached);
    RegisterReceiver(usbReciever, filter);
    usbReciever.usbAttached += usbAttachedSlot;
}

订阅的事件定义为:

private void usbAttachedSlot(object sender, EventArgs e)
{

}

只要我将新的USB设备连接到android,此代码就可以正常工作,该代码确实检测到新的USB设备已连接。但是我的问题是,我还想要连接的USB设备的信息,类似于启动android应用程序之前已经连接USB设备时获得的信息。我如何获得新连接的USB设备的信息。

0 个答案:

没有答案