微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/android/312185.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐