【问题标题】:Android usb host api and USB storageAndroid USB 主机 API 和 USB 存储
【发布时间】:2014-12-04 16:36:07
【问题描述】:

我正在尝试将 android 主机 api 用于 USB 存储。我对此有很多疑问。

  1. 使用主机 api 一切皆有可能。我想看看 USB 的内容,如果可能的话,看看正常的文件操作。我没有找到任何关于此的文档帮助。

  2. 我可以使用 UsbDeviceConnection 类 API 声明接口,但我无法理解 bulkTransfer 的工作原理,所以如果有人可以指导我或提供一些参考,我会自己尝试。

我也尝试阅读 USB 规范,我了解 bulkTransfer 在 USB 级别的工作原理,但无法说明如何使用使用 UsbEndpoint 而不是文件描述符的 bulkTransfer 进行 android/java 文件操作。

提前致谢!!

【问题讨论】:

  • @PeterTran 这个问题是在 2 年前提出的,而你回答的问题是 6 小时前!!
  • 你是在建议我在这里发布我的答案吗?
  • 我是说这不是重复的,因为这是一个比你回答的问题更老的问题。

标签: android android-usb


【解决方案1】:

Android USB 主机 API 不包含 USB 大容量存储文件系统代码,截至 2014 年撰写本文时将“储备”Android 在操作系统级别挂载 USB 大容量存储卷。

要使用现有的 Android USB 主机 API 访问 USB 大容量存储设备,您必须在应用程序代码中实现实现块级设备访问所需的原始 USB 操作,以及适当的文件系统逻辑本身。不用说,这些细节的复杂性超出了此处的答案范围,但您可以从研究文档或 USB 大容量存储驱动程序和其他平台文件系统驱动程序的现有实现开始。


Android 6 中的情况似乎有所不同,甚至可能不再允许通过 USB 主机 API 访问该版本识别为存储设备的东西。那些以 Android 6+ 为目标的用户可能需要寻找其他地方,但旧设备将继续使用一段时间。

【讨论】:

  • 好的,明白了。是否可以显示USB存储的内容?
  • 如果无法进行文件传输,那么批量传输 api 的用例是什么?根据我的理解,控制转移是针对操纵杆类设备的。如果我错了,请纠正我。
  • 显示内容是文件系统访问的一种形式,至少在某种程度上需要我列出的所有内容。批量传输是一种用于移动大量数据的通用方法。请记住,USB 外围设备种类繁多,用途几乎无法想象。 Andrioid 支持它们的通用基础。但它们的具体细节留给您实施。
  • @ChrisStratton 因为 Android 6 USB OTG 由vold 处理,前提是它具有受支持的文件系统(FAT[N] 或现在也是 exFAT)。对于其他文件系统,如 NTFS(甚至是 FAT 和 exFAT),USB 主机大容量存储仍然有效,例如Paragon'slibaums。正确的?但我认为到目前为止还没有人尝试通过 USB 主机 API 将 ext4 堆叠在大容量存储上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多