因为当前项目涉及到了插入多个usb设备,且每次软件需要调用单独的特定的那一个,所以需要知道这个设备的pid和vid,有的厂家没有给,就想着自己通过代码来进行查看。
代码如下:
final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
assert device != null;
Log.e("device.getProductId()", String.valueOf(device.getProductId()));
Log.e("device.getVendorId()", String.valueOf(device.getVendorId()));
}
}
};
private void getUsbDriverService() {
mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
mUsbDriver = new UsbDriver(mUsbManager, MainActivity.this);
mPermissionIntent = PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(ACTION_USB_PERMISSION), 0);
mUsbDriver.setPermissionIntent(mPermissionIntent);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
MainActivity.this.registerReceiver(mUsbReceiver, filter);
}
会在Log中打印出刚才插入的usb设备的pid和vid。
我是在Activity 的onCreate方法里调用的getUsbDriverService();
还要记得在onStop或者onDestroy方法中取消注册:
this.unregisterReceiver(mUsbReceiver);
结束。