歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android Mms專題

Android Mms專題

日期:2017/3/1 10:41:00   编辑:Linux編程

這裡的Mms名稱並不准確,因為它是一個應用程序的名字,這個應用程序是Android上面的信息應用程序,它即能處理短信SMS(Short Messaging Service),也能處理彩信(Multimedia MessagingService)。它是除電話程序外,另一個非常重要的手機系統核心應用程序,因為對於手機來講,最重要的二個功能就是電話功能和信息功能。在功能手機時代,是這樣,到了智能手機時代,仍然是這樣,如果一個手機不能打電話或者不能收發信息,那麼這個東西就不能叫做手機(磚頭?)。

為了不引起混淆,下面將Mms作為信息應用程序的簡稱,SMS則是短消息,MMS代表多媒體彩信,如不特殊說明信息將包括SMS和MMS。

與功能手機時代的信息應用一樣,Android的Mms也具有通用的信息程序所具有的功能,比如創建信息,收發信息,轉發信息,以及對於信息的管理,還有就是對於信息的一些配置。

與功能手機不同的是,信息不再是以傳統的方件夾方式來組織和管理(收信箱,發信箱,草稿箱,已發信息,短信,彩信等),信息以某種方式排序(時間,主題),把所有的信息羅列在相應的文件夾中(收到的信息在收信箱中,發出去的信息在已發信息中,草稿在草稿箱中,正在發送的信息在發信箱中),信息的組織方式有所改變。智能手機引入了對話(Thread)的概念,也即把二個聯系人之間的信息交互看成一個系列對話,二人之間的所有信息都列在對話之中。每個對話中,又以時間為序來管理具體的信息,以不同的著色來區分發出去的信息和收到的信息,在信息的旁邊還可以顯示聯系人的信息,如頭像,點擊頭像還可以有其他的快捷操作(比如撥號)。Mms管理一系列對話,從而沒有了傳統的各種文件夾。所以,對於Mms來講核心概念是對話,而非信息或文件夾。

同樣,智能手機也不再區分短信和彩信,而是把它們統一看作一個對話中的信息,當然,彩信和短信還是有區別的,主要在發送和顯示這塊,在信息管理理上不再區分彩信和短信(傳統手機都會專門的短信文件夾,彩信文件夾),也就是不會有彩信文件夾,短信文件夾,而是統一的以對話形式來管理它們,而在對話中,它們都是信息,只是裡面內容不同而已。

Mms中不再有收信箱,發信箱和草稿箱,而是以統一的對話列表來代替。一個對話中既包括收到的信息也包括發出去的信息,另外以狀態信息方式來標識每個對話的狀態,比如有無草稿,是否發送成功等。

如前面所說,對話是新一代信息程序的核心概念。對話是發生在二個聯系人之間,或是一個聯系與多個聯系人之間的信息交互,就好像IM(MSN, QQ)的聊天窗口一樣,二人的信息都顯示在窗口之中,但這些信息只發生在二人之間。以對話的方式來組織信息更加符合人們的使用習慣,也更加方便的查詢交往記錄。

因為對話是發生在二個聯系人之間的,所以對話與聯系人的關系是十分密切的。因為,一對話中的信息都屬於這二個聯系人之間的。所以,通常來講對話與聯系人是一一對應的關系,除非發給多個聯系人的信息。或者,對話是依賴於聯系人的,所以對話是不能夠被顯示的創建的,只能顯示的創建信息。當創建一個信息時,如果聯系人還沒有相應的對話,那麼會自動創建一個對話;如果已經有了的話,就進入相應的對話。

在對話列表可以管理對話,進行操作,比如進入對話,刪除對話,查看聯系人等。進入對話後,可以對信息進行操作,比如編輯,刪除,轉發等。

一些關鍵的概念

Thread對話---是指用戶與某個聯系人或某幾個聯系人之間的一系列信息交互。在Mms中,用Thread Id來標識和管理對話,Thread Id也即在數據庫表threads中的_id。

可能用Conversation是更易於理解。但是Thread本身就有對話的意思,某些論壇中的一個帖子在英語裡就叫Thread。Thread的詞典釋義是:”因特網上關於一個題目一連串的信息 (計算機用語)”,所以這裡用Thread,也是比較恰當的。

Conversation--是用來管理Thread對話的,Conversation是一個Thread對話的抽象出來數據結構,它能夠,從數據庫中查詢,刪除一個對話中的消息等,每一個Conversation有一個唯一的Thread Id。但是它也負責一些所有對話的管理,比如查詢所有的對話,刪除所有的對話等(這個應該是設計上面的問題)。

事實上,Conversation更多時候是充當前前對話的角色,比如在新新建信息時,編輯信息時,或是查看某個對話時,都會有一個Conversation對象存在在,以代表當前信息所處的對話。它是一個近似單鍵,都是通過Conversation的靜態方法來獲得Conversation對象,有一些其他的方法也是靜態的。

ConversationList--負責顯示和編輯所有的對話,以列表形式顯示所有的Thread,每一項代表一個Thread,通常也會顯示這個Thread的狀態,如有無草稿,信息發送/接收是否成功等。

Message--消息,泛指短信SMS和彩信MMS。因為不再區分短信和彩信,在對話列表,草稿管理和信息列表中它們都是一樣的,都是信息。Message的數據結構是MessageItem,它是一個純數據結構,裡面存儲著關於一個信息的所有數據,還有MessageListitem,它是一個View,專門用於在消息列表中顯示一個信息,裡面的數據都是從MessageItem獲取。它們統一都被ComposeMessageActivity,MessageListAdapter和MessageListView來管理。

WorkingMessage--當前消息,它是專門用於代表當前正在創建和編輯的信息的數據結構無論是短信還是彩信,在創建和編輯的時候都放在一個WorkingMessage對象裡面。這個對象也負責信息的發送,存儲和存儲為草稿。

Slideshow--在Mms應用裡面,彩信是以Slideshow幻燈片的形式來展示的。一個彩信可以有多張幻燈片,每張幻燈片上面可以有圖片,文字,音頻和視頻,可以設置每張幻燈片的浏覽時長,布局等,這裡的幻燈片與Office中的PowerPoint有幾分類似。幻燈片的數目限制是以彩信允許的附件大小為上限,這個也與每張幻燈片上面的媒體大小有關。可以這樣講MMS就是以幻燈片形式存在的,創建的時候是一張幻燈片一張幻燈片的編輯,收到的彩信或編輯完後,就可以一張張的放映浏覽幻燈片。

需要注意的是以幻燈片方式顯示彩信僅是應用程序層的處理方式,不同的信息應用程序會以不同的方式處理彩信,實際的彩信的數據是以標准的Pdu方式進行發送和接收,是應用程序在發送前把幻燈片轉化成為Pdu,並在接收後把Pdu轉化成為自己可識別的幻燈片。

Recipient接受人,這裡是指信息的接收者,要麼是一個陌生的電話號碼,要麼是一個陌生的電子郵件地址(彩信時),要麼就是手機聯系人數據庫中的聯系人。彩信和短信對接收人的數量都有限制,這個也是在Mms的Settings時面可以更改的。每一條信息要想發送成功,必須保證接收人是一個合法的聯系人,合法也是不同的手機有不同的定義,但通常來講,要麼與聯系人數據庫中的某個聯系人匹配,要麼是一個電話號碼,要麼是一個電子郵件地址,其他情況則視為不合法,對於有不合法接收人的信息,不會進行發送。管理聯系人的數據結構是Contact和ContactList,其中ContactList是一個以Contact為元素的ArrayList。Contact不但存儲有聯系人的一些信息,如名字,電話號碼等,它還能與聯系人數據庫進行同步,也就是它能保證它是一個合法的聯絡人,並在數據庫中存在。在信息發送前會先進行一次聯系人同步,以保證已有的聯系人是正確的。

因為Mms是手機核心程序,它與電話程序一樣要通過手機的Modem來實現無線通訊,也就是說它是依賴於SIM的。所以,如果手機中沒有SIM那麼是無法正常使用Mms的,不能接收和發送信息。

Copyright © Linux教程網 All Rights Reserved