劉強(qiáng) 吳文高 熊星星
摘 要: 微博是伴隨著移動(dòng)互聯(lián)網(wǎng)和智能手機(jī)的廣泛普及所產(chǎn)生的一個(gè)新穎的社交媒體,成為大眾日常生活的一部分。文章提出一個(gè)基于Android移動(dòng)終端的微博客戶端系統(tǒng)設(shè)計(jì)方案,采用OAuth認(rèn)證,與微博服務(wù)端連接,實(shí)現(xiàn)以微博為中心的多應(yīng)用機(jī)制,包含微博發(fā)布、瀏覽、轉(zhuǎn)發(fā)、評論、收藏等全面的個(gè)性化功能。
關(guān)鍵詞: 微博客戶端; Android; OAuth認(rèn)證; 微博服務(wù)端
中圖分類號:TP316.8 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2015)05-50-02
Abstract: Micro-blog is a new social media with a wide popularization of mobile Internet and intelligent mobile phone products has become a part of people's daily life. This paper presents a scheme of mobile micro-blog client terminal system based on Android, using OAuth authentication, connected with the micro-blog server, realizes the multi application mechanism to micro-blog as the center, contains micro-blog release, browse, comment, forwarding, collections and other personalized comprehensive functions, and has the realistic meaning.
Key words: MicroBlog clien; Android; OAuth authentication; microblog server
0 引言
隨著移動(dòng)互聯(lián)網(wǎng)和Android智能手機(jī)的普及,越來越多的人喜歡使用移動(dòng)終端來查看自己的微博,朋友圈等,使其成為日常生活的一部分。因此,設(shè)計(jì)一款輕便的、可靠的、個(gè)性化的微博客戶端系統(tǒng),即以微博為中心,實(shí)現(xiàn)微博發(fā)布、瀏覽、轉(zhuǎn)發(fā)、評論、收藏等全面的功能,顯得很必要。
1 基于Android的微博客戶端系統(tǒng)總體設(shè)計(jì)
微博作為一種社交媒體,使用它的用戶主要目的在于借助微博快速發(fā)布自己最新動(dòng)態(tài)或者其他消息。為了使Android智能手機(jī)用戶能夠方便查閱自己的微博,實(shí)現(xiàn)以微博為中心的多應(yīng)用機(jī)制,遵循軟件工程的開發(fā)方式,在調(diào)研的基礎(chǔ)上,將所設(shè)計(jì)的基于Android的微博客戶端系統(tǒng),主要的功能模塊劃分為以下幾個(gè)方面。
⑴ 用戶登錄模塊
建立以手機(jī)作為終端登錄微博系統(tǒng)的首界面。進(jìn)入微博系統(tǒng)時(shí),用戶需要輸入用戶名和密碼,檢查用戶名及其密碼的有效性。登錄有效則存入手機(jī)數(shù)據(jù)庫,并進(jìn)入微博系統(tǒng),否則彈出錯(cuò)誤信息。在手機(jī)終端只需要首次輸入用戶名和密碼就可以了,以后直接從數(shù)據(jù)庫調(diào)用進(jìn)入微博系統(tǒng)[1]。
⑵ 微博功能模塊
用戶登錄之后進(jìn)入個(gè)人微博主頁面,設(shè)置為五個(gè)部分:微博發(fā)表、評論、轉(zhuǎn)發(fā)、收藏和分享。
微博發(fā)表:發(fā)表屬于自己的微博。
微博評論:對注冊用戶所關(guān)注的用戶進(jìn)行評論以及回復(fù)。
微博轉(zhuǎn)發(fā):對注冊用戶關(guān)注的用戶所發(fā)的微博進(jìn)行轉(zhuǎn)發(fā),從而變?yōu)樽约旱奈⒉?/p>
微博收藏:對注冊用戶關(guān)注的用戶所發(fā)的微博進(jìn)行收藏,從而使所收藏的微博進(jìn)入注冊用戶的收藏夾中。
微博分享:對注冊用戶關(guān)注的用戶所發(fā)的微博進(jìn)行分享,可以分享到主流的網(wǎng)站,如qq空間、新浪微博、天涯論壇等等。
⑶ 好友粉絲模塊
注冊用戶登錄進(jìn)入個(gè)人主頁面后,尋找自己好友的場所,其內(nèi)容就是當(dāng)注冊用戶在其他用戶中點(diǎn)擊了“加粉”之后,該用戶就已經(jīng)成為了注冊用戶的粉絲。同樣的規(guī)則,如果其他用戶對注冊用戶點(diǎn)擊了“加粉”,那么注冊用戶也成為了其他用戶的粉絲。
⑷ 搜索功能模塊
用戶登錄以后,主要針對以微博和用戶這兩類對象的查找。在“發(fā)現(xiàn)”界面,輸入所要查找的微博(用戶)的關(guān)鍵字,進(jìn)行微博(用戶)的查找。
⑸ 消息模塊
在用戶登錄后,提供的相關(guān)消息由@我的、評論我的、粉絲三部分構(gòu)成,查看自己或者是粉絲的基本信息,如用戶頭像、用戶名、所在地、用戶網(wǎng)站、用戶宣言、用戶關(guān)注的人、關(guān)注用戶的人、該用戶的所有微博、該用戶收藏的所有微博等。
⑹ 微吧
類似貼吧,用戶可關(guān)注自己感興趣的微吧,在相關(guān)微吧內(nèi)發(fā)帖子、評論和點(diǎn)贊相關(guān)帖子。
⑺ 會(huì)議討論組
類似QQ的群功能,是專為會(huì)議或臨時(shí)討論而建立,基于即時(shí)聊天,無需加入好友信息[2]。在舉行會(huì)議時(shí),每個(gè)人點(diǎn)擊會(huì)議按鈕,接收信息,系統(tǒng)自動(dòng)將一定范圍內(nèi)的人加入到一個(gè)臨時(shí)討論組中,在該討論組中,可以上傳文件,發(fā)布文件,以供參加會(huì)議的人員瀏覽,也可以進(jìn)行相關(guān)話題的討論。
基于Android的微博客戶端系統(tǒng)是通過手機(jī)客戶端與微博服務(wù)器進(jìn)行交互,進(jìn)行請求和回傳數(shù)據(jù),是一種典型的客戶機(jī)/服務(wù)器方式,其業(yè)務(wù)流程設(shè)計(jì)如圖1所示。
2 微博客戶端數(shù)據(jù)的存儲(chǔ)與管理
微博客戶端系統(tǒng)的數(shù)據(jù)存儲(chǔ)與管理采用Sqlite數(shù)據(jù)庫。由于客戶端系統(tǒng)中實(shí)際涉及到的信息是通過和服務(wù)器交互得到的,所以設(shè)計(jì)一個(gè)表User,它所存儲(chǔ)的數(shù)據(jù)是放在Android終端的Sqlite數(shù)據(jù)庫中,用于存儲(chǔ)用戶登錄時(shí)所需要的信息及OAuth認(rèn)證通過后所需的一些參數(shù)信息。
為了確保用戶個(gè)人信息的保密性,在手機(jī)客戶端與服務(wù)器進(jìn)行用戶個(gè)人數(shù)據(jù)傳遞之前,使用OAuth協(xié)議對第三方開發(fā)軟件屏蔽用戶的賬號和密碼信息,只有在獲得用戶許可情況下,客戶端才能從服務(wù)器下載和向服務(wù)器上傳用戶的微博數(shù)據(jù)[3]。顯示由微博服務(wù)器傳回的數(shù)據(jù)時(shí),使用JSON對其進(jìn)行解析處理。在顯示數(shù)據(jù)時(shí),恰當(dāng)?shù)氖褂眠m配器模式,可以將顯示界面設(shè)計(jì)的更加友好。
3 基于Android的微博客戶端系統(tǒng)特色
在實(shí)現(xiàn)微博基本功能的基礎(chǔ)上,著重優(yōu)化系統(tǒng)的網(wǎng)絡(luò)訪問速度和節(jié)約網(wǎng)絡(luò)流量,主要特色體現(xiàn)在以下四個(gè)方面。
⑴ Android數(shù)據(jù)存儲(chǔ)技術(shù),將已瀏覽數(shù)據(jù)保存到數(shù)據(jù)庫中,下次可以在無網(wǎng)絡(luò)的情況下瀏覽數(shù)據(jù),這樣可以提高軟件的加載速度和節(jié)省網(wǎng)絡(luò)流量[4]。通過使用Android自帶的Sqlite數(shù)據(jù)庫,來保存微博信息。例如,個(gè)人的信息、基本的評論和回復(fù)的記錄數(shù)據(jù),以及聽眾和自己關(guān)注的人等信息,這些信息均作為緩存數(shù)據(jù)處理,避免每次都要從服務(wù)器上獲取數(shù)據(jù),加大網(wǎng)絡(luò)流量的開銷,對于不經(jīng)常變化的數(shù)據(jù),保存在本地即可,用到時(shí)直接從本地加載顯示。采用開放的OAuth協(xié)議為用戶資源的授權(quán)提供一個(gè)安全的、開放而又簡易的標(biāo)準(zhǔn)。
⑵ 采用圖片緩存技術(shù)(圖片異步加載)。將從網(wǎng)絡(luò)上下載的圖片保存到手機(jī)內(nèi)存上,下次再獲取相同圖片時(shí),先從內(nèi)存卡上查找對應(yīng)圖片,如果有就不加載網(wǎng)絡(luò)圖片,如果沒有則加載網(wǎng)絡(luò)圖片,并保存到手機(jī)上。對于從網(wǎng)上下載到手機(jī)終端的圖片,建立一個(gè)線程池,存放線程,在需要加載圖片時(shí),啟動(dòng)一個(gè)線程,訪問網(wǎng)絡(luò),獲取相應(yīng)的圖片[5]。隨后再轉(zhuǎn)交給UI線程刷新界面顯示圖片。
⑶ 數(shù)據(jù)模型的封裝。對于從網(wǎng)絡(luò)上獲取的json數(shù)據(jù)進(jìn)行解析處理,抽離出不同的實(shí)體模型,方便以面向?qū)ο蟮姆绞介_發(fā),比較好維護(hù)。
⑷ 任務(wù)分離。主線程(UI線程)主要是負(fù)責(zé)控制UI界面的顯示、更新和控件交互。在Android程序創(chuàng)建之初,一個(gè)Process呈現(xiàn)的是單線程模型,所有的任務(wù)都在一個(gè)線程中運(yùn)行。因此,UI線程所執(zhí)行的每一個(gè)函數(shù),所花費(fèi)的時(shí)間都應(yīng)該是越短越好。而其他比較費(fèi)時(shí)的工作(訪問網(wǎng)絡(luò),下載數(shù)據(jù),查詢數(shù)據(jù)庫等)交由子線程去執(zhí)行,以免阻塞主線程,即UI線程只負(fù)責(zé)刷新界面。
4 結(jié)束語
本文以微博的多應(yīng)用需求為出發(fā)點(diǎn),基于Android移動(dòng)終端設(shè)計(jì)微博客戶端解決方案,采用Sqlite數(shù)據(jù)庫存儲(chǔ)、OAuth認(rèn)證等數(shù)據(jù)管理技術(shù),實(shí)現(xiàn)與微博服務(wù)端數(shù)據(jù)庫連接,驗(yàn)證用戶名和密碼的一致性和正確性,強(qiáng)化了微博應(yīng)用的安全性設(shè)計(jì)。采用圖片緩存、json數(shù)據(jù)模型封裝、線程式任務(wù)分離等技術(shù),實(shí)現(xiàn)Android移動(dòng)終端的異步加載和離線瀏覽功能,以提升微博客戶端的網(wǎng)絡(luò)訪問速度和減少網(wǎng)絡(luò)流量。在實(shí)現(xiàn)微博發(fā)布、瀏覽、轉(zhuǎn)發(fā)、評論、收藏等基本功能的基礎(chǔ)上,實(shí)現(xiàn)了微吧和會(huì)議討論組等個(gè)性化功能,該設(shè)計(jì)應(yīng)有廣泛的應(yīng)用前景。對于微博客戶端的同步功能,即同一個(gè)微博賬號在不同終端(Android、PC終端)登錄后,其微博歷史信息同步遷移,便于微博信息的共享和查閱,這個(gè)同步功能還有待于后續(xù)進(jìn)一步設(shè)計(jì)和實(shí)現(xiàn)。
參考文獻(xiàn):
[1] 王世江,佘志龍,陳昱勛等.Google Android SDK開發(fā)范例大全[M].人民郵電出版社,2011.
[2] 趙宏偉.Android NDK開發(fā)環(huán)境實(shí)現(xiàn)與應(yīng)用[J].電腦知識與技術(shù),2010.35:3261-3263
[3] 彭艷,楊歐.Android平臺的數(shù)據(jù)存儲(chǔ)技術(shù)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012.5:192-194
[4] 白文江.基于Android平臺的移動(dòng)應(yīng)用開發(fā)研究[J].太原大學(xué)學(xué)報(bào),2011.3:46-48
[5] 李楊,馮剛,李亮.基于Android的多媒體應(yīng)用開發(fā)與研究[J]. 計(jì)算機(jī)與現(xiàn)代化,2011.4:92-93