我想通过编写以下代码来使用UsbManager接口:
在活动代码中:
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" />我也关注了this question,检查了我的Galaxy Sii9100G。它确实拥有/system/etc/permissions/android.hardware.usb.host.xml和正确的权限。
但是当我尝试闪存驱动和鼠标时,manager.getDeviceList()总是返回零。
有没有人能给我一些建议?
发布于 2014-11-04 14:15:45
你的问题没有通用的答案。这在很大程度上取决于您的设备。模拟器根本不支持USB主机,有些设备需要root用户才能支持,有些设备开箱即可支持USB主机。
编辑
我最近针对TF-MID1007G设备的这个问题完成了自己的调查。也许这会对以后的人有所帮助。有一个很棒的应用程序可以诊断device - USB Host Diagnostic的USB主机能力(顺便说一句,非常感谢作者,你真的拯救了我的一天)。这个应用程序显示了usb主机对设备的支持,在我的例子中,它是内核支持的usb主机,但仅限于第三方应用程序。幸运的是,这个应用程序还可以(仅在有根的设备上)修复您的设备系统,以增加与usb主机一起工作的能力。即使在重置设备后,此修复仍然有效。在此修复后,我的应用程序可以枚举usb主机设备,请求权限等,如标准android API中所述。因此,启用此设备上支持普通usb主机的操作列表很简短
带有VRoot或百度根的
<代码>F215
现在,此设备已准备好与USB设备配合使用。
发布于 2013-04-15 12:22:49
这段代码对我来说很好用。尽管您的代码看起来很相似,但您可以重新检查。
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-10-04 18:44:09
您可能正在尝试运行android仿真器but.....according以获取仿真器:http://developer.android.com/tools/devices/emulator.html#limitations的Android规范。
仿真器的功能限制包括:
No support for USB connections因此,只有使用真实设备才能测试UsbManager
https://stackoverflow.com/questions/16006889
复制相似问题