【问题标题】:How to check usb host support on android device programmatically?如何以编程方式检查 android 设备上的 USB 主机支持?
【发布时间】:2013-03-24 13:20:13
【问题描述】:

我知道从 Android 3.1 开始就支持它,我的意思是“如何检查硬件支持”

【问题讨论】:

  • 很好奇您是否发现了解决方案。在论坛中搜索它并没有太多运气。对于想要了解的 SDK 的一部分有这个想法,但如果应用程序缺乏该功能,可能不希望在商店中排除该应用程序。

标签: android usb accessory usb-otg


【解决方案1】:

见:http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_USB_HOST

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

【讨论】:

  • 谷歌对ANDROID_FEATURE_HARDWARE_USB_HOST 一无所知
  • 请在您的答案中添加一些解释,说明它如何以及为什么解决问题。事实上,它对其他人无用
【解决方案2】:

我有同样的问题,经过一番谷歌搜索后,我发现了这个: 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) {
                //...
            }
        }
    }
}

【讨论】:

  • 如果您的设备不支持 USB 主机,您将有空的 USB 设备列表。所以看来你的解决方案不起作用
  • 啊...我误解了这个问题。那么您是在问如何在插入任何 USB 设备之前检查 USB Host 支持吗?
  • 粗略地说,它取决于 android 设备硬件的可能性,而不是连接的 USB 设备
  • 在插入任何 USB 设备之前,有什么方法可以查看设备是否支持 USB 主机?
  • 你试过上面的答案吗(查询'PackageManager.FEATURE_USB_HOST')?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2011-11-15
  • 1970-01-01
  • 2011-10-27
  • 2022-11-27
相关资源
最近更新 更多