android - usb 主机模式与 iconia a500 和 android 3.2 : no devices

标签 android usb

我正在尝试与 USB 设备通信,使用升级到 android 3.2 的 acer iconia a500(内核 2.6.36.3+,未 root,我只是使用常规更新功能)。 简而言之,发生的事情是在我获得 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 watch 等)。没有。一些设备(磁盘、鼠标)确实被操作系统识别(它们工作:我看到文件系统,鼠标工作正常,等等),但它们没有在 API 级别反射(reflect)出来。

谷歌搜索,有人说鼠标和键盘没有被枚举但是磁盘有,但他们使用的是 3.1 而我使用的是 3.2。我也没有得到磁盘,也没有插入任何其他东西。

上面的代码应该枚举所有设备。无论如何,我还尝试了谷歌示例中记录的 intent + xml 文件方法。依然没有。

list 似乎没问题,正如我所说,直接来自 sdk 的 adbtest 示例显示了同样的问题。

由于缺乏 API,我真的不知道下一步该尝试什么。有没有人在 android 3.2 的 iconia a500 上成功使用主机模式?

编辑:我的意思是在 API 级别“使用”。正如我所说,“标准”设备在操作系统级别得到识别并可以工作,但通过 API 不可见。最后我需要在主机模式下与一个非标准设备通信,所以我真的需要通过API来获取它。

编辑 2:我没有考虑对我的设备进行 root 操作,因为如果需要 root 操作,我的应用程序(如果我设法编写它的话 :-) 将毫无用处。

谢谢!

  • 维克

最佳答案

确保您的 Intent 过滤器没有隐藏设备。

http://developer.android.com/guide/topics/usb/host.html

“一般来说,如果要针对特定​​设备进行筛选,请使用供应商和产品 ID;如果要针对一组 USB 设备(例如大容量存储设备或数码相机)进行筛选,请使用类、子类和协议(protocol)。您可以不指定或指定所有这些属性。指定没有匹配每个 USB 设备的属性,因此只有在您的应用程序需要时才这样做:“

告诉我它是否适合你。

关于android - usb 主机模式与 iconia a500 和 android 3.2 : no devices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865582/

相关文章:

java - 无法使用 Firebase ML Kit 读取更多 30 个字符的条形码

php - 拍照并上传到服务器,无需任何压缩 android

Android HttpUrlConnection w 持久连接

android - 如何将应用程序/apk 转换为系统/用户应用程序,包括拆分 apk 应用程序

c++ - 如何在 C++ 中获取 USB 相机帧

linux-kernel - 怎么办 "make drivers/usb/storage/usb-storage.ko"

c# - 在 C# 中检测 USB 设备的插入和移除

android - AlarmManager 从不运行

iphone - HID 报告描述符(使用 iPhone)

c - 编译器如何以及为什么将 extern 函数替换为空函数?