A-MTP四轮定位换螺丝螺丝孔中的MTP表示什么

您所在的位置: &
MTP in Android详解(1)
MTP in Android详解(1)
MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android从3.0开始支持MTP。不过,在今天的智能手机领域内,Google和微软是一对冤家,为什么Android中会使用MTP呢?请看下文。
MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android从3.0开始支持MTP。
不过,在今天的智能手机领域内,Google和微软是一对冤家,为什么Android中会使用MTP呢?请看下文。
一& 背景知识介绍
笔者相信《程序员》杂志的绝大多数读者或多或少都使用过MTP。因为早在智能手机普及前,数码相机和MP3播放器等都使用了MTP的前身PTP(Picture Transfer Protocol)进行媒体文件传输。那时,只要通过USB数据线把它们连接上Windows操作系统,就能在&我的电脑&中见到这些设备了。此后,用户可以把它们当做U盘一样使用,例如对其进行目录、文件的浏览和拷贝等操作。
既然可以通过MTP把智能设备当作U盘使用,那么它和我们常用的USB大容量存储(USB Mass Storage,简称UMS)有何不同呢?
UMS模式下,PC操作存储设备的粒度是设备块(FAT block),而非文件系统。什么意思?此处举一个简单例子。当Android手机通过UMS将sdcard挂载到PC后,PC就拥有对sdcard的绝对控制权。这样,手机就无法同时访问sdcard了。这种做法带来的后果就是Camera或Music程序将因没有外部存储空间而提示无法进行操作(注意,有些厂商的手机对此进行过修改,使得Camera能短时间录制一部分视频到内部存储空间)。这也是Android早期版本中一个很明显的特点。另外,由于PC在操作sdcard时可能弄坏其文件系统,这将导致sdcard重新挂载到手机后不能被识别。
如果Android手机的sdcard以MTP模式挂载到PC机上,sdcard的控制权其实还是属于手机。只不过智能手机通过MTP协议向PC机构建了一个虚拟文件系统。PC机操作其中的文件时,都会通过标准MTP协议向智能手机发起请求。另外,Android把MTP功能集成在MediaProvider中,其好处是PC机操作(例如拷贝或删除等)媒体文件时,媒体数据都会及时更新到媒体数据库中。而UMS模式下,当sdcard挂载回手机后,Android还得花较长时间重新扫描媒体文件以更新媒体数据库。
MTP的好处还有很多,例如它可判断PC机拷贝的媒体文件是否受目标手机支持,甚至可以触发对应的转码程序将其转换成手机支持的格式。不过和UMS相比,MTP也有不足之处:
传输大文件的速度较慢。
MTP不能直接修改文件本身。只能先拷贝到本地修改,完毕后再拷贝回去。
除了Windows外,Linux和MacOS对MTP支持还不是很完善。
下面我们将介绍MTP协议。
1.1& MTP协议介绍
根据协议,MTP的使用者包括两个部分,分别是Initiator和Responder。如图1-1所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="" src="http://img.blog.csdn.net/15915" />
图1-1& Initiator和Responder图示
由图1-1可知:
Initiator:主要是指USB Host,例如PC机,笔记本等。协议规定所有MTP操作只能由Initator发起。
Responder:一般是诸如数码相机、智能手机等存储媒体文件的设备。Responder在MTP中的作用就是处理Initator发起的请求。同时,它还会根据自身状态的变化发送Event以通知Initiator。
注意:后文我们将统一以PC代表Initiator,Android手机代表Responder。
与很多协议一样,MTP也有自己的协议栈,如图1-2所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="" src="http://img.blog.csdn.net/34421" />
图1-2& MTP协议栈
由图1-2可知,MTP协议栈由下到上分别是:
Pyshical Layer(物理层):物理层在MTP协议中用来传输数据。目前有三种物理层可供MTP使用。它们分别是USB:其主要特点是传输文件,同步媒体文件时速度快,而且可以边工作边充电,这是目前用的最多的一种方式;IP:基于IP的MTP(简称MTP/IP)将通过UPnP来匹配和发现设备。它是家庭网络中是最理想的传输方式;Bluetooth:MTP/BT是最省电,同时也是速度最慢的一种传输方式,用处较少。
传输层:MTP中,数据传输格式遵循PTP协议
命令层:实现了MTP协议中的各种命令。
如上文所述,MTP采用命令-应答方式来工作(Initator发送命令给Responder处理,Responser反馈处理结果),这种方式的主要特点有:
所有MTP命令均以Package(数据包)的方式在设备两端进行传递。
Initiator必须接收到前一条消息的处理结果(不论是成功还是超时)后,才能发送下一条消息。
下面我们将以PC通过MTP打开一个文件为例,按顺序介绍其中涉及到几个主要MTP命令:
当设备第一次连接上PC后,Initiator(即PC)首先会发送一个名为GetDeviceInfo的请求以获取设备的信息,这些信息包括设备所支持PTP版本的程度,以百分号表示(默认是100)、所支持的MTP命令(Operation Supported)、所支持的Event类型等。
接着PC端会发送OpenSession命令以创建一个会话,该会话一直保持到设备从PC上断开为止。此后所有命令(除GetDeviceInfo命令外)必须在此会话存活期间才能发送。会话在MTP协议中由SessionID来标识,它是一个32位的无符号整型,由PC选择并传给手机。
PC端如果要进行文件操作的话,必须从根目录开始定位目标文件。由于Windows的特殊性,手机内部存储卡在windows系统中显示为盘符。注意,如果手机内部有两块存储卡的话(如内部存储卡和外部sd卡),Windows中会显示为两个盘符。PC端需要通过GetStorageIDs命令返回某个盘符对应的StorageID。在MTP中,StorageID是一个32位无符号整型,每一个StorageID代表了一个逻辑盘符。
PC端可以根据上一步的StorageID号,利用GetStorageInfo操作去获取存储设备的信息,例如剩余存储空间、文件系统类型、访问权限等。
接着,PC就会通过GetObjectHandles命令来获取此盘符下的文件和子目录的Object Handles(一个Object Handle代表一个文件或目录。该值由Responder生成并保证唯一性)。有了Object Handle,PC就可以操作这些文件或目录了,例如继续通过GetObjectHandles获取某个目录中子文件和子目录的信息。
假设现在需拷贝一个文件到手机上,那么PC会通过SendObjectInfo命令将文件信息(如文件名、文件大小)等传递给手机。而手机需要检查目标目录是否有足够的空间和对应权限。
如果一切正常,PC将通过SendObject把数据传递给手机。真正写文件到设备存储空间的则是手机中的Responder。Android实现的MTP还会在媒体文件传输完毕后,将信息更新到媒体数据库中。
除此之外,PC还可利用SetObjectPropValue 命令来设置文件的各种属性值,如Audio BitRate(比特率),Sample Rate(采样率),Number Of Channels(声道)等。
以上为读者描述了MTP使用的一个简单案例。至于其中的各种MTP命令,读者不妨阅读参考文献1,即《MTP Specification v1.0.pdf》。协议对各种命令都有非常精确的描述,例如表1-1,表1-2所示为GetDeviceInfo命令,返回值定义。其参数类型,传递方向都有详细解释(不得不说,和Linux比起来,微软的开发/技术文档做得相当到位)。
表1-1& GetDeviceInfo命令定义
Operation Code
GetDeviceInfo对应命令的数字编号是0x1001
DeviceInfo dataset
手机端返回的设备信息数据集
Data Direction
数据传输方向是手机到PC
ResponseCode Options
OK, Parameter_Not_Supported
手机给PC的返回值
表1-2所示为GetDeviceInfo的返回数据集的定义。
表1-2& GetDeviceInfo返回数据集的定义
Dataset field
Field order
Size (bytes)
Standard Version
手机对PTP协议的支持程度,以%表示,默认是100
MTP Vendor Extension ID
手机对PTP厂商扩展协议的支持,默认是0xFFFFFFFF
MTP Version
手机支持的MTP标准的版本,以%表示
MTP Extensions
手机支持的MTP扩展集
Functional Mode
手机允许的模式
Operations Supported
Operation Code Array
在当前功能模式下,手机支持的所有操作
Event Supported
Event Code Array
在当前功能模式下,手机能产生的所有事件
Device Properties Supported
Device Property Code Array
在当前功能模式下,手机支持的所有设备属性
Capture Formats
Object Format Code Array
手机可以自己生成的文件格式,不包括拷贝到手机上文件格式
Playback Formats
Object Format Code Array
手机可以解析和理解的所有格式类型
Manufacturer
人可读的手机制造商的标识
人可读的手机型号
Device Version
手机的软件或固件版本
Serial Number
能标明手机MTP功能的唯一序列号
1.2& OS对MTP的支持及认证
MTP协议既然由微软提出,理所当然,Windows对其支持自然是不遗余力。目前Windows操作系统中,MTP和多媒体框架紧密结合,并且已经成为Windows Media中的重要一部分。如WMP10(Windows Media Player 10)和WMP11均内置对MTP功能,其中WMP11还新增对Playlist和Album art的支持。
微软除了提出MTP协议并在Windows操作系统中提供大力支持外,它对使用MTP协议的设备也有所管理。所有标称支持MTP协议的设备,必须通过微软的测试WLK(Windows Logo Kit)。WLK测试通过的设备可以获得一个徽标。关于WLK测试的详细信息,请读者参考。从以上链接中也能下载到wpdmon,它是MTP开发中最常用的测试工具,可显示出所有PC与手机进行MTP操作时发送的命令、数据及返回值。图1-3为笔者测试某台Android手机的MTP功能时用wpdmon截获的信息示意图:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' alt="" src="http://img.blog.csdn.net/56273" />
图1-3& wpdmon工具使用示意图
下面我们来看MTP在Android平台中的实现。
内容导航&第 1 页: &第 2 页:
关于&&的更多文章
作为Android开发者,我们大都知道开发最难处无外乎是底层的开发
在诸多移动操作系统中,Android的成长性无疑是最强的
移动异构计算是相对于同构计算来说的,同构计算就是使
Android 4.4即将发布,这对大家来说都是很期待的,当
本书主要以“网管员的成长经历”为线索展开,虚拟出一个“新手”网管员的工作和学习环境,将网管员的成长分为4个阶段,以“网管
Windows Phone专家
Android开发专家
51CTO旗下网站& 卡西欧MTP-1191A-1A手表怎么样
卡西欧MTP-1191A-1A手表怎么样
来源:腕表之家
类型:转载
作者:李童童
&&&&凭借创新的开发理念,不断在技术上寻求创新,将更多创新理念运用于之中。同时也将实用、美观、便宜的印象留在了消费者的心中。下面为您推荐一款MTP-1191A-1A。
卡西欧MTP-1191A-1A男
&&&&材 质:镜面—高强度玻璃;表壳—不锈钢;表带—不锈钢
&&&&颜 色:表面—黑色;指针—银色;表带—银色
&&&&表 扣:一次触动三折表扣
&&&&规 格:38.3*39.7*9
&&&&重 量:88g
&&&&显示模式:大三针
&&&&防 水:50M
功能/附件:
&&&&.星期显示
&&&&.日期显示
&&&&.时间功能
&&&&指针:三针显示(时、分、秒表秒针)
&&&&三圈设计:计时24小时制针、星期显示、日期显示
我来写评论
最新腕表点评XMTP: XML MIME Transformation Protocol
XML MIME Transformation Protocol (XMTP)
Copyright (c)
Jonathan Borden ALL RIGHTS RESERVED
See updated
The XML MIME Transformation Protocol (XMTP) is a mapping of
MIME/SMTP to XML. MIME is the lingua franca of the Web. Both the
HTTP and SMTP protocols are MIME based. As XML gains in popularity
it is useful to be able to represent MIME messages as XML
documents. This mapping is straightforward and demonstrates
handling of binary data in XML documents as base64 encodings.
Using XMTP, SMTP messages can be transformed via XSLT into HTML
pages for viewing. XMTP has been used to implement a telemedicine consultation system using SMTP e-mail and HTML
A Sample Message
MIME/RFC822 Format
XMTP Format
Script (Mail script)
The first standards for the transmission of text messages over
the Internet (then the Arpanet) were defined by RFC 821/822. Multimedia
Internet Message Extensions (MIME) extended
this format for the representation of multimedia types. The basic
organization of a MIME message is:
MIME messages are used in both the SMTP and HTTP protocols and
hence are the essential basic datatype of the Internet.
The XMTP protocol
Mapping the MIME format into XML allows the integration of MIME
messages into XML systems. This mapping is straightforward:
The root element of the document is &MIME&
XMTP uses the XML namespace
xmlns:mime="/xmtp" declared as &MIME xmlns:mime=
Headers become elements
Header parameters become attributes of the header
The body is represented by the element &BODY&
Multipart MIME types are represented as &MIME&
elements within the &Parts& element.
The Content-Type header defines the type of information
contained in the body. The Content-Transfer-Encoding header defines
the format (e.g. base64 or binary).
A sample message
original MIME/RFC822 message
: from jabr
(jabr.ne.mediaone.net [24.128.34.211])
by chmls05.mediaone.net (8.8.7/8.8.7) with SMTP id XAA27071
for &test-xmtp@jabr.ne.mediaone.net&; Tue, 13 Oct 1998
23:42:47 -0400 (EDT)
: "Borden, Jonathan"
&test-xmtp@jabr.ne.mediaone.net&
: this is a simple
: Tue, 13 Oct :49
&001501bdf723$74f03fe0$d3228018@jabr.ne.mediaone.net&
multipart/
="----=_NextPart_000_0016_01BDF701.EDDE9FE0"
: 3 (Normal)
: Microsoft Outlook 8.5,
Build 4.71.2173.0
: Produced By Microsoft
MimeOLE V4.72.3110.3
This is a multi-part message in MIME format.
------=_NextPart_000_0016_01BDF701.EDDE9FE0
="iso-8859-1"
Here is the text of the message ... its being transmitted in
'HTML' format
but the text is a separate part for e-mail readers that don't
understand
HTML. We can't assume that all valid HTML is XML so we have to
escape all of
the HTML ... or use a CDATA section
------=_NextPart_000_0016_01BDF701.EDDE9FE0
="iso-8859-1"
quoted-printable
&!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN"&
&META content=3D"text/ charset=3Diso-8859-1" =
http-equiv=3DContent-Type&
&META content=3D'"MSHTML 4.72.3110.7"'
name=3DGENERATOR&
&BODY bgColor=3D#ffffff&
&P&&FONT size=3D2&Here is the text of the
&STRONG&&FONT color=3D#0000ff =
face=3D""=20
size=3D5&message&/FONT&&/STRONG& ... its being
transmitted in 'HTML' =
format but=20
the text is a separate part for e-mail readers that don't
understand =
HTML. We=20
can't assume that all valid HTML is XML so we have to &FONT
color=3D#ff0000=20
face=3D"" size=3D5&escape &/FONT&all of the HTML ... .or
use a CDATA=20
section&BR&&BR&jon&BR&&/FONT&&/P&&/BODY&&/HTML&
------=_NextPart_000_0016_01BDF701.EDDE9FE0--
Now the XMTP
&="/xmtp" ="/xmtp"&
& ="----=_NextPart_000_0016_01BDF701.EDDE9FE0"&multipart/alternative&/&
&&binary&/&
&&Tue, 13 Oct 1998
23:33:49 -0400&/&
&&&Borden,
Jonathan& &&&/&
&&Normal&/Importance&
&&&001501bdf723$74f03fe0$d3228018@jabr.ne.mediaone.net&&/&
&&from jabr
(jabr.ne.mediaone.net [24.128.34.211])
by chmls05.mediaone.net (8.8.7/8.8.7) with SMTP id XAA27071
for &test-xmtp@jabr.ne.mediaone.net&; Tue, 13 Oct
:47 -0400 (EDT)&/&
&&this is a simple
message&/&
&test-xmtp@jabr.ne.mediaone.net&&/&
&&Microsoft Outlook
8.5, Build 4.71.2173.0&/X-Mailer&
&&Produced By
Microsoft MimeOLE V4.72.3110.3&/&
&&Normal&/&
(Normal)&/&
& ="/xmtp"
xmlns="urn:xpository:xmtp"&
& ="iso-8859-1"&text/plain&/&
& =""&&![CDATA[
Here is the text of the message ... its being transmitted in 'HTML'
but the text is a separate part for e-mail readers that don't
understand
HTML. We can't assume that all valid HTML is XML so we have to
escape all of
the HTML ... or use a CDATA section
& ="iso-8859-1"&text/html&/&
&&binary&/&
& xmlns=""&
&![CDATA[&!DOCTYPE HTML PUBLIC "-//W3C//DTD W3
HTML//EN"&
&HTML&&HEAD&
&META content=3D"text/ charset=3Diso-8859-1" =
http-equiv=3DContent-Type&
&META content=3D'"MSHTML 5.00."'
name=3DGENERATOR&&/HEAD&
&BODY bgColor=3D#ffffff&
&P&&FONT size=3D2&Here is the text of the message ...
its being =
transmitted in=20
'HTML' format but the text is a separate part for e-mail readers
understand& HTML. We can't assume that all valid HTML is
XML so we =
have to=20
escape all of the HTML ... or use a CDATA=20
section&BR&&&&&&&&BR&&BR&&=20
&/FONT&&/P&&/BODY&&/HTML&]]&&/&
Example script
The XMTP test facility was programmed using the XTRIME XMTP
server and the following script:
&?XTRIME Language="JavaScript" ?&
var SMTP =
Ctx.CreateInstance("XTRIME.SMTPMessage.1");
var MIME = SMTP.MIME;
SMTP.To = Request.Header("From"); // reply back to the
SMTP.From = Request.Header("To");
MIME.Header("Content-Type") = "text/plain"; // send the reply
back as the body of the message
MIME.Header("MIME-Version") = "1.0"; // always
MIME.Header("Reply-To") =
"&&"; // any
questions go to me :-))
Request.MessageType = 3; // this means use XML format for the
MIME message
SMTP.Body = R // this 'assigns' the body of the SMTP
message to the MIME Request ...
SMTP.Send(); // send it
<mit(); // commit the transaction and *really* do it
Using the XMTP test facility
Tthe XMTP protocol is demonstrated in action by sending a
message to:
When the XMTP server gets the message, it runs the above script
which generates the E-mail reply. In this case the body of the
message is the request transformed into XML.
XMTP-BOARD is an XML/XSL e-mail demonstration system. Post a
message by sending E-mail, including attached GIF and JPEG images
The board can be viewed by browing the link:
http://jabr.ne.mediaone.net/xmtp/listxmtp.asp?User=xmtp-board
This demo employs XML and IE5 version of XSL. A server side
XSL transformation which can be viewed in non XML/XSL browsers cane}

我要回帖

更多关于 四轮定位偏心螺丝技巧 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信