以下列举了常见的几种Android USB Gadget类型:
Android USB Gadget类型
1、UMS:USB mass storage,USB大容量存储,也被称为UMS,USB MSC。在旧版Android手机上会将其暴露给计算机,有如下几种缺点:
- USB mass storage是flash driver,外部hd,SD卡和其他USB存储设备使用的标准协议。驱动器使其自身完全对计算机可见,就像它是内部驱动器一样;
- 这种方式存在问题。无论什么设备访问存储,都需要对其进行独占访问。将存储连接到计算机时,它与设备上运行的Android操作系统断开连接。存储在SD卡或USB存储器上的任何文件或应用程序在连接到计算机时都将不可用,此时是计算机独占;
- 由于必须可以从Windows设备访问文件系统,因此必须使用FAT文件系统对其进行格式化。 微软不仅拥有对FAT施加的专利,而且FAT也是一个较旧的,较慢的文件系统,没有现代许可系统。
2、MTP:Media Transfer Protocol,媒体传输协议,主要用于传输媒体文件,当Android使用该协议,将其连接到电脑上,会显示一个媒体设备。该协议与USB mass storage的工作方式非常不同。
- MTP不会将Android设备的原始文件系统暴露给Windows,而是在文件级别运行;
- Android设备不会将其整个存储设备暴露给Windows。 相反,当将设备连接到计算机时,计算机将查询设备,并且设备会响应其提供的文件和目录列表。
- Android可以选择它呈现出来的文件,并隐藏系统文件,以便其他人无法查看或修改它们。 如果尝试删除或编辑无法修改的文件,设备将拒绝该请求,将会看到错误消息。
- 计算机不需要对存储设备进行独占访问,因此无需连接存储,断开连接或为不同类型的数据分别设置分区。Android也可以使用它想要的ext4或任何其他文件系统,但Windows不必了解该文件系统。
- 在实践中,MTP的功能很像USB mass storage。 例如,MTP设备显示在Windows资源管理器中,因此您可以浏览和传输文件。
3、PTP:Picture Transfer Protocol,图像传输协议,当Android使用此协议时,它在计算机上显示为数码相机。MTP是基于PTP的,在此基础上进行扩展,PTP通常由数码相机使用;
4、CDC:Communication Device Class,通信设备类,被USB主机用于识别(确定)含有几种不同类型接口的通信设备。更多关于CDC的内容,请参考:ACM-ECM-NCM-EEM-RNDIS-RmNet介绍
5、FFS:Function Filesystem,允许通过用户空间创建function,类似于GadgetFS(gadget configfs)通过用户空间创建USB Gadget。在之前的文章中,我们讲到通过gadget configfs创建一个mass storage
的gadget,里面就用到mass_storage
的function,这个function是在drivers/usb/gadget/function/f_mass_storage.c
就已经预先定义好的了。这里的FFS
允许通过用户空间创建function,就不用在内核中预先定义。
6、MIDI:MIDI是一种技术标准,描述了通信协议,数字接口和电连接器,它们连接各种电子乐器,计算机和相关的音频设备,用于播放,编辑和录制音乐。通俗的理解就是audio设备。
7、HID:Human Interface Device,人机交互接口。
8、SERIAL:串口
9、ADB:Android Debug Bridge,Android调试桥,更具体的介绍详见Androidadb的编译配置及常见问题