首页 文章

Android USB OTG阅读Usb Drive

提问于
浏览
5

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

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

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

谢谢

1 回答

  • 0

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

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


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

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

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

    • 连接到设备(你已经完成了)

    • 识别并控制大容量存储接口

    • 写一个海量存储类驱动程序

    • 编写将使用大容量存储类驱动程序读/写文件的文件系统驱动程序

    • 在项目中使用文件系统驱动程序api .

    要编写一个大容量存储类驱动程序,你必须阅读USB Mass storage clas规范http://www.usb.org/developers/docs/devclass_docs/并且你正在寻找Bulk only

    然后,请参考您要设计和规范的文件系统 . (如果可供使用的话)


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


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

相关问题