文獻標識碼: A
文章編號: 0258-7998(2013)09-0139-03
當前移動設備上的傳統即時通信軟件(如QQ、MSN等)是基于TCP協議的即時通信軟件,已難以滿足個性化的社交需求。隨著GPS(Global Position System)系統的普及和移動互聯網的高速發展,基于地理位置的服務LBS(Location Based Service)式社交成為研究智能手機應用的熱點。LBS是指移動網絡通過GPS技術和電子地圖平臺的支持來獲取移動終端用戶的位置信息,為終端用戶提供相應服務的一種增值業務[1]。參考文獻[2]研究了匿名LBS的使用,參考文獻[3]討論了LBS應用的安全技術,參考文獻[4]提出一種基于Web 服務技術構建LBS 的體系結構。但是目前國內LBS僅在移動互聯網、社交網絡和電子商務的單獨應用較多,因此研究這三者的結合,是目前IT技術科研應用的重要領域,同時也將帶來巨大的經濟和社會效益。LBS移動社交資源共享SMSRL(Sharing Mobile Sociality Resource Based on LBS)平臺正是利用上述技術,完成一些即時性的實際社交活動,使單純的網絡信息交互,變成立體化的人際式交互。
1 SMSRL平臺概述
SMSRL平臺是Android手機上開發一個LBS交友應用程序,其功能促進了用戶的社交發展。該平臺利用Android的GPS定位數據,結合百度地圖開放API與極光推送API,使移動用戶之間,特別是附近的用戶之間實現更有價值的社交活動,如幫助完成某些任務、與附近的好友聊天等。
SMSRL平臺的開發嚴格遵循軟件工程的原則,開發分為如下步驟:
(1) 需求分析; (2)設計客戶端UI;(3)設計數據存儲,創建數據庫和表; (4)設計服務器端與客戶端交互;(5)實現客戶端功能界面與服務器端的邏輯處理; (6)客戶端程序打包、簽名并發布。
2 SMSRL平臺需求分析
SMSRL平臺通過手機定位技術,認識了身邊的有緣人,可與熟悉的或陌生的朋友打招呼、聊天、分享位置等信息。SMSRL的功能結構圖如圖1所示,主要功能包括:任務管理(包括發布任務、我的任務管理、附近任務列表等)、好友的管理(包括顯示好友和自己的最新動態信息、查找附近好友、聊天)及對系統、任務的設置。
SMSRL的主要參與者包括發布者和搜索者,涉及的主要用例有:發布任務、狀態管理、搜索任務、任務競標等,系統用例圖如圖2所示。
3 SMSRL平臺設計
3.1 架構設計
Andriod是目前流行的智能手機終端操作系統和移動應用開發平臺,由操作系統、中間件、用戶界面和應用軟件組成,是一個開放而完整的移動“軟件棧”[5]。SMSRL平臺的設計借鑒了參考文獻[6-9],其設計思路是:利用Android平臺的GPS定位模塊提供位置信息,利用極光推送API實現消息推送,調用百度地圖API實現地圖描繪,利用Android應用程序框架實現網絡通信的功能。客戶端點擊界面產生觸屏事件,發送請求給監聽Service服務類,Service處理請求后調用HTTPClien組裝請求URL,發送并異步接收數據刷新界面。服務器端Strust2框架接收到URL請求調用對應Action處理數據,Action再調用Hibernate做數據持久化,按照請求調用推送框架,組裝推送消息,實現實體類推送。
3.2 SMSRL平臺數據庫設計
SMSRL平臺涉及的實體主要有用戶、活動、好友和任務,這些實體關聯又產生了活動參與表、用戶參與表、在線用戶列表等。同時為了提高存取速度,將用戶、活動、好友和任務實體的相關圖片存放到相應的圖片表中。服務器端數據庫模型如圖3所示。
3.3 MSRL平臺的關鍵技術
3.3.1 服務器端與客戶端交互協議設計
Android客戶端的聯網協議采用Http的方式,而由于Android 內部已經集成了Apache Http這個類,所以本設計采用了HttpClient的方式做Http連接。自定義HttpClient類內部采用單例模式獲取HttpClient對象,發起Post請求。而每一種消息經處理后返回Json格式字符串,并且將其實例化為對應的消息體對象,Entity為統一的消息接口,將請求返回的輸入流傳進,返回以UTF-8編碼的Sring類型對象。獲得返回值之后,在MyService作處理,并通過Android的Handle方式異步刷新UI作出反應。
3.3.2 異步加載最新信息的設計
由于Android自帶的Listview顯示風格單調,而且不具備下拉刷新與上推加載的功能,本平臺設計并實現了比較常用的下拉刷新異步加載圖片的ListView控件。在列表顯示界面中,可以按住列表項向下拖動加載最新消息,在列表最后的一項,通過向上拖動或者點擊加載更多消息,并伴隨加載動畫。設計的XListView控件繼承了Android平臺的ListView,其相應的類圖如圖4所示。
3.3.3 圖像加載功能的實現
(1) 圖片獲取
由于Android的文件存儲于網絡,因而使用異步加載的方式來顯示控件可以給用戶帶來更好的體驗。在Android應用中,如果UI線程5 s內沒響應,就會拋出無響應異常,在遠程獲取較大圖片資源時,這種異常很容易導致應用失敗。要避免這種問題的產生,將啟動一個新的線程來獲取資源,完成后通過Handler機制發送消息,并在UI線程中處理消息,從而達到在異步線程中獲取圖片的效果。
(2) 圖片保存
在每次獲取圖片資源時,都要重新進行遠程下載,占用內存太多,而且加載速度慢,特別是較大的圖片資源,甚至會導致內存溢出。為了提高加載速度、節省流量,將圖片資源保存在本地手機的SDCard上,需要時可直接從SDCard讀取。SDCard空間畢竟有限,因此采用最近最久未使用(LRU)算法,當空間不足時,根據LRU規則刪除一些最近沒有被用戶使用的資源即可。
利用Android通用框架,結合百度地圖與極光推送的開放API,實現了LBS社交資源共享平臺。在系統的設計中充分考慮了Android系統的易移植性、高銷量等優點,集中使用了Android系統的各接口API模塊,特別是異步加載最新信息和圖片資源下載的設計和實現,使系統的運行效率有了較大的提升。該平臺的廣泛應用,徹底加強了社交網絡的真實影響。
參考文獻
[1] 李海燕, 張巖. 移動通信網絡的移動臺定位技術及應用[J].郵電設計技術,2006(3):27-34.
[2] MARCP G, DIRK G. Anonymous usage of location-based services through spatial and temporal cloaking[C]. International Conference on Mobile Systems, Applications, and Services-MobiSys,2003.
[3] Yang Jie, Chen Yingying, SANJAY M, et al. Securing mobile location-based services through position verification leveraging key distribution[C].Wireless Communications and Networking, IEEE Conference-WCNC, 2012.
[4] 周腳根,邊馥苓.一種基于位置的移動服務系統的設計與實現[J].武漢大學學報(信息科學版), 2006,31(4):352-355.
[5] 姚昱曼,劉衛國.Andriod的架構與應用開發研究[J].計算機系統應用,2008(11):110-112.
[6] 張志清.基于Android的移動社交產品客戶端設計與實現[D].北京:北京交通大學,2012.
[7] 劉卜.移動社交網絡平臺的研究與實現[D]. 北京: 北京郵電大學,2011.
[8] 許穎,魏峰遠.移動GIS關鍵技術及開發模式探討[J]. 測繪與空間地理信息,2008,31(4):45-47.
[9] 羅英偉,黃寶琦,汪小林,等.輕量級WebGIS系統PKGML[J].計算機輔助設計與圖形學學報,2005,17(04):852-861.