陳岑,沈奇威,廖建新
(1 北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國家重點實驗室,北京 100876; 2 東信北郵信息技術(shù)有限公司,北京 100191)
基于Android的習(xí)慣培養(yǎng)應(yīng)用的設(shè)計與實現(xiàn)*
陳岑1,2,沈奇威1,2,廖建新1,2
(1 北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國家重點實驗室,北京 100876; 2 東信北郵信息技術(shù)有限公司,北京 100191)
Android是以Linux為核心的手機(jī)操作平臺,本文介紹了一款基于Android系統(tǒng)的名為 “習(xí)以為?!钡牧?xí)慣培養(yǎng)應(yīng)用的設(shè)計與開發(fā),包括應(yīng)用的總體設(shè)計、模塊分析和關(guān)鍵技術(shù)點。此外,還結(jié)合了社交化和游戲化的思路來提高用戶粘度,并且對未來的設(shè)計與優(yōu)化進(jìn)行展望。
Android;習(xí)慣培養(yǎng);習(xí)以為常;游戲化
近年來,Google智能手機(jī)平臺Android得到了手機(jī)行業(yè)及客戶的普遍認(rèn)可[1],呈爆炸性的趨勢發(fā)展,為移動運營商、手機(jī)制造商、軟件開發(fā)商及客戶提供了無限的發(fā)展空間[2],使市場上不斷涌現(xiàn)出大量的基于Android平臺的軟件和增值服務(wù)。
目前市面上有不少習(xí)慣培養(yǎng)的網(wǎng)站,但是由于網(wǎng)站本身的局限性,不能讓用戶可以隨時隨地的記錄下自己習(xí)慣培養(yǎng)的過程。故由此角度出發(fā),利用手機(jī)的隨時、隨地、隨身的特性,開發(fā)了一款名為“習(xí)以為?!钡牧?xí)慣培養(yǎng)的Android應(yīng)用,突破了碎片化的限制,應(yīng)用可以隨時提醒用戶進(jìn)行習(xí)慣簽到,用戶也可以隨時隨地記錄下自己的習(xí)慣培養(yǎng)過程。
2.1 總體設(shè)計
這是一款意在幫助用戶堅持培養(yǎng)好習(xí)慣的應(yīng)用,主要功能是為用戶推薦好習(xí)慣;用戶選擇希望堅持的好習(xí)慣,并定制詳細(xì)的培養(yǎng)計劃;通過簽到的方式來記錄習(xí)慣培養(yǎng)的過程。為了鼓勵和督促用戶的堅持,應(yīng)用引入了社交化和游戲化的思路。
總體結(jié)構(gòu)如圖1所示。按照功能劃分,應(yīng)用主要由服務(wù)器交互模塊、數(shù)據(jù)模塊、功能模塊和UI模塊這四大模塊組成。
服務(wù)器交互模塊負(fù)責(zé)檢查網(wǎng)絡(luò)環(huán)境以及與服務(wù)器端進(jìn)行數(shù)據(jù)的交互,包括數(shù)據(jù)信息的獲取以及上傳,例如獲取好友信息以及提交習(xí)慣簽到。
圖1 習(xí)以為常總體設(shè)計圖
數(shù)據(jù)模塊包括應(yīng)用中的SQLite數(shù)據(jù)庫、Preference存儲和文件存儲。數(shù)據(jù)模塊統(tǒng)一管理了應(yīng)用中的數(shù)據(jù)處理及緩存。
功能模塊包含了應(yīng)用的核心功能——用戶、習(xí)慣和簽到這3個主要功能的處理。
UI模塊則是面向用戶,獲取用戶的操作,并以友好的方式將用戶所需的信息呈現(xiàn)給用戶。
這四個模塊分工合作,完成了整個應(yīng)用的良好運作。
2.2 模塊分析
2.2.1 服務(wù)器交互模塊
這個模塊主要是向其他模塊提供服務(wù)以及與服務(wù)器進(jìn)行交互。主要分為HTTP請求模塊和HTTP結(jié)果解析模塊。
HTTP是應(yīng)用層協(xié)議,用于分布式協(xié)作超媒體信息系統(tǒng),是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)。HTTP被廣泛地運用于移動終端與服務(wù)器端的交互,它是一個基于“請求-響應(yīng)”模式的協(xié)議,一個客戶機(jī)與服務(wù)器建立連接后,發(fā)送一個請求給服務(wù)器。服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息[3]。
HTTP請求模塊統(tǒng)一封裝了應(yīng)用與服務(wù)器交互的接口,使得其他模塊可以方便快捷地向服務(wù)器發(fā)起請求獲取數(shù)據(jù),而不用考慮細(xì)節(jié)。請求的方式包括GET和POST兩種。
HTTP結(jié)果解析模塊采用的是輕量級的數(shù)據(jù)傳輸格式JSON,載荷高、易于通過編碼進(jìn)行解析的特點使其非常適合移動互聯(lián)網(wǎng)領(lǐng)域的數(shù)據(jù)傳輸。解析模塊根據(jù)獲取的結(jié)果類型,將結(jié)果封裝到對應(yīng)的對象結(jié)構(gòu)中,方便其他模塊的調(diào)用使用。例如,請求獲取習(xí)慣庫信息后,將得到的習(xí)慣信息解析封裝到習(xí)慣對象中。
2.2.2 數(shù)據(jù)模塊
數(shù)據(jù)模塊對應(yīng)的正是Android手機(jī)應(yīng)用中數(shù)據(jù)存儲的3種主要方式,即SQLite數(shù)據(jù)庫、Preference存儲和文件存儲[4]。該模塊的數(shù)據(jù)來源主要是服務(wù)器交互模塊提供的服務(wù)器數(shù)據(jù)以及本地的緩存數(shù)據(jù),數(shù)據(jù)處理后則提供給功能模塊進(jìn)行下一步操作。
(1) SQLite數(shù)據(jù)庫
Android中通過SQLite數(shù)據(jù)庫引擎來實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)存儲, 從而可以高效的存儲獲取信息[5]。在本應(yīng)用中,將用戶信息以及消息信息存儲在SQLite中,便于啟動時快速的獲取用戶信息實現(xiàn)自動登錄,以及及時呈現(xiàn)消息列表。
(2)Preference存儲
Preference提供了一種輕量級的數(shù)據(jù)存儲方式,應(yīng)用場合主要是數(shù)據(jù)比較少、單一的配置信息。它以“鍵-值”對的方式將數(shù)據(jù)保存在一個XML配置文件中[6]。應(yīng)用中對Preferences的存取方式進(jìn)行了封裝,優(yōu)化了整體的代碼架構(gòu)。
該存儲方式主要應(yīng)用于記錄用戶的設(shè)置選擇以及操作習(xí)慣,例如記錄用戶是否選擇將習(xí)慣的簽到信息分享至新浪微博,之后再簽到的時候就會默認(rèn)呈現(xiàn)用戶之前的選擇,為用戶提供更好的使用體驗。
(3)文件存儲
除了SQLite數(shù)據(jù)庫和Preference存儲這兩種方式存儲之外,文件存儲也是Android平臺重要的存儲方式。文件存儲方式適用于文本文件、PDF文件、音視頻文件和圖片等。應(yīng)用中的圖像以及習(xí)慣、簽到等信息由于數(shù)據(jù)較大,所以采用文件存儲的方式進(jìn)行緩存。
這些信息的緩存可以大大節(jié)約用戶的流量損耗,并且縮短信息呈現(xiàn)至用戶的耗時,大大優(yōu)化了用戶體驗。同時考慮到長時間緩存造成的耗費空間的問題,我們也在應(yīng)用中為用戶提供清除緩存的功能,用戶可以根據(jù)自己的需要選擇性的刪除緩存。
2.2.3 功能模塊
這是應(yīng)用的核心模塊,包含了最主要的功能,以及相關(guān)的處理流程和處理邏輯。該模塊從UI模塊獲取用戶的需求,從數(shù)據(jù)模塊中獲取相應(yīng)的數(shù)據(jù),再返回給UI模塊呈現(xiàn)給用戶。該模塊主要劃分為簽到、習(xí)慣、用戶模塊。
(1)習(xí)慣模塊
該模塊提供了如下功能:系統(tǒng)習(xí)慣庫的查看、用戶習(xí)慣的新建或者加入、自己或者其他用戶的習(xí)慣查看、習(xí)慣修改等功能。
通過數(shù)據(jù)統(tǒng)計與分析,我們?yōu)橛脩敉扑]了一些優(yōu)質(zhì)的習(xí)慣,包括學(xué)習(xí)、養(yǎng)生、工作、運動和其他這5大分類,用戶可以看到每個習(xí)慣的概況以及正在堅持該習(xí)慣的其他用戶的動態(tài)。此外,用戶還可以根據(jù)自己的需求創(chuàng)建新的習(xí)慣。
如圖2所示,用戶在加入習(xí)慣時,需要設(shè)定每一個習(xí)慣的詳細(xì)目標(biāo)、每周計劃的完成次數(shù)以及可見權(quán)限,成功加入習(xí)慣之后,應(yīng)用還會推薦用戶設(shè)置提醒鬧鐘以及邀請好友一起來培養(yǎng)這個習(xí)慣。
如圖3所示,用戶正在堅持的習(xí)慣不僅僅展示了上述信息,還包括當(dāng)前進(jìn)度的展示、每周完成的情況等詳細(xì)數(shù)據(jù),讓用戶從多角度對自己的進(jìn)度進(jìn)行評估。
圖2 習(xí)慣定制界面
圖3 用戶習(xí)慣列表界面
(2)簽到模塊
該模塊提供如下功能:對習(xí)慣的簽到、簽到詳情的呈現(xiàn)、多種簽到流的呈現(xiàn)以及對簽到的鼓勵及評論等。
如圖4所示,應(yīng)用中為習(xí)慣的每一次簽到提供了多種類型的可選信息,包括文字、圖片、是否保存地址、是否發(fā)送至新浪微博、是否@好友這些內(nèi)容。用戶可以根據(jù)自己的需求進(jìn)行選擇,讓用戶可以全面的記錄下自己每一次的習(xí)慣簽到。
如圖5所示,應(yīng)用中以信息流的形式來呈現(xiàn)簽到信息,類型包括了熱門動態(tài)、最新動態(tài)、好友動態(tài)、某個習(xí)慣下參與者的動態(tài)等,讓用戶可以多維度的查看簽到信息。此外,用戶還可以對每條簽到進(jìn)行鼓勵和評論。
圖4 習(xí)慣簽到界面
圖5 簽到動態(tài)界面
(3)用戶模塊
該模塊提供了如下功能:優(yōu)質(zhì)用戶及微博好友的推薦、用戶的交互等功能。
應(yīng)用引入了新浪微博的用戶信息,讓用戶可以在應(yīng)用內(nèi)便捷的與新浪微博好友進(jìn)行互動,同時好友間的互動行為,例如評論、鼓勵和提醒簽到,也是對用戶堅持習(xí)慣的一個督促。
2.2.4 UI模塊
該模塊是與用戶直接交互的部分,總體框架采用左側(cè)抽屜拉出的方式來組織菜單結(jié)構(gòu),并在首頁中嵌套基于Tab的菜單結(jié)構(gòu),這種結(jié)構(gòu)可以讓用戶很便捷的點取最重要的功能,同時將比較次要的功能隱藏在左側(cè)抽屜中,不占主要內(nèi)容的呈現(xiàn)空間。
3.1 圖像緩存機(jī)制
Android主要應(yīng)用在嵌入式設(shè)備當(dāng)中,而嵌入式設(shè)備由于一些條件限制,通常都不會有很高的配置,特別是內(nèi)存是比較有限。
在應(yīng)用中會需要呈現(xiàn)大量的圖片,圖片獲取的機(jī)制是首先判斷是否已經(jīng)緩存在內(nèi)存中,如果內(nèi)存中沒有,再去SD中讀取,如果兩者都沒有則從網(wǎng)上采取異步的方式獲取。
在應(yīng)用中使用SoftReference<Bitmap>軟存儲機(jī)制來對圖片進(jìn)行統(tǒng)一管理。SoftReference即對象的軟引用。如果一個對象具有軟引用,內(nèi)存空間足夠,垃圾回收器就不會回收它;如果內(nèi)存空間不足了,就會回收這些對象的內(nèi)存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。軟引用可用來實現(xiàn)內(nèi)存敏感的高速緩存。使用軟引用能防止內(nèi)存泄露,增強(qiáng)程序的健壯性。
3.2 Fragment實現(xiàn)代碼復(fù)用
在應(yīng)用中,每個界面會根據(jù)當(dāng)前的需求,對習(xí)慣、簽到、用戶模塊進(jìn)行組合呈現(xiàn),而每個模塊都會根據(jù)不同的參數(shù)設(shè)置,有不同的具體呈現(xiàn)。在這里我們引入了設(shè)計模式中的策略模式,并通過 Android中的Fragment類來實現(xiàn)這個功能。Fragment是Android honeycomb 3.0新增的概念,與Activity類十分相似,但是可以在Activity類中復(fù)用不同的Fragment類,這樣實現(xiàn)了界面和功能的復(fù)用,可以快速拓展新功能和迭代新版本。
例如,在圖6中,習(xí)慣列表HabitsFragment、簽到動態(tài)ChecksFragment和好友列表UsersFragment組成了個人信息界面PersonActivity。而在圖7中,使用詳細(xì)進(jìn)度CalendarFragment和簽到動態(tài)ChecksFragment又可以組成習(xí)慣詳情界面HabitActivity。
圖6 個人信息界面
圖7 習(xí)慣詳情界面
本節(jié)將從游戲激勵大腦的幾種方式入手[7],介紹應(yīng)用中功能的設(shè)計。
4.1 用經(jīng)驗值條來度量進(jìn)程
網(wǎng)絡(luò)游戲中會經(jīng)??吹綄⑼婕抑鸺壏旨?,以進(jìn)度條的方式呈現(xiàn)玩家的成長,玩家在不斷肯定自我的過程中有更大的前進(jìn)動力。借鑒這個思路,我們記錄用戶在每一個習(xí)慣培養(yǎng)中的進(jìn)度,包括總進(jìn)度和每周進(jìn)度,并通過數(shù)字以及進(jìn)度條的方式將這些信息最直觀的呈現(xiàn)給用戶,讓用戶清晰的了解到自己當(dāng)前的狀況,激勵用戶更好的去堅持培養(yǎng)習(xí)慣。
4.2 把任務(wù)分割成可計量的短期和長期目標(biāo)
游戲中經(jīng)常把目標(biāo)分成很多小任務(wù),讓用戶可以較為簡單的完成這些小任務(wù),逐步達(dá)到最后的目標(biāo)。借鑒該思路,我們將每個習(xí)慣劃分為培養(yǎng)、鞏固和完成階段,讓用戶從一開始就對總體有清晰的了解;同時我們還將階段繼續(xù)細(xì)分,以周為單位對用戶的簽到進(jìn)行統(tǒng)計總結(jié),從而在每個階段也都有更為詳細(xì)的短期目標(biāo)。
4.3 獎勵成就
在游戲中,每達(dá)到一個小目標(biāo),你就會得到獎勵。每一個小小的獎勵都能最大化地滿足人們的自尊心。所以我們在應(yīng)用中,鼓勵用戶去鼓勵和評論好友的簽到,鼓勵可以加強(qiáng)被鼓勵用戶的信心,而評論加強(qiáng)了用戶間的交流,你可以由此找尋到志同道合的伙伴。
4.4 及時的反饋
在網(wǎng)絡(luò)游戲中當(dāng)你完成一個任務(wù)、學(xué)習(xí)到一種新的技能時,你能馬上去施展這項技能,這種反饋讓人們更加確信獎勵。如果行動和結(jié)果的時間跨度很大,那么是比較難意識到這兩者之間的關(guān)系,所以及時的反饋是非常的重要。
4.5 合作和集體的歸屬感
最最刺激大腦的關(guān)鍵因素其實來自于其他人。與他人合作,產(chǎn)生的集體歸屬感讓用戶對游戲產(chǎn)生更深的依賴。所以在該應(yīng)用中,我們引入了社交化,通過導(dǎo)入用戶的新浪微博好友,通過豐富的交互手段,如鼓勵用戶邀請好友一起培養(yǎng)習(xí)慣,或者結(jié)實培養(yǎng)相同習(xí)慣的好友等等,實現(xiàn)用戶間的彼此鼓勵與監(jiān)督,共同進(jìn)步。
該應(yīng)用目前主要是借鑒了游戲化的一些思路,未來可以考慮將游戲化直接融入到應(yīng)用中,來增加應(yīng)用的趣味性以及用戶黏度,從此角度我們提出了“植物養(yǎng)成”的游戲模式。
在應(yīng)用中,每一個習(xí)慣培養(yǎng),都將得到一顆植物種子,通過不斷的簽到,植物會逐次經(jīng)歷發(fā)芽——生長——花苞——開花的生長過程,至于每一個習(xí)慣對應(yīng)的花朵,需要用戶成功培養(yǎng)該習(xí)慣之后才能看到,這樣增加了用戶的好奇心,增加了用戶堅持習(xí)慣的動力。同時結(jié)合本應(yīng)用的社交功能,也為用戶提供相互澆水、施肥的功能,鼓勵用戶一起培養(yǎng)植物。這種游戲模式與習(xí)慣培養(yǎng)緊密的結(jié)合,相信會對用戶有一定的激勵作用。
[1] 王希貝. Android開源手機(jī)與知識產(chǎn)權(quán)保護(hù)淺析[J]. 中國發(fā)明與專利, 2010,(11):68—69.
[2] 賈理華,樂燕芬,施偉斌.基于Android平臺簡易即時通訊的研究與設(shè)計[J]. 常州工學(xué)院學(xué)報, 2010,(4):51-53.
[3] Krishnarnurthy B, gexford J. Web協(xié)議與實踐[M]. 北京:科學(xué)出版社, 2005.
[4] 黃佳星, 王晶, 沈奇威. 基于Android的移動互聯(lián)網(wǎng)應(yīng)用框架方案[J], 電信工程技術(shù)與標(biāo)準(zhǔn)化, 2012,25(8)77-80.
[5] http://www.ibm.com/developerworks/cn/opensource/os-cn-sqlfte/.
[6] 郭宏志. Android應(yīng)用開發(fā)詳解[M]. 北京:電子工業(yè)出版社,2010.
[7] http://v.163.com/movie/2010/11/M/4/M78DCK15U_ M78DCO0M4.html.
Design and implementation of a habit develop software based on Android platform
CHEN Cen1,2, SHEN Qi-wei1,2, LIAO Jian-xin1,2
(1 State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876,China; 2 EBUPT Information Technology Co., Ltd., Beijing 100191, China)
Android is a mobile operating platform based on Linux.This paper introduced the general design, module analysis and the key technologies of design and develop a habit develop application under Android platform. In addition, a combination of socializing and game-oriented ideas to improve the user viscosity, and the functional design of the future prospects do.
Android; habit; just hold on; gamif i cation
TN929.5
A
1008-5599(2013)09-0081-05
2013-08-28
國家 973 計劃項目(No. 2013CB329102);國家自然科學(xué)基金資助項目(No. 61372120, 61271019, 61101119, 61121001, 61072057,60902051);長江學(xué)者和創(chuàng)新團(tuán)隊發(fā)展計劃資助(No. IRT1049)。