基于Android4.4 + 联芯L1860平台的短彩双卡方案 ---- (2) 彩信收发机能

2.2彩信收发

 

2.2.1模块构成图

 

 

模块说明:

 

  1. android.telephony:提供一系列获得当前设备telephony服务状态的方法。(sim卡状态,网络类型等)
  2. com.android.internal.telephony:接收RIL传入的PUSH通知,处理后广播到APP层。
  3. android.net:管理网络链接。
  4. android.net.http:提供androidhttp服务。
  5. com.android.mms.transaction:彩信收发的逻辑处理,对发送和接收的不同状态进行处理,支持切换卡槽。
  6. com.android.mms.data:管理当前当前编辑短信的相关信息(使用的sub、短彩信、附件类型等)
  7. com.android.mms.ui:提供短信的UI处理类。

 

2.2.2数据流

 

 

方案说明:

 

1.接收彩信时需要在framework广播的intent中加入subIdMMS APP在接收到广播之后把subId取出,如果当前数据通道所在卡槽不是接收到PUSH通知的卡槽,则进行切换卡槽操作,切换完成后启动相应的transaction下载彩信。

2.发送彩信时需要判断当前是否支持双卡模式,并能取得当前用户默认选择的卡槽(插入两张卡时能够选择,插入一张卡时默认使用插入的卡),点击发送后把用户选择的卡槽保存。如果用户选择的卡槽与当前卡槽不一致,进行切卡操作,切换完成后启动transaction发送彩信。

3.手动下载彩信时取出的subId与当前使用的卡不一致也需要进行切卡的操作。

 


 


 

 2.2.3发送彩信时序图

 

发送彩信处理概要:

 

1.用户点击发送以后,取得当前默认的发送卡槽,使用setWorkingMessageSub()subId设置到workingMessage

2.调用sendMmsWorker发送彩信,MmsMessageSender新增成员变量mSubscription,初始化时传入subId

3.如果用户选择的subId与当前数据通道所在的卡槽不同,则进行切换卡槽操作,在MmsMessageSender启动ServiceSelectMmsSubscription。在该类中增加切换卡槽的异步SwitchSubscriptionTaskframework提供设置卡槽的方法,传入subId后可将数据通道切换到此sub上。

4.切换成功后,启动TransactionService发送彩信,最终进入SendTransaction调用HttpUtils.httpConnection()通过http协议发送彩信。

 

 

2.2.4接收彩信时序图

 

 

接收彩信处理概要:

1.framwork接收到PUSH通知后,向APP广播actionWAP_PUSH_DELIVER_ACTIONintent,此intent中需携带有接收PUSH通知的subId

2.PushReceiver接收到广播后,取出datasubId等相关信息,启动SelectMmsSubscription,如果接收的卡与当前卡槽不一致的话,进行卡槽切换。然后启动TransactionService做彩信接收处理,最终进入NotificationTransaction调用HttpUtils.httpConnection()下载彩信。

 

posted @ 2016-07-18 13:38  neu_feng  阅读(342)  评论(0编辑  收藏  举报