2013-03-24 88 views
3

我知道,它已開始的Android 3.1的支持,我的意思是「如何檢查硬件支持」如何以編程方式檢查Android設備上的USB主機支持?

+0

好奇曾有過,你發現了一個解決方案。沒有太多的運氣在論壇上搜索它。如果想知道部分SDK的想法,但可能不希望在商店缺乏該功能的情況下排除應用程序。 – 2014-02-24 13:48:48

回答

0

我有同樣的問題,一些谷歌上搜索後,我發現這一點: http://android.serverbox.ch/?p=549

總之,你的應用需求使用UsbManager系統服務並通過連接的USB設備進行枚舉。

mUsbManager = (UsbManager) mApplicationContext.getSystemService(Context.USB_SERVICE); 
HashMap<String, UsbDevice> devlist = mUsbManager.getDeviceList(); 
Iterator<UsbDevice> deviter = devlist.values().iterator(); 
while (deviter.hasNext()) { 
    UsbDevice d = deviter.next(); 
    if (mUsbManager.hasPermission(d)) { 
     UsbInterface usbIf = mDevice.getInterface(1); 
     for (int i = 0; i < usbIf.getEndpointCount(); i++) { 
      if (usbIf.getEndpoint(i).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { 
       //... 
      } 
     } 
    } 
} 
+0

如果您的設備不支持USB主機,您將有空USB設備列表。所以你的解決方案似乎不起作用 – 4ntoine 2013-10-30 07:49:24

+0

啊......我誤解了這個問題。那麼你是否問過在任何USB設備插入之前如何檢查USB主機支持? – 2013-10-30 19:57:04

+0

粗糙,它取決於android設備硬件的可能性,但不依賴於連接的USB設備 – 4ntoine 2013-10-31 07:50:08

2

參見:http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_USB_HOST如果

context.getPackageManager().hasSystemFeature(
       PackageManager.FEATURE_USB_HOST); 
+0

谷歌一無所知ANDROID_FEATURE_HARDWARE_USB_HOST – 4ntoine 2015-02-11 11:12:42

+2

請在你的回答中添加一些解釋,說明它是如何以及爲什麼解決問題的。就這一點而言,它對其他人無用 – LcSalazar 2015-02-11 15:19:21

+0

更正了我的答案 – GabrielWeis 2015-02-12 12:09:13

相關問題