Android USB OTG阅读Usb Drive

时间:2013-03-22 14:38:55

标签: android usb host mode

我目前正在开发一个需要在Android中使用Usb主机模式的项目(使用4.2.2)。我需要能够执行标准文件操作,如列出文件和从USB驱动器读取。使用主机模式文档我已经到了能够检测到驱动器已连接的程度,是USB大容量存储,并找到各种端点。

我被困的地方是在那之后该怎么做。我想我并不真正了解控制和批量转移之间的区别,或者在控制转移的情况下,实际上甚至发生了什么。不幸的是,我对USB本身的了解有限,我听说文档相当令人生畏。

任何人都可以帮助指导我,或者指出一个工作示例,我需要做什么来基本上“装载”USB驱动器?正如我之前所说,我只需要列出文件并读取它们的文件操作,而不是写入。我还要提到目标手机是三星的Galaxy Nexus。

由于

1 个答案:

答案 0 :(得分:0)

控制端点(通常)用于向USB设备发送命令 批量端点(通常)用于将数据传输到USB设备。

散装数据结构未定义 但在控制转移中,定义了数据结构 主机发送一个8字节的数据包,其中包含有关命令的信息(如请求ID,命令参数,在数据阶段传输的数据长度等)。然后可选地接收/发送一些数据,最后主机/设备通过移动到状态阶段同意命令成功。就是这样! 但是,魔鬼在细节中,请参阅usb规范。 :)

所有usb存储器(pendrives,存储卡,硬盘驱动器)都可用于usb海量存储类。

使用大容量存储类,您可以执行内存读写,但文件系统(例如:EXT3,FAT ...)需要另外一个驱动程序。

所以,基本上是读/写文件。你需要连接到设备:

  1. 连接到设备(您已完成)
  2. 识别并控制大容量存储接口
  3. 编写大容量存储类驱动程序
  4. 编写将使用大容量存储类驱动程序读取/写入文件的文件系统驱动程序
  5. 在项目中使用文件系统驱动程序api。
  6. 要编写大容量存储类驱动程序,您必须阅读USB Mass storage clas规范 http://www.usb.org/developers/docs/devclass_docs/并且你正在寻找Bulk only

    然后,请参考您要设计和规范的文件系统。 (如果有的话)

    AFAIK,Android具有连接到USB的文件系统安装设备,因此您可以重新发明轮子。

    额外音符:
    某些文件系统没有公开记录(尽管存在反向引用信息)(例如:NTFS)
    一些文件系统(部分)获得专利。 (例如:FAT)

相关问题