说说PPC上的彩信

近日研究彩信,有以下一些收获:

1.PPC手机上的彩信发送和接收是由彩信客户端实现的,而彩信客户端是由各个手机厂家自己根据中国移动的规范实现的.因此,各个厂家的客户端优劣不一,功能不一,有的强大一些,有的则很烂.一款价格普通的手机,彩信客户端可能做的很不错,而一款昂贵的"旗舰机",却有着很烂的彩信客户端.例如,移动规范上规定:彩信终端必须支持手动播放彩信. 而三星i908E却不支持. 而且图片也没有按照smil文件的规定进行正确的缩放, 造成大大的屏幕中间显示一个很小幅的图片. 相反, Dopod系列的手机彩信客户端个人认为相当不错, 不论是手动,自动播放控制, 还是图片的缩放显示效果上,都比较完美.

2.由于彩信客户端是一个"第三方"软件,因此,在手机的注册表里设定了彩信的路由位置,例如: HK_LOCAL_MACHINE\SECURITY\PUSHROUTER,
指明客户端程序位于\windows\MMSListener.exe

3.彩信的存储分为两部分,一部分是主题,和短信SMS一起保存在系统中,需要通过MAPI才能读取. 另一部分是彩信内容,不同的客户端导致保存的文件格式和位置都不一样.以Dopod为例, 彩信内容是一个个的后缀为.dat的文件, 例如 31088.dat, 一般保存在My Document\UAContent\下面, 或者
My Document\UA Content\MMS UA\ 下面.

4.彩信内容文件找到了, 但是这个文件是如何组织的呢? 经过分析发现, 彩信内容是使用SMIL(Synchronized multimedia Integration Language)语言来组织的. 彩信的结构包括MMS Header 和 MMS Body 两大部分.
  MMS Body又包括presentation, image/jpeg, text, audio, video ,各个媒体部分. 
  presentation部分,其实就是一段xml语句, 定义了本彩信中各个媒体段的名称,类型,显示方式,用来提供给彩信客户端以便提取对应的数据并且按照要求进行显示.说白了就是显示规则的描述.这部分可以在文件头,也可以在文件尾. 但一般好像没有看到在中间的.
  其他各个媒体部分一般按顺序(也是最后用户看到的播放顺序)将自己以16进制形式排列在文件中.

presentation部分示例:

- <smil>
- <head>
- <layout>
  <root-layout height="208" width="176" />
  <region id="Image" top="0" left="0" height="50" width="100" fit="hidden" />
  <region id="Text" top="50" left="0" height="50" width="100" fit="hidden" />
  </layout>
  </head>
- <body>
- <par dur="20000ms">
  <img region="Image" src="att00.gif" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att01.txt" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att02.txt" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att03.txt" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att04.txt" />
  </par>
- <par dur="180000ms">
  <img region="Image" src="att05.jpg" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att06.txt" />
  </par>
- <par dur="20000ms">
  <img region="Image" src="att07.jpg" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att08.txt" />
  </par>
- <par dur="180000ms">
  <text region="Text" src="att09.txt" />
  </par>
 </body>
</smil>
 
 其中,每一页用一个<par dur="180000ms">段表示, dur代表本页播放时间.
posted @ 2009-02-06 14:06  大厨无盐煮  阅读(2278)  评论(2编辑  收藏  举报