我正在开发一个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设备的信息。