以下是在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行手机无法枚举设备.