2015-05-12 60 views
2

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

回答

3

试试这个:

  1. 首先注册为广播USB连接。 清单权限:

  2. 使用此

    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(); 
    
            String DeviceID = device.getDeviceId() 
            String Vendor = device.getVendorId(); 
            String Product= device.getProductId() ; 
            String Class = device.getDeviceClass() ; 
            String Subclass = device.getDeviceSubclass(); 
    
    } 
    
+0

th x,但我怎么知道连接了哪种设备? – Junsfavorite

+0

设备类和子类应告诉您有关设备的信息,除非它是供应商特定的 - 在这种情况下,您应该能够查看VID/PID - 但您必须知道您要查找的供应商特定设备对于。 – Preston

+1

什么是mPermissionIntent?我如何创建这个? – Benny

0

刚刚在这里回答Benny的问题,获取USB设备的详细的列表是mPermissionIntent可能是什么样子:

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

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

'string actionString = context.PackageName +“.action.USB_PERMISSION”;'是错误的。它应该是'string actionString = context.PackageName +“.USB_PERMISSION”;' –