android – 为什么这个特定的设备不​​能被UsbManager.getDevicesList()枚举?

前端之家收集整理的这篇文章主要介绍了android – 为什么这个特定的设备不​​能被UsbManager.getDevicesList()枚举?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正如标题所述,我在使用UsbManager.getDeviceList()的USB功能Android手机上列出特定USB设备的麻烦.我没有麻烦在这个和其他手机上列举和与其他USB设备通信,但是找不到这个特定的USB设备.它也不能被列为第三方应用程序,如 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枚举这个设备?理想情况下,我对一个不需要root访问权限的解决方案感兴趣,但并不一定是破产者.

编辑:一些示例代码.

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

以下设备无法枚举设备:

> Nexus 5
> Galaxy 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控制器不兼容,或者没有足够的电力正常工作.
原文链接:https://www.f2er.com/android/312185.html

猜你在找的Android相关文章