基于Android的個人健康管理系統(tǒng)_第1頁
基于Android的個人健康管理系統(tǒng)_第2頁
基于Android的個人健康管理系統(tǒng)_第3頁
基于Android的個人健康管理系統(tǒng)_第4頁
基于Android的個人健康管理系統(tǒng)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告學(xué)院:軟件學(xué)院專業(yè):軟件工程時間:畢業(yè)設(shè)計(jì)(論文)任務(wù)書畢業(yè)設(shè)計(jì)(論文)題目:基于Android的個人健康管理系統(tǒng)畢業(yè)設(shè)計(jì)(論文)要求及原始數(shù)據(jù)(資料):1.綜述個人健康管理系統(tǒng)應(yīng)用研究現(xiàn)狀;2.深入了解個人健康管理系統(tǒng)應(yīng)用開發(fā)的相關(guān)技術(shù);3.熟練Android的應(yīng)用與分析,訓(xùn)練編寫Android應(yīng)用程序的能力;4.設(shè)計(jì)并實(shí)現(xiàn)個人健康管理系統(tǒng)應(yīng)用;5.深入分析個人健康管理系統(tǒng)應(yīng)用開發(fā)的關(guān)鍵技術(shù)與編寫語言;6.訓(xùn)練檢索文獻(xiàn)資料和利用文獻(xiàn)資料的能力;7.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。畢業(yè)設(shè)計(jì)(論文)主要內(nèi)容:1.綜述個人健康管理系統(tǒng)的應(yīng)用;2.了解個人健康管理系統(tǒng)應(yīng)用的相關(guān)技術(shù);3.熟悉個人健康管理系統(tǒng)應(yīng)用的Android開發(fā)環(huán)境;4.設(shè)計(jì)基于Android的個人健康管理系統(tǒng)應(yīng)用;5.深入分析個人健康管理系統(tǒng)應(yīng)用的設(shè)計(jì)流程;6.熟練掌握個人健康管理系統(tǒng)應(yīng)用的編寫;7.設(shè)計(jì)與實(shí)現(xiàn)個人健康管理系統(tǒng)應(yīng)用的程序。學(xué)生應(yīng)交出的設(shè)計(jì)文件(論文):1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計(jì)論文;2.包括畢業(yè)設(shè)計(jì)論文、源程序等內(nèi)容在內(nèi)的畢業(yè)設(shè)計(jì)電子文檔及其它相關(guān)材料。主要參考文獻(xiàn)(資料):張利國.代聞,龔海平Android移動開發(fā)案例詳解[M].北京:人民郵電出版社,2010王維虎,劉忠,李叢JAVA程序設(shè)計(jì)[M].華中科技大學(xué)出版社,2013程正權(quán),尹春嬌,王光亞Java程序設(shè)計(jì)基礎(chǔ)與實(shí)訓(xùn)[M].安徽科學(xué)技術(shù)出版社,2012吳想想基于Android平臺軟件開發(fā)方法的研究與應(yīng)用[D].北京郵電大學(xué),2011馬駿驍;布魯卡;曹晨,關(guān)于UI不得不說的那些事[J].移動信息,2013Freeman,E.HeadFirstDesignPattern[M].O’ReillyMedia,Inc,2004鄭阿奇,丁有和,周怡君,鄭進(jìn)Oracle實(shí)用教程[M],電子工業(yè)出版社,2013聶少萍,黃靜芝飲水健康及其影響性研究現(xiàn)狀[J],華南預(yù)防醫(yī)學(xué),2013Johnson,Richard,A.JAVADATABASECONNECTIVITYUSINGSQLITE:ATUTORIAL[J],AlliedAcademiesInterontaionalConference,2014,(18)MarkMurphyBeginningAndroid2[M].APress,2010專業(yè)班級學(xué)生要求設(shè)計(jì)(論文)工作起止日期指導(dǎo)教師簽字日期教研室主任審查簽字日期系主任批準(zhǔn)簽字日期基于Android的個人健康管理系統(tǒng)摘要隨著生活水平的提高,健康一詞的關(guān)注度越來越高,人們越來越注重鍛煉、養(yǎng)生。與此同時,移動端產(chǎn)品基于它的便捷性以及相關(guān)科技的迅速發(fā)展等,也在人們的日常中占有重要的一席。Android是一個開源的開發(fā)語言,底層基于Linux操作系統(tǒng),并通過MVC模式,通過Java和XML配置共同進(jìn)行開發(fā)。通過對Android移動應(yīng)用技術(shù)和健康管理知識的了解與研究,遵循軟件工程的開發(fā)模式,進(jìn)行個人健康管理系統(tǒng)的應(yīng)用開發(fā)。該應(yīng)用實(shí)現(xiàn)了記錄日常鍛煉、休息提醒、健康飲水、推薦健康時蔬、健康評分等功能,通過Android開源技術(shù)很好的提高了界面友好性,通過添加動畫、制作界面、彈出提示信息等方式優(yōu)化人機(jī)交互性能。應(yīng)用旨在通過移動端提供便捷的健康管理方式,方便大家健康度過每一天。關(guān)鍵詞:Android;健康管理;軟件工程;開源系統(tǒng)PersonalHealthManagement

SystemBasedOnAndroidAbstractWiththeimprovementoflivingstandards,

thewordofhealth

hasbeenpaidmoreandmoreattention,

andmoreandmorepeoplepayattentionto

exerciseand

health.

Atthesametime,

themobileterminal

productsbasedon

itsconvenience

and

rapiddevelopmentoftechnology,

also

playsakeyrole

inpeople's

daily.

Androidisanopensource

programminglanguage,

theunderlying

operatingsystem

basedon

Linux,

andcommondevelopmentprojectthroughJavaand

XMLconfigurationwithMVC

model.

Throughunderstanding

andstudyaboutthe

Androidmobileapplication

technologyand

healthmanagement

knowledge,

followthesoftwareengineering

developmentmodel,

developingthe

applicationofpersonalhealthmanagementsystem.

Theapplicationhasfollowingfunction,the

recordsof

dailyexercise,

restreminder,

healthydrinkingwater,

recommended

healthyvegetables,

healthscore

andotherfunctions.ThroughtheAndroid

opensourcetechnology

canimprovethefriendlyofinterface,

andthroughadditional

animation,

beautifytheinterface,

pop-upprompt

information

andotherwaystooptimizethe

performance

ofhuman-computerinteraction.

Applicationof

healthmanagement

systemiswiththepurposeofproviding

aconvenientwaytomanagerhealthwiththe

mobileterminaland

healthy

tospendeveryday.KeyWords:Android;HealthManagement;SoftwareEngineering;OpenSourceSystem目錄TOC\o"1-3"\h\u18383基于Android的個人健康管理系統(tǒng) 5581PersonalHealthManagement

SystemBasedOnAndroid 288161引言 引言1.1課題背景隨著科技不斷發(fā)展,手機(jī)等移動產(chǎn)品憑借其便捷等特性已在人們?nèi)粘I钪幸颜加兄匾牡匚?,移動端市場發(fā)展極為迅速,而現(xiàn)今主流的移動端操作系統(tǒng)便是IOS和Android兩大系統(tǒng)。Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。生活水平的提高,使得人們已不滿足僅僅追求物質(zhì)財(cái)富,精神財(cái)富也成為人們喜聞樂見的話題。其中,“健康”一詞的關(guān)注度也隨之提升,健康是人的基本權(quán)利,健康是人生的第一財(cái)富。健康包含的內(nèi)容很多,現(xiàn)代人的健康內(nèi)容包括:軀體健康、心理健康、心靈健康、社會健康、智力健康、道德健康、環(huán)境健康等。身體健康是健康的前提,雖然健康的內(nèi)容越來越多,但身體健康仍是最根本的一項(xiàng)。通過鍛煉、飲食、生活習(xí)慣等的改善以達(dá)到身體上的健康。擁有一個健康的身體,是大多數(shù)人追求健康的首要目標(biāo),是我們更好的追求精神與物質(zhì)財(cái)富的重要保障。1.2編寫目的在快節(jié)奏的現(xiàn)代生活,一個移動端的應(yīng)用符合了現(xiàn)代生活的快捷與便利,并通過健康管理系統(tǒng)督促個人進(jìn)行健康的生活。本應(yīng)用目的為提供一種方便的方式可以對個人健康起到一定的幫助。通過友好的界面效果,實(shí)現(xiàn)相應(yīng)的健康管理功能。1.3關(guān)于AndroidAndroid一詞的本義指“機(jī)器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。它采用了軟件堆層(software

stack,又名以軟件疊層)的架構(gòu),主要分為三部分。低層以Linux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。另外,為了推廣此技術(shù),Google和其它幾十個手機(jī)公司建立了開放手機(jī)聯(lián)盟。Android在未公開之前常被傳聞為Google電話。大多傳聞?wù)J為Google開發(fā)的是自己的手機(jī)電話產(chǎn)品,而不是一套軟件平臺。到了2010年1月,Google開始發(fā)表自家品牌手機(jī)電話的Nexus

One。Android系統(tǒng)有如下的幾大特性:應(yīng)用程序框架,支持組件的重用與替換;Dalvik虛擬機(jī),專門為移動設(shè)備做了優(yōu)化;內(nèi)部集成瀏覽器,該瀏覽器基于開源的WebKit引擎;優(yōu)化的圖形庫,包括2D和3D圖形庫,3D圖形庫基于OpenGL

ES;SQLite,用作結(jié)構(gòu)化的數(shù)據(jù)存儲;多媒體支持

包括常見的音頻、視頻和靜態(tài)印象文件格式(如MPEG4,

H.264,

MP3,

AAC,

AMR,

JPG,

PNG,

GIF);GSM電話(依賴于硬件);藍(lán)牙Bluetooth,EDGE,3G,and

WiFi(依賴于硬件);照相機(jī),GPS,指南針和加速度計(jì)(依賴于硬件);豐富的開發(fā)環(huán)境,包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,和Eclipse集成開發(fā)環(huán)境插件。Applications,Android會同一個核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是用JAVA編寫的。Application

FrameWork,開發(fā)者完全可以訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序架構(gòu)用來簡化組件軟件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。該應(yīng)用程序重用機(jī)制使得組建可以被用戶替換。所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:可擴(kuò)展的視圖(Views)可以用來建應(yīng)用程序,包括列表(lists),網(wǎng)格(grids),文本框(text

boxes),按鈕(buttons),甚至包括一個可嵌入的web瀏覽器;內(nèi)容管理器(Content

Providers)使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。;資源管理器(Resource

Manager)提供非代碼資源的訪問,如本地字符串,圖形,和分層文件(layout

files);通知管理器(Notification

Manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息;活動類管理器(Activity

Manager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。Libraries庫,Android包括一個被Android系統(tǒng)中各種不同組件所使用的C/C++庫集。該庫通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些主要的核心庫:系統(tǒng)C庫,媒體庫,Surface

Manager,LibWebCore,SGL,F(xiàn)reeType,SQLite。Android

Runtime,Android

包括了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數(shù)功能。每一個Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik是針對于同時高效地運(yùn)行多個VMs來實(shí)現(xiàn)的。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的,所有的類都經(jīng)由JAVA匯編器編譯,然后通過SDK中的dx工具轉(zhuǎn)化成.dex格式由虛擬機(jī),Dalvik虛擬機(jī)依賴于linux的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。Linux內(nèi)核

,Android

的核心系統(tǒng)服務(wù)依賴于

Linux

2.6

內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。

Linux

內(nèi)核也同時作為硬件和軟件堆棧之間的硬件抽象層。其最震撼人心之處在于Android手機(jī)系統(tǒng)的開放性和服務(wù)免費(fèi)。Android是一個對第三方軟件完全開放的平臺,開發(fā)者在為其開發(fā)程序時擁有更大的自由度,突破了iPhone等只能添加為數(shù)不多的固定軟件的枷鎖;同時與Windows

Mobile、Symbian等廠商不同,Android操作系統(tǒng)免費(fèi)向開發(fā)人員提供,這樣可節(jié)省近三成成本。1.4關(guān)于MVC框架Android應(yīng)用程序的開發(fā)使用了MVC框架結(jié)構(gòu)。MVC全名是ModelViewController,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中。MVC開始是存在于桌面程序中的,M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。比如一批統(tǒng)計(jì)數(shù)據(jù)可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。模型-視圖-控制器(MVC)是XeroxPARC在二十世紀(jì)八十年代為編程語言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式,已被廣泛使用。后來被推薦為Oracle旗下Sun公司JavaEE平臺的設(shè)計(jì)模式,并且受到越來越多的使用ColdFusion和PHP的開發(fā)者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點(diǎn)。MVC是一個框架模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。最典型的MVC就是JSP+servlet+javabean的模式。視圖,視圖是用戶看到并與之交互的界面。對老式的Web應(yīng)用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,它們包括AdobeFlash和像XHTML,XML/XSL,WML等一些標(biāo)識語言和Webservices.MVC好處是它能為應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。模型,模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個部件中,模型擁有最多的處理任務(wù)。例如它可能用像EJBs和ColdFusionComponents這樣的構(gòu)件對象來處理數(shù)據(jù)庫,被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù),由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復(fù)性??刂破?,控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求,所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求,然后再確定用哪個視圖來顯示返回的數(shù)據(jù)。MVC框架優(yōu)點(diǎn)有,耦合性低,視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動MVC的模型層即可。因?yàn)槟P团c控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則;重用性高,隨著技術(shù)的不斷進(jìn)步,需要用越來越多的方式來訪問應(yīng)用程序。MVC模式允許使用各種不同樣式的視圖來訪問同一個服務(wù)器端的代碼,因?yàn)槎鄠€視圖能共享一個模型,它包括任何WEB(HTTP)瀏覽器或者無線瀏覽器(wap),比如,用戶可以通過電腦也可通過手機(jī)來訂購某樣產(chǎn)品,雖然訂購的方式不一樣,但處理訂購產(chǎn)品的方式是一樣的。由于模型返回的數(shù)據(jù)沒有進(jìn)行格式化,所以同樣的構(gòu)件能被不同的界面使用。例如,很多數(shù)據(jù)可能用HTML來表示,但是也有可能用WAP來表示,而這些表示所需要的命令是改變視圖層的實(shí)現(xiàn)方式,而控制層和模型層無需做任何改變。由于已經(jīng)將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開,所以可以最大化的重用代碼了。模型也有狀態(tài)管理和數(shù)據(jù)持久性處理的功能,例如,基于會話的購物車和電子商務(wù)過程也能被Flash網(wǎng)站或者無線聯(lián)網(wǎng)的應(yīng)用程序所重用;生命周期成本低,MVC使開發(fā)和維護(hù)用戶接口的技術(shù)含量降低;部署快,使用MVC模式使開發(fā)時間得到相當(dāng)大的縮減,它使程序員(Java開發(fā)人員)集中精力于業(yè)務(wù)邏輯,界面程序員(HTML和JSP開發(fā)人員)集中精力于表現(xiàn)形式上;可維護(hù)性高,分離視圖層和業(yè)務(wù)邏輯層也使得WEB應(yīng)用更易于維護(hù)和修改;有利軟件工程化管理,由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化管理程序代碼??刂破饕蔡峁┝艘粋€好處,就是可以使用控制器來聯(lián)接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強(qiáng)有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇模型進(jìn)行處理,然后選擇視圖將處理結(jié)果顯示給用戶。MVC缺點(diǎn)有,沒有明確的定義;不適合小型,中等規(guī)模的應(yīng)用程序;增加系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性,對于簡單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的更新操作,降低運(yùn)行效率;視圖與控制器間的過于緊密的連接;視圖對模型數(shù)據(jù)的低效率訪問;一般高級的界面工具或構(gòu)造器不支持模式。2可行性研究2.1技術(shù)可行性個人健康管理系統(tǒng)項(xiàng)目是基于Android開源語言的移動應(yīng)用軟件。以MVC模式,通過Java語言和XML配置混合進(jìn)行開發(fā)。Android語言發(fā)展至今,已經(jīng)非常成熟。項(xiàng)目相關(guān)數(shù)據(jù)庫功能使用Android自帶的SQLite輕量級數(shù)據(jù)庫,基于SQL語言進(jìn)行數(shù)據(jù)庫功能方面的設(shè)計(jì)與開發(fā)。項(xiàng)目的功能實(shí)現(xiàn)與交互界面的優(yōu)化方面,通過Android自帶組件、自定義組件和第三方組件可達(dá)到不錯的實(shí)現(xiàn)效果。所以,從技術(shù)方面來看,使用Android語言進(jìn)行本應(yīng)用開發(fā)是可行的。2.2經(jīng)濟(jì)可行性本項(xiàng)目屬于個人開發(fā),無需投入大量資金,所以經(jīng)濟(jì)上可行。2.3時間可行性本項(xiàng)目應(yīng)用開發(fā)時間上安排充足,所以時間上可行。3需求分析隨著生活水平的提高,健康一詞的關(guān)注度越來越高,人們越來越注重鍛煉、養(yǎng)生,加之現(xiàn)代社會快節(jié)奏的生活通,所以需要一個便捷、快速、隨時可使用的應(yīng)用軟件。所以通過開發(fā)Android移動應(yīng)用可以很好的實(shí)現(xiàn)上訴性能。對于個人健康管理系統(tǒng),需要實(shí)現(xiàn)的功能有記錄日常鍛煉、休息提醒、健康飲水、推薦健康時蔬、健康評分等功能。應(yīng)用需要保留相關(guān)信息,例如個人信息、鍛煉信息等。同時,人機(jī)交互性能需要得到注重,目標(biāo)是實(shí)現(xiàn)一個界面友好、操作簡單、便于使用的移動健康管理APP。4總體設(shè)計(jì)4.1功能設(shè)計(jì)根據(jù)項(xiàng)目的基本目標(biāo)和需求進(jìn)行分析可得項(xiàng)目所需基本實(shí)現(xiàn)的功能為登錄功能、注冊功能、鍛煉管理功能、飲水管理功能、飲食管理功能、休息管理功能、評分功能、個人信息管理功能、退出應(yīng)用功能。根據(jù)設(shè)計(jì)得出的用例圖如下:圖4-1總體設(shè)計(jì)用例圖登錄系統(tǒng)功能需要實(shí)現(xiàn)的基本內(nèi)容有進(jìn)行賬戶登錄,擁有一定規(guī)則的驗(yàn)證功能。注冊系統(tǒng)功能需要實(shí)現(xiàn)的基本內(nèi)容有進(jìn)行賬戶注冊,擁有一定規(guī)則的驗(yàn)證功能。鍛煉管理功能需要實(shí)現(xiàn)的基本內(nèi)容有記錄每天鍛煉信息、增加刪除修改鍛煉信息。飲水管理功能需要實(shí)現(xiàn)的基本內(nèi)容有記錄飲水狀況、提供相關(guān)健康飲水知識。飲食管理功能需要實(shí)現(xiàn)的基本內(nèi)容有提供健康飲食的知識。休息管理功能需要實(shí)現(xiàn)的基本內(nèi)容有健康作息提醒、使用手機(jī)休息提醒。評分系統(tǒng)功能需要實(shí)現(xiàn)的基本內(nèi)容有根據(jù)一套評分標(biāo)準(zhǔn)進(jìn)行評分并顯示。個人信息管理功能需要實(shí)現(xiàn)的基本內(nèi)容有管理個人信息,包括個人賬號的刪除、修改、更換等功能。退出系統(tǒng)功能需要實(shí)現(xiàn)的基本內(nèi)容有實(shí)現(xiàn)應(yīng)用退出功能。4.2數(shù)據(jù)庫設(shè)計(jì)根據(jù)應(yīng)用相關(guān)需求與功能,需要數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的管理。項(xiàng)目使用Android自帶的輕量級數(shù)據(jù)庫SQLite進(jìn)行數(shù)據(jù)的管理。項(xiàng)目一共需要建表7個,詳細(xì)信息見下表:表4-1DB_DRINK字段名屬性類型IDPKTXTTOTALTXTCURRENTTXTINCREMENTTXTFLAGTXT表4-2DB_TIME字段名屬性類型PICK1HTXTPICK1MTXTPICK2HTXTPICK2MTXTPICK3TXTSW1TXTSW2TXTSW3TXT表4-3DB_EXERCISE字段名屬性類型_IDPK,AUTOINCREMENTINTEGERNAMETXTCOSTTXTDATETXT表4-4DB_CHART字段名屬性類型DATETXTISUSETXTISEXERCISETXTISDRINKTXTISCHARTTXTGOALSTXT表4-5DB_CHART_MONTH字段名屬性類型DATETXTGOALSTXT表4-6DB_ACCOUNT字段名屬性類型USERNAMEPKTXTPWDTXTNAMETXT表4-7DB_CURRENT_AC字段名屬性類型USERNAMETXTPWDTXTNAMETXTISSAVEPWDTXTISAUTOINTXT4.3界面設(shè)計(jì)項(xiàng)目的界面主題以星空為主要背景,主界面以WIN8風(fēng)格進(jìn)行界面的設(shè)計(jì),并添加界面切換動畫效果。所有界面盡可能多的使界面友好化,提供友好的界面交互,例如按鈕等組件點(diǎn)擊后的反饋,提示信息的彈出等。4.4權(quán)限需求Android應(yīng)用為了實(shí)現(xiàn)一些功能需要調(diào)用系統(tǒng)功能、寫入寫出到系統(tǒng)等,為了安全性需要添加權(quán)限,以便擁有access來完成相關(guān)功能。項(xiàng)目添加用戶權(quán)限android.permission.RECEIVE_BOOT_COMPLETED,該權(quán)限允許應(yīng)用接受系統(tǒng)屏幕喚醒、睡眠的廣播動作,以便實(shí)現(xiàn)相關(guān)的邏輯功能。4.5應(yīng)用版本要求Android系統(tǒng)擁有良好的兼容性,可以向下兼容到指定版本。本項(xiàng)目的最低版本要求為android:minSdkVersion="14",目標(biāo)版本android:targetSdkVersion="18"。4.6項(xiàng)目編寫環(huán)境要求項(xiàng)目編寫使用環(huán)境Windows7OS、EclipseLuna4.4.1、SDK、JDK1.8、ADT,下圖為項(xiàng)目編寫時環(huán)境圖:圖4-2layout界面編寫環(huán)境圖4-3代碼編寫界面環(huán)境5詳細(xì)設(shè)計(jì)5.1Logo界面設(shè)計(jì)Logo界面需求為展示Logo并在一定時間后實(shí)現(xiàn)自動跳轉(zhuǎn)至登錄頁面。5.2登錄界面設(shè)計(jì)登錄界面要求實(shí)現(xiàn)的功能有:登錄功能,擁有基本的登錄驗(yàn)證功能,并可通過復(fù)選框勾選是否保存賬號、密碼和自動登錄功能。當(dāng)驗(yàn)證通過即可登錄跳轉(zhuǎn)至主頁面,并保存當(dāng)前賬戶基本信息,以便之后的功能使用;驗(yàn)證功能,驗(yàn)證輸入是否有效,賬號、密碼是否正確等;注冊功能,若無賬號可通過注冊按鈕,跳轉(zhuǎn)至注冊頁面進(jìn)行注冊后登錄;退出功能,實(shí)現(xiàn)退出系統(tǒng)應(yīng)用。系統(tǒng)用例圖如下:圖5-1登錄界面用例圖系統(tǒng)流程圖如下:圖5-2登錄界面流程圖登錄界面使用數(shù)據(jù)庫表DB_ACCOUNT,用于記錄賬號信息;DB_CURRENT_AC,用于記錄當(dāng)前登錄的賬號基本信息。5.3注冊界面設(shè)計(jì)注冊界面主要實(shí)現(xiàn)功能有:注冊功能,進(jìn)行賬戶的注冊并插入到數(shù)據(jù)庫表中,注冊時進(jìn)行一定的基本校驗(yàn)規(guī)則,注冊成功或失敗顯示提示信息;驗(yàn)證功能,驗(yàn)證輸入的有效性,并通過數(shù)據(jù)庫交互驗(yàn)證賬號是否已存在。系統(tǒng)流程圖如下:圖5-3注冊系統(tǒng)流程圖注冊界面使用數(shù)據(jù)庫表DB_ACCOUNT,用于插入賬戶信息。5.4主界面設(shè)計(jì)主界面主要實(shí)現(xiàn)功能有:顯示賬號昵稱功能,提取當(dāng)前賬戶昵稱并顯示;顯示健康狀態(tài)功能,通過數(shù)據(jù)庫表提取相關(guān)數(shù)據(jù),實(shí)現(xiàn)根據(jù)評分系統(tǒng)評分規(guī)則顯示以不同顏色為象征的健康狀態(tài);向飲水管理功能,實(shí)現(xiàn)向飲水管理界面跳轉(zhuǎn);飲食管理功能,實(shí)現(xiàn)向飲食管理界面跳轉(zhuǎn);休息管理功能,實(shí)現(xiàn)向休息管理界面跳轉(zhuǎn);鍛煉管理功能,實(shí)現(xiàn)向鍛煉管理界面跳轉(zhuǎn);個人信息管理功能,實(shí)現(xiàn)向個人信息管理界面的跳轉(zhuǎn);評分系統(tǒng)功能,實(shí)現(xiàn)向評分系統(tǒng)界面的跳轉(zhuǎn);退出功能,實(shí)現(xiàn)退出系統(tǒng)功能。用例圖如下:圖5-4主界面用例圖系統(tǒng)流程圖如下:圖5-5主界面系統(tǒng)流程圖主界面使用數(shù)據(jù)庫表DB_CHART,根據(jù)一定評分規(guī)則進(jìn)行評分,提取相關(guān)信息并根據(jù)規(guī)則進(jìn)行分?jǐn)?shù)轉(zhuǎn)換,更新數(shù)據(jù),通過平均分?jǐn)?shù)以不同顏色象征顯示健康狀況;DB_CHART_MONTH,根據(jù)DB_CHART表數(shù)據(jù)內(nèi)容,記錄上一個月的平均分?jǐn)?shù)并插入。5.5飲水管理界面設(shè)計(jì)飲水管理界面要實(shí)現(xiàn)的功能有:查看飲水進(jìn)度功能,顯示喝水量總量、現(xiàn)量、進(jìn)度等信息;飲水功能,通過飲水按鈕同步飲水狀態(tài),增加喝水現(xiàn)量;設(shè)置飲水信息功能,設(shè)置飲水的總量和每次飲水量;提供飲水小常識功能,例如喝水的壞習(xí)慣、喝水的最佳時間、喝水的功效、推薦喝水量等內(nèi)容,通過點(diǎn)擊按鈕彈出對應(yīng)的信息。詳細(xì)用例圖如下:圖5-6引水管理界面用例圖系統(tǒng)流程圖如下:圖5-7飲水管理系統(tǒng)流程圖飲水管理使用數(shù)據(jù)庫表DB_DRINK,記錄數(shù)據(jù)有標(biāo)識ID、喝水目標(biāo)量、現(xiàn)量、增量、是否完成目標(biāo),用于其它功能使用;DB_CHART,用于記錄是否完成喝水目標(biāo),以便進(jìn)行評分。5.6鍛煉管理界面設(shè)計(jì)鍛煉管理界面需要實(shí)現(xiàn)的功能有:查詢當(dāng)前日志功能,進(jìn)入界面初始化顯示當(dāng)前日期的鍛煉日志;添加鍛煉日志功能,添加新的鍛煉日志到當(dāng)前日期,內(nèi)容要求有鍛煉項(xiàng)目、鍛煉的持續(xù)時間等,添加成功后反饋提示信息;刪除日志項(xiàng)目功能,通過長按鍛煉日志Item進(jìn)行刪除操作,并反饋提示信息;按日期查詢功能,通過制定日期進(jìn)行查詢,與數(shù)據(jù)庫表進(jìn)行數(shù)據(jù)交互,得到日志數(shù)據(jù),并顯示。圖5-8鍛煉管理界面用例圖系統(tǒng)流程圖如下:圖5-9鍛煉管理系統(tǒng)流程圖鍛煉管理界面使用數(shù)據(jù)庫表DB_EXERICSE,進(jìn)行日志記錄,數(shù)據(jù)表示自增標(biāo)識_ID、鍛煉項(xiàng)目名稱、鍛煉時長、鍛煉日期,并通過該表實(shí)現(xiàn)查詢、刪除等功能;DB_CHART,記錄是否進(jìn)行過鍛煉,以便之后進(jìn)行評分使用。5.7休息管理界面設(shè)計(jì)休息管理界面需要實(shí)現(xiàn)的功能有:開啟或關(guān)閉起床提醒功能,通過switch打開或關(guān)閉該功能;設(shè)置起床提醒時間,需要打開起床提醒功能開關(guān)才可使用,可設(shè)置時間,系統(tǒng)會在設(shè)置的時間進(jìn)行鬧鈴提醒;開啟或關(guān)閉睡覺提醒功能,通過switch開啟或關(guān)閉該功能;設(shè)置睡覺提醒時間,需要打開睡覺提醒開關(guān)才可使用,可設(shè)置提醒時間,系統(tǒng)會在指定時間進(jìn)行鬧鈴提醒;開啟或關(guān)閉休息提醒功能,通過switch開啟或關(guān)閉該功能;設(shè)置休息提醒時間,需要開啟休息提醒開關(guān)方可使用,可設(shè)置時間,系統(tǒng)會在解鎖移動設(shè)備屏幕后經(jīng)過指定時間后進(jìn)行鬧鈴提醒休息以起到護(hù)眼的效果。圖5-10休息提醒界面用例圖系統(tǒng)流程圖如下:圖5-11休息管理系統(tǒng)流程圖休息管理界面使用數(shù)據(jù)庫表DB_TIME,需要插入刪除數(shù)據(jù)功能,數(shù)據(jù)內(nèi)容有起床提醒小時、分鐘時間,睡覺提醒小時、分鐘時間,休息提醒時間,以及三個開關(guān)的開關(guān)狀態(tài),通過查詢數(shù)據(jù)提取相應(yīng)信息用于相應(yīng)功能使用。5.8飲食管理界面設(shè)計(jì)飲食管理界面需要實(shí)現(xiàn)的功能有:春季/夏季/秋季/冬季推薦時蔬,通過點(diǎn)擊按鈕顯示推薦的春季、夏季、秋季、冬季健康時蔬,內(nèi)容要求顯示時蔬圖片、名稱和相應(yīng)的功效簡紹。系統(tǒng)用例圖如下:圖5-12飲食管理界面用例圖系統(tǒng)流程圖如下:圖5-13飲食管理系統(tǒng)流程圖5.9評分系統(tǒng)界面設(shè)計(jì)評分系統(tǒng)界面需要實(shí)現(xiàn)的功能有:本月平均健康分?jǐn)?shù),通過主頁面計(jì)算得到本月平均健康分?jǐn)?shù)并以圖表形式顯示;本月日健康分?jǐn)?shù),通過主頁面結(jié)算本月之前未結(jié)算過的分?jǐn)?shù),并通過柱狀圖形式顯示出本月每日的分?jǐn)?shù);月平均健康分?jǐn)?shù),通過主頁面結(jié)算上個月的平均分?jǐn)?shù)并插入表中,在本系統(tǒng)中通過數(shù)據(jù)庫取得數(shù)據(jù)并以柱狀圖顯示所有有值月份的平均健康分?jǐn)?shù)。圖5-13評分系統(tǒng)用例圖系統(tǒng)流程圖如下:圖5-14評分系統(tǒng)流程圖評分系統(tǒng)使用數(shù)據(jù)庫表DB_CHART,獲取本月所有日健康分?jǐn)?shù)和日期并顯示;C_CHART_MONTH,獲取所有有值月份的月平均健康分?jǐn)?shù)、日期并顯示。5.10個人信息管理界面設(shè)計(jì)個人信息管理界面需要實(shí)現(xiàn)的功能有:更改賬戶功能,點(diǎn)擊按鈕后返回登錄界面重新進(jìn)行賬戶登錄;修改個人賬戶信息功能,跳轉(zhuǎn)至修改界面,可修改賬戶的密碼、昵稱等信息,擁有基本的驗(yàn)證規(guī)則,修改成功后返回并顯示成功提示信息,失敗反饋失敗提示信息,也可以取消修改直接返回至個人信息管理界面;清除個人數(shù)據(jù),清空個人賬戶數(shù)據(jù),僅保留賬戶信息,其余表數(shù)據(jù)全部初始化。圖5-15個人信息管理界面用例圖系統(tǒng)流程圖如下:圖5-16個人信息管理流程圖個人信息管理界面使用數(shù)據(jù)庫表所有表數(shù)據(jù),關(guān)于DB_ACCOUNT、DB_CURRENT_AC兩個表,當(dāng)進(jìn)行個人賬戶信息修改時,需要修改兩個表的數(shù)據(jù)。關(guān)于其余表數(shù)據(jù),當(dāng)進(jìn)行清除個人數(shù)據(jù)時會進(jìn)行數(shù)據(jù)初始化,刪除表中所有數(shù)據(jù)。6項(xiàng)目結(jié)果6.1項(xiàng)目目錄結(jié)構(gòu)圖圖6-1項(xiàng)目目錄結(jié)構(gòu)圖上圖為本項(xiàng)目目錄結(jié)構(gòu)圖,src下放置java類文件和一些txt資源文件;gen文件夾為系統(tǒng)自動生成并維護(hù);res文件夾下放置一些資源文件,例如drawable-*文件夾下放置項(xiàng)目所使用到的圖片資源,anim下放置界面切換動畫的配置文件資源,layout文件夾下放置界面配置資源文件,raw文件夾放置一些音頻文件資源;AndroidMainfest.xml文件是項(xiàng)目的配置文件。項(xiàng)目一共構(gòu)建自定義類30個,分別用于界面類、數(shù)據(jù)庫幫助類、服務(wù)類、廣播接收器、工具類、自定義組件類等。詳細(xì)見下圖:圖6-2項(xiàng)目自定義類項(xiàng)目一共構(gòu)建定義xml界面視圖21個,用于各系統(tǒng)功能界面的定義、組件內(nèi)容界面的定義等。詳細(xì)內(nèi)容見下圖:圖6-3項(xiàng)目layout配置文件6.2項(xiàng)目主要界面展示項(xiàng)目詳細(xì)功能內(nèi)容請見詳細(xì)設(shè)計(jì)內(nèi)容。圖6-4應(yīng)用圖標(biāo)圖6-5項(xiàng)目Logo界面圖6-6登錄界面圖6-7注冊界面圖6-8主界面圖6-9飲水管理界面圖6-10鍛煉管理界面圖6-11飲食管理界面圖6-12休息管理界面圖6-13個人信息管理界面圖6-14評分系統(tǒng)界面圖6-15修改賬戶信息界面6.3項(xiàng)目部分代碼項(xiàng)目主界面onCreate代碼: protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chart_db=newChart_Dao(this); chart_month_dao=newChart_Month_Dao(this); db_account=newUserAccountDao(this); chartInit(); chart_btn=(Button)findViewById(R.id.chart); name_title=(TextView)findViewById(R._title); Cursornamebar=db_account.db_C_Query(); namebar.moveToNext(); name_title.setText(namebar.getString(2)); if(chart_goals>70)chart_btn.setBackgroundResource(R.drawable.green_btn); elseif(chart_goals<50)chart_btn.setBackgroundResource(R.drawable.red_btn_select); elsechart_btn.setBackgroundResource(R.drawable.blue_btn); }項(xiàng)目主界面計(jì)分邏輯部分代碼:chart_goals=0; Cursordata=chart_db.dbQuery(); Calendarc_date=Calendar.getInstance(); Stringdate=c_date.get(Calendar.YEAR)+"-"+(c_date.get(Calendar.MONTH)+1)+"-"+c_date.get(Calendar.DAY_OF_MONTH); if(data.moveToNext()){ if(date.split("-")[1].equals(data.getString(0).split("-")[1])){ if(!chart_db.dbQuery(date).moveToNext()){ chart_db.dbInsert(newString[]{date,"Y","N","N","N","70"}); } for(intindex=0;index<data.getCount();index++){ if("Y".equals(data.getString(4)))chart_goals+=Integer.parseInt(data.getString(5)); else{ inttemp=70; if("Y".equals(data.getString(2))&&"Y".equals(data.getString(3)))temp=100; else{ if("Y".equals(data.getString(2)))temp=90; if("Y".equals(data.getString(3)))temp=80; } chart_goals+=temp; } data.moveToNext(); } }6.4項(xiàng)目其它界面展示項(xiàng)目飲水管理系統(tǒng)、休息管理系統(tǒng)等相關(guān)功能系統(tǒng)的其它界面及一些提示信息界面的樣式詳細(xì)見下圖:圖6-16飲水知識樣式界面圖6-17推薦時蔬樣式界面圖6-18退出提示信息圖6-19鬧鈴提醒界面圖6-20飲水設(shè)置功能界面圖6-21飲水管理系統(tǒng)正在飲水中界面圖6-22添加鍛煉項(xiàng)目提示信息界面圖6-23刪除個人信息提示信息界面結(jié)論基于Android的個人健康管理系統(tǒng)共實(shí)現(xiàn)主要功能有注冊登錄功能、飲水管理功能、鍛煉管理功能、飲食管理功能、休息管理功能、評分系統(tǒng)功能、個人信息管理功能。開發(fā)過程中涉及Android、Java、SQL等知識,使用到PhotoShop、Eclipse等工具,于WindowsOS、SDK、ADK、JDK-1.8等環(huán)境下編寫。通過對基于Android的個人健康管理系統(tǒng)的設(shè)計(jì)與開發(fā),使個人從中學(xué)到很多東西,不僅將所學(xué)知識融會貫通,還掌握了許多新知識,對整個項(xiàng)目開發(fā)流程也有了一定的認(rèn)識與了解。首先就Android知識而言,通過對項(xiàng)目的設(shè)計(jì)、思考、編寫代碼等過程,加深了解了之前所學(xué)知識。同時,學(xué)到了許多新知識。通過應(yīng)用的開發(fā),對ListView、Button、ImageButton、SeekBard、TextView等組件的使用有了深入了解,對界面切換動畫的相關(guān)知識也有了一定的了解,在本次應(yīng)用中使用了大量的數(shù)據(jù)庫操作,也對數(shù)據(jù)庫的相關(guān)知識更加熟悉,對Android四大組件的使用加深了認(rèn)識。雖然此次項(xiàng)目為個人開發(fā),但是仍然認(rèn)識了解到了項(xiàng)目開發(fā)的整個流程和各個階段的作用。對于本次應(yīng)用的另一個主題,健康,通過對其的研究與了解,對相關(guān)功能的設(shè)計(jì)與資料的搜集,使加深了對健康的認(rèn)識與了解,學(xué)到了許多健康的知識。通過此次畢業(yè)設(shè)計(jì),很好的鍛煉與提升了自己的軟件開發(fā)能力與經(jīng)驗(yàn),對日后的開發(fā)與工作起到了很大的幫助。參考文獻(xiàn)張利國.代聞,龔海平Android移動開發(fā)案例詳解[M].北京:人民郵電出版社,2010王維虎,劉忠,李叢JAVA程序設(shè)計(jì)[M].華中科技大學(xué)出版社,2013程正權(quán),尹春嬌,王光亞Java程序設(shè)計(jì)基礎(chǔ)與實(shí)訓(xùn)[M].安徽科學(xué)技術(shù)出版社,2012吳想想基于Android平臺軟件開發(fā)方法的研究與應(yīng)用[D].北京郵電大學(xué),2011馬駿驍;布魯卡;曹晨,關(guān)于UI不得不說的那些事[J].移動信息,2013Freeman,E.HeadFirstDesignPattern[M].O’ReillyMedia,Inc,2004鄭阿奇,丁有和,周怡君,鄭進(jìn)Oracle實(shí)用教程[M],電子工業(yè)出版社,2013聶少萍,黃靜芝飲水健康及其影響性研究現(xiàn)狀[J],華南預(yù)防醫(yī)學(xué),2013Johnson,Richard,A.JAVADATABASECONNECTIVITYUSINGSQLITE:ATUTORIAL[J],AlliedAcademiesInterontaionalConference,2014,(18)MarkMurphyBeginningAndroid2[M].APress,2010致謝作者在設(shè)計(jì)(論文)期間都是在降愛蓮副教授全面、具體指導(dǎo)下完成進(jìn)行的。降愛蓮副教授淵博的學(xué)識、敏銳的思維、民主而嚴(yán)謹(jǐn)?shù)淖黠L(fēng)使學(xué)生受益非淺,并終生難忘。感謝降愛蓮副教授等在畢業(yè)設(shè)計(jì)工作中給予的幫助。感謝我的學(xué)友和朋友對我的關(guān)心和幫助。外文原文Application

FundamentalsAndroid

applications

are

written

in

the

Java

programming

language.

The

compiled

Java

code

along

with

any

data

and

resource

files

required

by

the

application

is

bundled

by

the

aapt

tool

into

an

Android

package,

an

archive

file

marked

by

an

.apk

suffix.

This

file

is

the

vehicle

for

distributing

the

application

and

installing

it

on

mobile

devices;

it's

the

file

users

download

to

their

devices.

All

the

code

in

a

single

.apk

file

is

considered

to

be

one

application.

In

many

ways,

each

Android

application

lives

in

its

own

world:

(1)By

default,

every

application

runs

in

its

own

Linux

process.

Android

starts

the

process

when

any

of

the

application's

code

needs

to

be

executed,

and

shuts

down

the

process

when

it's

no

longer

needed

and

system

resources

are

required

by

other

applications.

(2)Each

process

has

its

own

virtual

machine

(VM),

so

application

code

runs

in

isolation

from

the

code

of

all

other

applications.

(3)By

default,

each

application

is

assigned

a

unique

Linux

user

ID.

Permissions

are

set

so

that

the

application's

files

are

visible

only

to

that

user

and

only

to

the

application

itself

although

there

are

ways

to

export

them

to

other

applications

as

well.

It's

possible

to

arrange

for

two

applications

to

share

the

same

user

ID,

in

which

case

they

will

be

able

to

see

each

other's

files.

To

conserve

system

resources,

applications

with

the

same

ID

can

also

arrange

to

run

in

the

same

Linux

process,

sharing

the

same

VM.

Application

Components

A

central

feature

of

Android

is

that

one

application

can

make

use

of

elements

of

other

applications

(provided

those

applications

permit

it).

For

example,

if

your

application

needs

to

display

a

scrolling

list

of

images

and

another

application

has

developed

a

suitable

scroller

and

made

it

available

to

others,

you

can

call

upon

that

scroller

to

do

the

work,

rather

than

develop

your

own.

Your

application

doesn'tincorporate

the

code

of

the

other

application

or

link

to

it.

Rather,

it

simply

starts

up

that

piece

of

the

other

application

when

the

need

arises.

For

this

to

work,

the

system

must

be

able

to

start

an

application

process

when

any

part

of

it

is

needed,

and

instantiate

the

Java

objects

for

that

part.

Therefore,

unlike

applications

on

most

other

systems,

Android

applications

don't

have

a

single

entry

point

for

everything

in

the

application

(no

main()

function,

for

example).

Rather,

they

have

essential

components

that

the

system

can

instantiate

and

run

as

needed.

There

are

four

types

of

components:

(1)Activities

An

activity

presents

a

visual

user

interface

for

one

focused

endeavor

the

user

can

undertake.

For

example,

an

activity

might

present

a

list

of

menu

items

users

can

choose

from

or

it

might

display

photographs

along

with

their

captions.

A

text

messaging

application

might

have

one

activity

that

shows

a

list

of

contacts

to

send

messages

to,

a

second

activity

to

write

the

message

to

the

chosen

contact,

and

other

activities

to

review

old

messages

or

change

settings.

Though

they

work

together

to

form

a

cohesive

user

interface,

each

activity

is

independent

of

the

others.

Each

one

is

implemented

as

a

subclass

of

the

Activity

base

class.

An

application

might

consist

of

just

one

activity

or,

like

the

text

messaging

application

just

mentioned,

it

may

contain

several.

What

the

activities

are,

and

how

many

there

are

depends,

of

course,

on

the

application

and

its

design.

Typically,

one

of

the

activities

is

marked

as

the

first

one

that

should

be

presented

to

the

user

when

the

application

is

launched.

Moving

from

one

activity

to

another

is

accomplished

by

having

the

current

activity

start

the

next

one.

Each

activity

is

given

a

default

window

to

draw

in.

Typically,

the

window

fills

the

screen,

but

it

might

be

smaller

than

the

screen

and

float

on

top

of

other

windows.

An

activity

can

also

make

use

of

additional

windows

for

example,

a

pop-up

dialog

that

calls

for

a

user

response

in

the

midst

of

the

activity,

or

a

window

that

presents

users

with

vital

information

when

they

select

a

particular

item

on-screen.

The

visual

content

of

the

window

is

provided

by

a

hierarchy

of

views

objects

derived

from

the

base

View

class.

Each

view

controls

a

particular

rectangular

spacewithin

the

window.

Parent

views

contain

and

organize

the

layout

of

their

children.

Leaf

views

(those

at

the

bottom

of

the

hierarchy)

draw

in

the

rectangles

they

control

and

respond

to

user

actions

directed

at

that

space.

Thus,

views

are

where

the

activity's

interaction

with

the

user

takes

place.

For

example,

a

view

might

display

a

small

image

and

initiate

an

action

when

the

user

taps

that

image.

Android

has

a

number

of

ready-made

views

that

you

can

use

including

buttons,

text

fields,

scroll

bars,

menu

items,

check

boxes,

and

more.

A

view

hierarchy

is

placed

within

an

activity's

window

by

the

Activity.setContentView()

method.

The

content

view

is

the

View

object

at

the

root

of

the

hierarchy.

(See

the

separate

User

Interface

document

for

more

information

on

views

and

the

hierarchy.)

(2)Services

A

service

doesn't

have

a

visual

user

interface,

but

rather

runs

in

the

background

for

an

indefinite

period

of

time.

For

example,

a

service

might

play

background

music

as

the

user

attends

to

other

matters,

or

it

might

fetch

data

over

the

network

or

calculate

something

and

provide

the

result

to

activities

that

need

it.

Each

service

extends

the

Service

base

class.

A

prime

example

is

a

media

player

playing

songs

from

a

play

list.

The

player

application

would

probably

have

one

or

more

activities

that

allow

the

user

to

choose

songs

and

start

playing

them.

However,

the

music

playback

itself

would

not

be

handled

by

an

activity

because

users

will

expect

the

music

to

keep

playing

even

after

they

leave

the

player

and

begin

something

different.

To

keep

the

music

going,

the

media

player

activity

could

start

a

service

to

run

in

the

background.

The

system

would

then

keep

the

music

playback

service

running

even

after

the

activity

that

started

it

leaves

the

screen.

It's

possible

to

connect

to

(bind

to)

an

ongoing

service

(and

start

the

service

if

it's

not

already

running).

While

connected,

you

can

communicate

with

the

service

through

an

interface

that

the

service

exposes.

For

the

music

service,

this

interface

might

allow

users

to

pause,

rewind,

stop,

and

restart

the

playback.

Like

activities

and

the

other

components,

services

run

in

the

main

thread

of

theapplication

process.

So

that

they

won't

block

other

components

or

the

user

interface,

they

often

spawn

another

thread

for

time-consuming

tasks

(like

music

playback).

See

Processes

and

Threads,

later.

(3)Broadcast

receivers

A

broadcast

receiver

is

a

component

that

does

nothing

but

receive

and

react

to

broadcast

announcements.

Many

broadcasts

originate

in

system

code

for

example,

announcements

that

the

timezone

has

changed,

that

the

battery

is

low,

that

a

picture

has

been

taken,

or

that

the

user

changed

a

language

preference.

Applications

can

also

initiate

broadcasts

for

example,

to

let

other

applications

know

that

some

data

has

been

downloaded

to

the

device

and

is

available

for

them

to

use.

An

application

can

have

any

number

of

broadcast

receivers

to

respond

to

any

announcements

it

considers

important.

All

receivers

extend

the

BroadcastReceiver

base

class.

Broadcast

receivers

do

not

display

a

user

interface.

However,

they

may

start

an

activity

in

response

to

the

information

they

receive,

or

they

may

use

the

NotificationManager

to

alert

the

user.

Notifications

can

get

the

user's

attention

in

various

ways

flashing

the

backlight,

vibrating

the

device,

playing

a

sound,

and

so

on.

They

typically

place

a

persistent

icon

in

the

status

bar,

which

users

can

open

to

get

the

message.

(4)Content

providers

A

content

provider

makes

a

specific

set

of

the

application's

data

available

to

other

applications.

The

data

can

be

stored

in

the

file

system,

in

an

SQLite

database,

or

in

any

other

manner

that

makes

sense.

The

content

provider

extends

the

ContentProvider

base

class

to

implement

a

standard

set

of

methods

that

enable

other

applications

to

retrieve

and

store

data

of

the

type

it

controls.

However,

applications

do

not

call

these

methods

directly.

Rather

they

use

a

ContentResolver

object

and

call

its

methods

instead.

A

ContentResolver

can

talk

to

any

content

provider;

it

cooperates

with

the

provider

to

manage

any

interprocess

communication

that's

involved.

See

the

separate

Content

Providers

document

for

more

information

on

using

content

providers.Whenever

there's

a

request

that

should

be

handled

by

a

particular

component,

Android

makes

sure

that

the

application

process

of

the

component

is

running,

starting

it

if

necessary,

and

that

an

appropriate

instance

of

the

component

is

available,

creating

the

instance

if

necessary.

Activating

components:

intents

Content

providers

are

activated

when

they're

targeted

by

a

request

from

a

ContentResolver.

The

other

three

components

activities,

services,

and

broadcast

receivers

are

activated

by

asynchronous

messages

called

intents.

An

intent

is

an

Intent

object

that

holds

the

content

of

the

message.

For

activities

and

services,

it

names

the

action

being

requested

and

specifies

the

URI

of

the

data

to

act

on,

among

other

things.

For

example,

it

might

convey

a

request

for

an

activity

to

present

an

image

to

the

user

or

let

the

user

edit

some

text.

For

broadcast

receivers,

the

Intent

object

names

the

action

being

announced.

For

example,

it

might

announce

to

interested

parties

that

the

camera

button

has

been

pressed.

There

are

separate

methods

for

activating

each

type

of

component:

(1)An

activity

is

launched

(or

given

something

new

to

do)

by

passing

an

Intent

object

to

Context.startActivity()

or

Activity.startActivityForResult().

The

responding

activity

can

look

at

the

initial

intent

that

caused

it

to

be

launched

by

calling

its

getIntent()

method.

Android

calls

the

activity's

onNewIntent()

method

to

pass

it

any

subsequent

intents.

One

activity

often

starts

the

next

one.

If

it

expects

a

result

back

from

the

activity

it's

starting,

it

calls

startActivityForResult()

instead

of

startActivity().

For

example,

if

it

starts

an

activity

that

lets

the

user

pick

a

photo,

it

might

expect

to

be

returned

the

chosen

photo.

The

result

is

returned

in

an

Intent

object

that's

passed

to

the

calling

activity's

onActivityResult()

method.

(2)A

service

is

started

(or

new

instructions

are

given

to

an

ongoing

service)

by

passing

an

Intent

object

to

Context.startService().

Android

calls

the

service's

onStart()

method

and

passes

it

the

Intent

object.

Similarly,

an

intent

can

be

passed

to

Context.bindService()

to

establish

an

ongoing

connection

between

the

calling

component

and

a

target

service.

The

service

receives

the

Intent

object

in

an

onBind()

call.

(If

the

service

is

not

already

running,

bindService()canoptionally

start

it.)

Forexample,

an

activity

might

establish

a

connection

with

the

music

playback

service

mentioned

earlier

so

that

it

can

provide

the

user

with

the

means

(a

user

interface)

for

controlling

t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論