【发布时间】:2011-10-23 10:27:03
【问题描述】:
我正在尝试使用升级到 android 3.2 的 acer iconia a500 与 USB 设备通信(内核 2.6.36.3+,未植根,我只是使用了定期更新功能)。 简而言之,我得到 UsbManager 后,getDeviceList 返回一个空映射。来自 google 的 adbtest 样本也是如此:
mManager = (UsbManager)getSystemService(Context.USB_SERVICE);
// check for existing devices
for (UsbDevice device : mManager.getDeviceList().values()) {
// I get nothing here, the values() list is empty
我尝试了几种设备(各种 USB 固态硬盘、硬盘、鼠标、garmin 手表等)。没有。操作系统确实可以识别某些设备(磁盘、鼠标)(它们可以工作:我看到文件系统、鼠标工作正常等),但它们不会在 API 级别得到反映。
谷歌搜索,有人说鼠标和键盘没有被枚举,但磁盘可以,但他们使用的是 3.1,而我使用的是 3.2。我也没有得到磁盘,或者我插入的任何其他东西。
上面的代码应该枚举所有设备。无论如何,我还尝试了谷歌示例中记录的意图 + xml 文件方法。依然没有。
清单似乎没问题,正如我所说,直接来自 sdk 的 adbtest 样本显示了同样的问题。
鉴于 API 的缺乏,我真的不知道下一步该尝试什么。有没有人在带有 android 3.2 的 iconia a500 上成功使用主机模式?
编辑:我的意思是在 API 级别“使用”。正如我所说,“标准”设备在操作系统级别得到识别并且可以工作,但通过 API 是不可见的。最后我需要在主机模式下与一个非标准设备通信,所以我真的需要通过API来获得它。
编辑 2:我不打算生根我的设备,因为如果需要生根,我的应用程序(如果我设法编写它:-) 将毫无用处。
谢谢!
- 维克
【问题讨论】:
-
我在 Iconia 3.2 上使用了键盘、鼠标和外部 NTFS 硬盘驱动器。
-
是的,正如我所说,我也是。它们自己工作,但不会在 API 级别被枚举,所以虽然操作系统可以看到它们,但我不能(所以我不能与非标准设备通信)。我会澄清我的问题,谢谢!
-
您或许可以联系“Drive Mount”的开发人员,了解他是如何工作的。申请在这里:market.android.com/details?id=au.dach.drivemount
-
我已经安装了这个应用程序,但是它需要设备被植根。这对我的应用程序来说是不可能的,并且不应该是 USB 主机所必需的(但可能需要安装驱动器)。我会进一步澄清我的问题,谢谢。