5

我想UsbManager通过编写以下代码来使用 API:

在活动代码中:

        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();

        Log.d(TAG, "size =" + deviceList.size());

在清单中:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

    <permission android:name="android.hardware.usb.host" >

</permission>

<uses-feature android:name="android.hardware.usb.host" android:required="true" />

我也跟着这个问题,检查了我的 Galaxy SII 9100G。它确实具有/system/etc/permissions/android.hardware.usb.host.xml, 和正确的权限。

但是manager.getDeviceList()当我尝试闪存驱动程序和鼠标时,总是返回零。

谁能给我任何建议?

4

4 回答 4

2

你的问题没有共同的答案。这在很大程度上取决于您的设备。模拟器根本不支持 USB 主机,有些设备需要 root 才能做到,有些设备有正确的 USB 主机支持开箱即用。

编辑

我最近完成了对设备 TF-MID1007G 的这个问题的调查。可能这对以后的人有帮助。有一个很棒的应用程序可以对设备的 USB 主机功能进行诊断 - USB 主机诊断(非常感谢作者,你真的拯救了我的一天)。此应用程序显示有关设备的 USB 主机支持的判断,在我的情况下,它是内核支持的 USB 主机,但仅限于第三方应用程序。幸运的是,这个应用程序还可以(仅在有根设备上)修复您的设备系统以添加与 USB 主机一起使用的功能。即使在重置设备后,此修复程序仍然存在。在此修复后,我的应用程序可以枚举 USB 主机设备、请求权限等,如标准 android API 中所述。如此简短的操作列表,可在此设备上启用正常的 USB 主机支持

  • 带有 VRoot 或百度 Root 的 root 设备(我用的是最后一个,因为我附近没有任何窗口)
  • 安装USB 主机诊断
  • 开始diagnosic,失败后请求root权限并确认修复系统,同意
  • 修复后,确保 VERDICT 部分包含第 3 行应用程序 - 完整
  • 毕竟我重置了我的设备以删除根(这通常很危险,百度根总是要求安装一些英国媒体报道)

现在此设备已准备好与 USB 设备一起使用。

于 2014-11-04T06:15:45.260 回答
0

这段代码对我来说很好。尽管您的代码看起来很相似,但您可以重新检查。

  UsbManager usbManager = (UsbManager) getSystemService(USB_SERVICE);
  HashMap<String, UsbDevice> map = usbManager.getDeviceList();
  Iterator<UsbDevice> it = map.values().iterator();

  while(it.hasNext()) {
    UsbDevice device = it.next();
    // use device info
  }
于 2013-04-15T04:22:49.407 回答
0

可能您正在尝试通过 android 模拟器运行,但是.....根据模拟器的 Android 规范:http: //developer.android.com/tools/devices/emulator.html#limitations

模拟器的功能限制包括:

No support for USB connections

所以,只有在真机上才能测试 UsbManager

于 2013-10-04T10:44:09.390 回答
0

我在运行 Android Pie 的华为 Mate 20 Pro 上遇到过这个问题。相同的程序可以在 Android 5 或 7 设备上完美运行。有一些证据表明这是一个 Android Pie 问题: https ://issuetracker.google.com/issues/121435921

于 2019-05-10T21:35:52.470 回答