Android 簡訊模組分析(五) MMS之多媒體訊息的發送與接收

來源:互聯網
上載者:User

一. 多媒體訊息發送:

  多媒體訊息比簡訊麻煩很多。從sendMmsWorker函數的參數就可以看出來:(conv, mmsUri, persister, slideshow, sendReq) 上下文,uri,PduPersister(多媒體訊息是用pdu的),slideshow 包含了所有的多媒體訊息資訊,sendreq包含了mime封裝mms時的headers,也包括了from,to等資訊 。 

(1)函數 sendMmsWorker: 

private void sendMmsWorker(Conversation conv, Uri mmsUri,        PduPersister persister, SlideshowModel slideshow, SendReq sendReq) {   .....}   

     前面挺長一段代碼,檢查這個對話(conversation)之前還有沒有未發送的資訊。需要提到一下MessageStatusListener,這個Interface介面定義在WorkingMessage.java裡,而實現是在ComposeMessageActivity.java中,所以前者在一些狀態改變的時候可以很方便的調用後者的一些函數作相應的改動。MessageStatusListener中主要包括:    onProtocolChanged多媒體訊息簡訊互切換,onAttachmentChanged附件改變,onPreMessageSent發訊息前,onMessageSent發訊息後。這裡調用了onPreMessageSent這個監聽函數, 然後ComposeMessageActivity 就會調用resetMessage函數 ,這個函數會調整顯示,focus,軟鍵盤等。 

     檢查mmsUri。如果這個uri是空的話,直接造一個新的uri繼續發送。這個createDraftMmsMessage(persister, sendReq, slideshow);函數可以包含所有發送需要的資訊, 如果uri不為空白,調用的是updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq); 總之功能是把這個將發送的mms,存disk了,也就是存draft了。

    deleteDraftSmsMessage 刪除草稿 

     建立一個MmsMessageSender,用這個sender來調用sendMessage函數

     如果函數傳回值表示剛剛發送出去的其實是一個簡訊sms,而已。於是要把資料庫裡存著的draft刪掉。

    調用onMessageSent這個監聽函數,調用ComposeMessageActivity的onMessageSent,這個函數功能是重新顯示conversationList。 

(2)createDraftMmsMessage(persister, sendReq, slideshow); 和 updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq); 這兩個函數從本質上講是一樣的,把附件的東西以pdubody的形式存下來,另外就是更新uri。

3)MmsMessageSender.java類,在mms/transaction下面,實現了MessageSender介面,這個介面sendMessage並返回boolean的值。若發送的是mms,返回true。若發送的是sms,返回false。

單卡手機多媒體訊息發送的時序圖1.1所示

雙卡手機多媒體訊息發送的時序圖1.5所示:

二.多媒體訊息接收

多媒體訊息接收的時序圖1.3所示:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.