gpt4 book ai didi

android - 为什么 UsbManager.getDevicesList() 无法枚举此特定设备?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:52 26 4
gpt4 key购买 nike

如标题所述,我在使用 UsbManager.getDeviceList() 枚举支持 USB 的 Android 手机上的特定 USB 设备时遇到了问题。我在本手机和其他手机上枚举和与其他 USB 设备通信没有遇到任何问题,但是找不到这个特定的 USB 设备。它也不能用第 3 方应用程序枚举,例如 USB Device Info .

以下是在 PC 上正确枚举的 USB 属性。我已经与设备制造商进行了沟通,他们已确认有一家外部公司认证了该设备符合 USB 2.0 规范。最初,我怀疑该设备被 Android 拒绝,因为它省略了以下字段:iManufacturer、iProduct 和 iSerialNumber,这些字段被其他兼容设备包含。但是,在查看 USB 2.0 Spec 的第 9.5 节的摘录后,这些字段似乎不是必需的。 :

Where appropriate, descriptors contain references to string descriptors that provide displayable information describing a descriptor in human-readable form. The inclusion of string descriptors is optional. However, the reference fields within descriptors are mandatory. If a device does not support string descriptors, string reference fields must be reset to zero to indicate no string descriptor is available.

那么我的问题是,是什么导致 UsbManager 拒绝枚举此 USB 设备?而且,更重要的是,我能做些什么来强制 Android 枚举这个设备吗?理想情况下,我对不需要根访问权限的解决方案最感兴趣,但它不一定会破坏交易。

USB properties


编辑:一些示例代码。

UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
// When I plug in this USB device, deviceList is empty.
// Other devices are discoverable, however.

编辑 2:我测试了更多手机。我已经成功枚举了以下手机的 USB 设备:

  • 注释 2
  • LG-V400

以下设备无法枚举设备:

  • 连结 5
  • 银河 S4、S5、S6
  • LG G2、4G LTE

编辑 3:Here are the logs插入 USB 设备后在 Nexus 5 上调用 adb shell dmesg。您可以在第 4-16 行清楚地看到手机无法枚举设备。

最佳答案

将 USB 设备连接到您的 Android 手机后,断开它并将手机连接到您的计算机,这样您就可以使用 adb shell dmesg 查看内核日志。如果您看到该设备出现在内核日志中,那么手机正在识别它,我不确定为什么 UsbManager 没有返回它。我怀疑它不会出现在内核日志中,或者那里会出现错误。这可能意味着该设备与手机的 OTG Controller 不兼容,或者没有获得足够的电量来正常运行。

关于android - 为什么 UsbManager.getDevicesList() 无法枚举此特定设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com