`
he91_com
  • 浏览: 375764 次
文章分类
社区版块
存档分类
最新评论

Android 短信模块分析(一) Mms功能概述及源码目录结构分析

 
阅读更多

一. MMS功能描述:

MMS是Multimedia messaging service的缩写,中文是多媒体信息服务。在android系统中,它支持SMS(Short Messaging Service)短信和MMS(Multimedia messaging service)彩信发送和接收;支持接收Wappush,Wappush又叫服务信息或者推入信息,是一种特殊格式的短信;同时还能主动接收BroadCast Message,但是目前中国范围内暂不支持该功能。

MMS是在短消息业务基础上发展起来的一种消息业务,它可以用于传送文字、图片、动画、音频和视频等多媒体信息。MMS采用"存储转发"的技术,用户创建的信息能够自动、快速的在手机和手机之间传送;信息的传送仍然按接收方手机号码进行定位;当接收方关机或暂时不在服务区的情况下,信息将存储在多媒体消息中心(MMSC),直到能够正确送达为止。MMS消息服务要求一个WAP网关,一个数据传输网如电路交换网、GPRS或WCDMA网络,和一个多媒体消息中心(MMSC)。在目前,MMS业务主要是以WAP作承载,以短消息作提示通知,由MMS手机自动到多媒体消息中心(MMSC)去提取来实现的。

在android中,MMS主要的处理都在app层,在framework层中主要涉及MMS pdu包的解析处理和发送和接受MMS时的网络处理



二. 源码目录结构分析:

Mms模块包文件之间的关系如下图所示:





导入eclipse的短信源码目录结构图:



其实无论是学习源码也好,还是商业项目入手也好. 首先需要从Manifest文件开始入手,在Mms应用中,它扩展了原始的android.app.Application类,在com.android.mms.MmsApp类中重写了onCreate()方法进行系统初始化、以及重写onTerminate()方法做相关清理工作。最重要的是设置taskAffinity=“android.task.mms”、allowTaskReparenting="true"这是两个属性与任务有关。Task是指用户借助Application提供的功能完成某件事情。通常一个任务操作所涉及的内容不会超过application边界,但在Android允许一个Task操作横跨多个Apllication。以向老朋友发送信息为例,在该任务中,至少需要一个用来输入目标电话号码和消息内容的用户界面——即Android中的Activity组件(这是Mms应用中的内容),如果进一步要求目标号码是从联系人列表或通话列表中选择,而非手工输入,那么就涉及到跨Apllication调用‘联系人应用’中的列表组件(它也是一个Activity)。因此以上两个属性前者设置了Activity的吸引力(Affinity)值;后者使得Activity可以在不同的Task中自有切换。接下来的章节中我会分别从Activity、Receiver、Service和ContentProvider分类进行详细介绍.


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics