彩信發送和接收關鍵流程

MMS 的設計基於WAP協議;

DataConnection 手機上網數據連接,其中5種常用類型的APN配置信息中就有MMS類型,即收發彩信時需要建立手機上網數據連接;


MMS發送和接收,就是TransactionService基於WAP的網絡傳輸層的處理機制,基於觀察者設計模式;

彩信發送的核心是TransactionService和它的4個子Transaction:

SendTransaction 發送短信

NotificationTransaction 彩信接收

RetrieveTransaction 彩信下載(彩信檢索)

ReadRecTransaction 發送彩信閱讀報告


public abstract class Transaction extends Observable 

public class TransactionService extends Service implements Observer, ITransactionServiceCallback 

public class SendTransaction extends Transaction implements Runnable

public class NotificationTransaction extends Transaction implements Runnable 

public class RetrieveTransaction extends Transaction implements Runnable 

public class ReadRecTransaction extends Transaction implements Runnable 


TransactionService就是彩信收發的Service,它會創建MMS類型的上網數據連接,並構造Transaction對象,並將其放入等待發送的彩信列表mPending中;

兩個彩信列表:

mProcessing 列表中保存正在執行的Transaction對象

mPending 列表中保存等待執行的Transaction對象


Transaction執行結束通知觀察者,就是TransactionService和RetryScheduler;

TransactionService檢查mProcessing和mPending兩個列表,當兩個列表同時爲空時,關閉MMS類型的數據連接,結束彩信傳輸服務;

RetryScheduler的作用是當Transaction執行失敗後,重新執行Transaction傳輸;


3GPP規範,彩信閱讀報告兩種形式:

1、以新彩信方式給服務器發送一條彩信;

2、發送ReadRecTransaction類中創建的PDU方式;


TransactionService爲核心的彩信傳輸機制

1、TransactionService服務檢查當前MMS數據連接是否有效

2、構造Transaction對象

掃描到待發送彩信,發送EVENT_TRANSACTION_REQUEST消息

3、處理Transaction對象

processTransaction處理邏輯有兩個:

1)創建MMS上網數據連接

2)保存Transaction對象到mPending待發送彩信列表中

創建MMS上網數據連接通過調用beginMmsConnectivity方法完成

4、MMS數據連接成功後調用process方法執行彩信傳輸

5、Transaction對象通知觀察者TransactionService

所有的Transaction對象保存在ProcessList列表中,可實現多線程傳輸


Transaction對象執行彩信傳輸

Transaction對象的process方法執行彩信傳輸,其子類SendTransaction和NotificationTransaction的process方法,分別實現了彩信的發送和接收傳輸過程;

SendTransaction.process  --> run --> sendPdu --> HttpUtils.httpConnection

NotificationTransaction.process  --> run --> getPdu --> HttpUtils.httpConnection


基於WAP PUSH的彩信接收與下載

彩信接收是基於WAP PUSH加上Transaction傳輸實現;

WAP PUSH通知有新彩信,Transaction將從彩信服務器上下載彩信;

當收到SMS短信的端口是2948時,SMSDispatcher會將接收到的PDU轉發給WapPushOverSms類的dispatchWapPdu處理;

dispatchWapPdu發送WAP_PUSH_RECEIVED_ACTION廣播通知MMS應用,啓動TransactionService,調用NotificationTransaction.process接收彩信;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章