Android:如何检测已连接的USB设备?

时间:2015-05-12 05:03:43

标签: android usb

我正在尝试检测已经连接到android的USB设备。 我知道有些动作可以检测USB何时连接或分离。 但是在将usb设备连接到android之后,我真的不知道如何检查设备。 此外,我发现每个USB设备都有它的设备类代码,但我如何确定连接的设备类型?例如,我需要检测usb鼠标和键盘;我如何区分它们?

3 个答案:

答案 0 :(得分:6)

试试这个:

  1. 首先注册广播以进行USB连接。 明确许可:
  2. <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> </intent-filter>
    
    1. 使用此

      获取有关详细信息的USB设备列表
      public void getDetail() {
      UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
      
      HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
      Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
      while (deviceIterator.hasNext()) {
          UsbDevice device = deviceIterator.next();
      
          manager.requestPermission(device, mPermissionIntent);
          String Model = device.getDeviceName();
      
          int DeviceID = device.getDeviceId();
          int Vendor = device.getVendorId();
          int Product = device.getProductId();
          int Class = device.getDeviceClass();
          int Subclass = device.getDeviceSubclass();
      
      }}
      

答案 1 :(得分:2)

在这里回答Benny的问题是mPermissionIntent的样子:

string actionString = context.PackageName + ".action.USB_PERMISSION";

PendingIntent mPermissionIntent = PendingIntent.GetBroadcast(context, 0, new 
Intent(actionString), 0);
mUsbManager.RequestPermission(device, permissionIntent);

答案 2 :(得分:1)

“克里斯托弗·加尔萨”的答案可能在科特林。我将用Java发送代码给您。

String actionString = getApplicationContext().getPackageName() + ".action.USB_PERMISSION";

PendingIntent mPermissionIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new
                Intent(actionString), 0);

如果将此代码粘贴到活动中,则可以删除“ getApplicationContext()”。否则,如果将其粘贴到未通过Activity指定的其他类中,则需要某种此类代码:

public class Example {
    private Context context;

    public Example(Context context) {
        this.context = context;
    }
}