背景知识介绍
android 从3.0开始集成MTP功能,主要原因有三个:
1.手机要支持UMS的话,必须要有一个sd卡,因为sd卡往往采用Windows支持的分区格式。如果想把内部存储空间通过UMS挂载到Windows上,则内部存储空间需采用特定的分区格式。这对某些手机而言根本不可行。因为内部存储空间本身可能就是一个设备,它们采用统一的分区格式。不能因为需要使用UMS,而再增加一块特定的分区格式的存储设备。
2.UMS挂载到PC后,PC操作系统拥有绝对的控制权。此时,Android系统无法操作这些设备。
3.window所占市场份额较大,故即使linux,MacOS支持力度不够,Android也要集成的;
MTP的主要缺点:
1.传输大文件的速度较慢 ??
2.MTP不能直接修改文件本身,只能先拷贝到本地修改,完毕后再拷贝回去
MTP协议介绍
MTP使用者包括两个部分,分别为Initiator和Resoponder
- Initiator:主要是指USB Host,例如PC机,笔记本等,协议规定所有的MTP操作只能由Initator发起
- Responder:一般是诸如数码相机,智能手机等存储媒体文件的设备,Responder在MTP中的作用就是处理Initator发起的请求。同时,它还会根据自身状态的变化发送Event以通知Initator.
MTP 协议栈
- Pyshical Layer(物理层):物理层在MTP协议中用来传输数据。目前有三种物理层可供MTP使用。它们分别是USB:其主要特点是传输文件,同步媒体文件时速度快,而且可以变工作边充电,这是目前用的最多的一种方式;IP:基于IP的MTP(简称MTP/TP)将通过UPnp来匹配和发现设备。它是家庭网络中最理想的传输方式;Bluetooth:MTP/BT是最省电,同时速度最慢的一种传输方式,用处较少;
- 传输层:MTP中,数据传输格式遵循PTP协议
- 命令层:实现了MTP协议中的各种命令;
MTP采用命令-应答方式来工作,(Initator发送命令给Responder处理,Responser反馈处理结果),这种方式主要特点有:
- 所有MTP命令均以Package(数据包)的方式在设备两端进行传递
- Initiator必须接收到前一条消息处理结果,无论是成功或者超时后,才能发送下一条消息