2015-05-12 59 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」;' –