基于Android的手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)+源代碼_第1頁(yè)
基于Android的手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)+源代碼_第2頁(yè)
基于Android的手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)+源代碼_第3頁(yè)
基于Android的手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)+源代碼_第4頁(yè)
基于Android的手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)+源代碼_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、專業(yè)工程綜合實(shí)訓(xùn)設(shè)計(jì)報(bào)告第一章緒論11.1 課題的背景及意義11.2 系統(tǒng)框架1第二章系統(tǒng)分析32.1 系統(tǒng)可行性分析32.1.1 功能可行性分析32.1.2 運(yùn)行環(huán)境可行性分析32.2 開發(fā)環(huán)境簡(jiǎn)介32.2.1 JavaDevelopmentkit(JDK)介紹32.2.2 AndroidSDK介紹32.2.3 Eclipse開發(fā)工具介紹42.2.4 AndroidDevelopmentTools(ADT)介紹4第三章Android開發(fā)常用到的技術(shù)及環(huán)境搭建53.1 Android開發(fā)常用到的技術(shù)53.1.1 Activity53.1.2 Service63.1.3 ContentProvi

2、der內(nèi)容提供者73.1.4 Intent信使73.2 環(huán)境搭建73.2.1 安裝JDK73.2.2 安裝Eclipse83.2.3 AndroidSDK安裝83.2.4 ADT安裝8第四章手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)94.1 計(jì)步器功能的設(shè)計(jì)94.2 計(jì)步器功能的實(shí)現(xiàn)114.2.1 計(jì)步開始及暫停114.2.2 復(fù)位鍵124.2.3 設(shè)置步長(zhǎng)124.2.4 設(shè)置體重124.2.5 歷史記錄的查看及刪除13第五章計(jì)步器的界面效果195.1 用戶界面195.2 設(shè)置界面205.3 歷史界面235.4 日歷選擇界面245.5 用戶離開界面25第六章系統(tǒng)測(cè)試與分析266.1 測(cè)試過(guò)程266.2 測(cè)試分析3

3、9結(jié)論40參考文獻(xiàn)41第一章緒論1.1 課題的背景及意義當(dāng)今社會(huì),手機(jī)已經(jīng)成為人們工作生活中必不可少的一項(xiàng)通訊和娛樂工具,隨著手機(jī)的不斷更新,手機(jī)的各種高層服務(wù)和應(yīng)用層出不窮。現(xiàn)在智能手機(jī)可謂是爆發(fā)式增長(zhǎng),與此同時(shí)傳統(tǒng)手機(jī)在不斷地消失,諾基亞就是在這樣的環(huán)境中受到了重創(chuàng)?,F(xiàn)在主要有三個(gè)使用率和關(guān)注度最高的手機(jī)平臺(tái),分別是:Android,ios和windowsphone平臺(tái),在這三個(gè)平臺(tái)中Android的占有率最高。自2007年11月Google公司發(fā)布Android系統(tǒng)以來(lái),短短幾年時(shí)間,Android已經(jīng)占據(jù)了智能手機(jī)市場(chǎng)的半壁江山,成為目前最為炙手可熱的智能手機(jī)操作系統(tǒng)。Android走

4、進(jìn)了越來(lái)越多人的生活,成為他們獲取信息的主要平臺(tái)。Android平臺(tái)對(duì)于Google和用戶的意義不在于手機(jī)本身,而在于為了推動(dòng)移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)鏈的迅速成型。具有開源性的Android手機(jī)平臺(tái)與之前Symbian、windowsmobile等操作系統(tǒng)不同,它們收取高額的授權(quán)費(fèi)用,而Android不需要,這樣使得應(yīng)用開發(fā)成本大大降低;也正是由于它的源代碼是開放的,使得開發(fā)者可以隨心所欲的開發(fā)應(yīng)用。同時(shí),手機(jī)生產(chǎn)商和軟件開發(fā)商也能夠在這里得到利潤(rùn),手機(jī)軟件得到有效的維護(hù)協(xié)調(diào)發(fā)展。這正是Google發(fā)布Android平臺(tái)的意義,也是Android平臺(tái)的使命所在。同時(shí)目前搭載Android平臺(tái)的應(yīng)用有很多

5、,但針對(duì)傳感器而開發(fā)的應(yīng)用市場(chǎng)上還不多見。本應(yīng)用正是針對(duì)Android手機(jī)內(nèi)置的加速度傳感器而特別設(shè)計(jì)的應(yīng)用。所以鑒于移動(dòng)端應(yīng)用開發(fā)是目前軟件開發(fā)行業(yè)正在興起并會(huì)越來(lái)越炙手可熱的一個(gè)分支,并且針對(duì)傳感器的開發(fā)相對(duì)空白我選擇了研究此課題。1.2 系統(tǒng)框架在設(shè)計(jì)一款軟件時(shí)一般都會(huì)把它分成幾個(gè)模塊,在模塊的基礎(chǔ)上還會(huì)再分小模塊,這樣就達(dá)到了軟件模塊化設(shè)計(jì)的要求,然后再對(duì)各個(gè)小模塊進(jìn)行詳細(xì)設(shè)計(jì)和編寫,采用模塊化的管理方式可以使軟件結(jié)構(gòu)更清晰,也使得軟件的管理更有秩序,使別人容易理解和閱讀,但是這些模塊也要根據(jù)別的模塊來(lái)設(shè)計(jì)和約束,不能隨便設(shè)計(jì)脫離框架,設(shè)計(jì)完成后需要把每個(gè)設(shè)計(jì)完成的模塊根據(jù)總體框架結(jié)合

6、起來(lái)。根據(jù)本軟件的功能需求,將本軟件分為以下幾個(gè)功能模塊,如圖1-1所示:主界面,*結(jié)束保存日期步數(shù)公里暫停/開始卡路里復(fù)位保存記錄關(guān)閉應(yīng)用軟件歷史設(shè)置查 看 歷 史 記 錄刪 除 歷 史 記 錄體重圖1-1整體框架圖設(shè)置用戶步長(zhǎng)設(shè)置用戶體重第二章系統(tǒng)分析2.1 系統(tǒng)可行性分析可行性分析(FeasibilityAnalysis)也稱為可行性研究,是在系統(tǒng)調(diào)查的基礎(chǔ)上,針對(duì)剛剛開發(fā)打算進(jìn)一步應(yīng)用的系統(tǒng)的必要性和可能性的分析和研究。可行性研究的目的主要在于,用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。1該階段通過(guò)對(duì)系統(tǒng)總目標(biāo)的初步調(diào)研與分析,提出可行性方案并進(jìn)行論證。2.1.1 功能可行性

7、分析1、計(jì)步功能:根據(jù)用戶設(shè)置的步長(zhǎng)和體重,估算用戶步行運(yùn)動(dòng)所消耗的熱量。當(dāng)距離發(fā)生改變時(shí)在前臺(tái)界面上刷新用戶步行的步數(shù)、距離、和消耗的卡路里;該計(jì)步功能還實(shí)現(xiàn)了Notification后臺(tái)運(yùn)行的功能。2、設(shè)置參數(shù)功能:設(shè)置用戶的步長(zhǎng)、體重2個(gè)參數(shù)信息。通過(guò)設(shè)置體重可以估算出不同體重的人運(yùn)動(dòng)所消耗的卡路里量。3、退出系統(tǒng)功能:當(dāng)用戶想終止計(jì)步軟件時(shí),可以點(diǎn)擊退出菜單后退出本系統(tǒng)。4、歷史記錄功能:用戶可以查看以往的歷史記錄。5、保存功能:有戶可以保存當(dāng)天的運(yùn)動(dòng)量,以便之后查看。2.1.2 運(yùn)行環(huán)境可行性分析本軟件是在windows7操作系統(tǒng)中,利用Eclipse開發(fā)工具搭載AndroidSDK

8、工具包,結(jié)合Android手機(jī)自帶的sqlite數(shù)據(jù)庫(kù)進(jìn)行開發(fā)。2.2 開發(fā)環(huán)境簡(jiǎn)介2.2.1 JavaDevelopmentkit(JDK)介紹JDK是Java語(yǔ)言的軟件開發(fā)工具包。本應(yīng)用用的是JDK的J2ME版,它主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的Java應(yīng)用程序。沒有JDK的話,無(wú)法編譯Java程序,所以這是開發(fā)Java程序必須安裝的工具。2.2.2 AndroidSDK介紹SDK(softwaredevelopmentkit)軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,AndroidSDK指的是Android專屬的

9、軟件開發(fā)工具包。2.2.3 Eclipse開發(fā)工具介紹Eclipse是一個(gè)開放源代碼的、基于插件的可擴(kuò)展性平臺(tái)。也可以說(shuō)它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境。Eclipse附帶了一些標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(JDK)。本次應(yīng)用就是將Eclipse當(dāng)作Java集成開發(fā)環(huán)境來(lái)使用,但是它的作用并不僅僅如此。由于Eclipse中的每樣?xùn)|西都是插件,所以只要有插件就可以使用它,因而不僅僅是Java語(yǔ)言,C/C+、PH對(duì)語(yǔ)言也可以使用Eclipse。2.2.4 AndroidDevelopmentTools(ADT介紹目前Android開發(fā)所用的開發(fā)工具是Eclipse,在E

10、clipse編譯IDE環(huán)境中,安裝ADT為Android開發(fā)提供開發(fā)工具的升級(jí)或者變更,簡(jiǎn)單理解為在Eclipse下開發(fā)工具的升級(jí)下載工具。ADT擴(kuò)展了Eclipse的功能,讓我們能快速建立新的Android項(xiàng)目、創(chuàng)建應(yīng)用程序的用戶界面。它可以幫助Eclipse找到AndroidSDK,再加上Android框架的API組件調(diào)試使用AndroidSDK工具,以便APK分發(fā)給應(yīng)用程序。同時(shí)大大減輕了Android應(yīng)用程序的開發(fā)工作量,工具集成XML編輯器,將給開發(fā)者一個(gè)令人難以置信的開發(fā)Android應(yīng)用環(huán)境。當(dāng)然如果你不用Eclipse作為你的開發(fā)工具,你就不需要下載ADT只下載SDK®

11、;可開發(fā)。2第三章Android開發(fā)常用到的技術(shù)及環(huán)境搭建3.1 Android開發(fā)常用到的技術(shù)3.1.1 ActivityActivity是Android應(yīng)用程序開發(fā)中最重要的組件。一個(gè)Activity提供一個(gè)屏幕,用戶可以用來(lái)交互以完成某項(xiàng)任務(wù),例如點(diǎn)擊、拍照、撥號(hào)等。它是用戶與應(yīng)用交互的直接且最重要的組件。Activity生命周期可以用幾個(gè)函數(shù)說(shuō)明:onCreate():Activity開始創(chuàng)建時(shí)調(diào)用;onStart():在Activity開始執(zhí)行時(shí)調(diào)用,這時(shí)Activity已經(jīng)可見;onResume():在Activity獲得用戶焦點(diǎn)時(shí)調(diào)用,止匕時(shí)Activity可以和用戶交;onPa

12、use():在Activity被暫停時(shí)調(diào)用,失去用戶焦點(diǎn),但沒有被摧毀;onStop():在Activity被停止時(shí)調(diào)用,此時(shí)Activity已經(jīng)不可見,但仍然沒有被摧毀;onRestart():在Activity被重新啟動(dòng)時(shí)調(diào)用;onDestory():在Activity被徹底摧毀時(shí)調(diào)用。Activity的生命周期在各函數(shù)之間的跳轉(zhuǎn)。如圖3-1:的生命周期圖圖 3-1 Activity3.1.2 Service一個(gè)Service是一段長(zhǎng)生命周期的,沒有用戶界面的程序,可以用來(lái)開發(fā)如監(jiān)控類程序。一個(gè)很好的例子就是用手機(jī)在播放音樂時(shí),用戶可以進(jìn)行其它應(yīng)用的活動(dòng)而此時(shí)并沒有播放音樂的界面,但是音樂

13、在后臺(tái)播放并不受影響,這就是Service的功勞。還有就是鬧鐘提醒,當(dāng)你設(shè)置好鬧鐘后并不需要一直顯示在鬧鐘那個(gè)界面,甚至手機(jī)也可以關(guān)掉但是只要時(shí)間到了,鬧鐘依然可以提醒,這也是Service的作用3.1.3 ContentProvider內(nèi)容提供者android平臺(tái)提供了ContentProvider,它是一個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供數(shù)據(jù)給其他應(yīng)用程序。這些數(shù)據(jù)可以存儲(chǔ)在文件系統(tǒng)中、在一個(gè)SQLite數(shù)據(jù)庫(kù)、或以任何其他合理的方式。本文用到了文件存儲(chǔ)和SharedPreferences的存儲(chǔ)方式。文件存儲(chǔ)大家都很熟悉,就是以文件為操作對(duì)象,向文件中寫入或讀取數(shù)據(jù)。SharedPreferenc

14、es可以將數(shù)據(jù)保存到應(yīng)用程序的私有存儲(chǔ)區(qū),這些存儲(chǔ)區(qū)中的數(shù)據(jù)只能被寫入這些數(shù)據(jù)的軟件讀取。它的本質(zhì)是基于XML±件存儲(chǔ)key-value鍵值對(duì)數(shù)據(jù),通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息。例如:登陸時(shí)用到的用戶名和密碼。3.1.4 Intent信使Intent也是Android開發(fā)者比較重要的一部分,它主要用來(lái)解決Android應(yīng)用的各項(xiàng)組件之間的通訊,被稱為Android應(yīng)用中的信使。Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。所以它常被用來(lái)啟動(dòng)一個(gè)A

15、ctivity或Service,3例如當(dāng)從一個(gè)Activity啟動(dòng)另一個(gè)Activity時(shí),可以這樣操作,Intentintent=newIntent();intent.setClass(startActivity.this,secondActivity.class);this.startActivity(intent)。3.2 環(huán)境搭建首先要有一臺(tái)安裝有Windows系統(tǒng)的計(jì)算機(jī),接下來(lái)就是安裝過(guò)程。3.2.1 安裝JDK下載JDK,在這里雙擊按提示安裝。然后是配置環(huán)境變量:1 .我的電腦屬性環(huán)境變量系統(tǒng)變量;2 .JAVA_HOME為:D:ProgramFilesjdk(你安裝JDK的目錄

16、);3 .CLASSPATH!為:;JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOMEbin;4 .Path:在開始追加%JAVA_HOMEbin;如果安裝成功,打開cmd窗口,輸入java-version會(huì)出現(xiàn)如圖3-1顯示的信息:圖3-1JDK安裝成功提示信息3.2.2 安裝Eclipse下載Eclipse,這里是網(wǎng)址/downloads/解壓后即可使用。3.2.3 AndroidSDK安裝在AndroidDevelopers下載最新版本的壓縮包,下載完成后解壓到任意路徑,運(yùn)行SDKSetu

17、p.exe。選定你要安裝的內(nèi)容。這里也需要配置環(huán)境變量,在用戶變量中新建PATH1為:AndroidSDK中的tools絕對(duì)路徑。53.2.4 ADT安裝打開EclipseIDE,點(diǎn)擊菜單中的“Help”然后點(diǎn)擊“InstallNewSoftware”,再點(diǎn)擊Add.按鈕,這時(shí)會(huì)彈出一個(gè)對(duì)話框要求輸入,Namef口Location:Name項(xiàng)可以自己隨便填取,LocationftAhttp:/dl-的下拉列表中選擇我們剛才添加的ADT我們會(huì)看到下面出有DeveloperTools,展開它會(huì)有AndroidDDMS和AndroidDevelopmentTool,選定他們。然后按要求一步一步nex

18、t,完成之后,這個(gè)過(guò)程可能會(huì)很慢。這取決于網(wǎng)絡(luò)環(huán)境。最后選擇Window->Preferences.在左邊的面板選擇Android,然后再右側(cè)點(diǎn)擊Browse,并選中SDK各徑。點(diǎn)擊Apply,到此就配置完成了6。第四章手機(jī)計(jì)步器的設(shè)計(jì)與實(shí)現(xiàn)4.1 計(jì)步器功能的設(shè)計(jì)軟件采用最主流的Android軟件應(yīng)用開發(fā)風(fēng)格,并使用Android的原生組件進(jìn)行開發(fā),界面友好,簡(jiǎn)潔易懂,組建布局具有誘導(dǎo)性,用戶使用極其方便快捷。1、主界面操作流程見圖4-1:圖4-1圖為主界面操作流程圖2、設(shè)置界面操作流程見圖4-2:圖4-2圖為設(shè)置界面操作流程圖3、日歷選擇界面操作流程見圖4-3:圖4-3日歷選擇界面操

19、作流程圖4、歷史界面操作流程見圖4-4:刪除圖4-4歷史界面操作流程圖5、復(fù)位界面操作流程見圖4-5:主界面復(fù)位*清空數(shù)據(jù)、4圖4-5復(fù)位界面操作流程圖6、關(guān)閉程序界面操作流程見圖4-6:主界面,、J,二結(jié)束程序、噎>圖4-6關(guān)閉程序界面操作流程圖4.2 計(jì)步器功能的實(shí)現(xiàn)計(jì)步器的主要功能有:計(jì)步開始/暫停,設(shè)置,顯示運(yùn)動(dòng)所消耗的卡路里,走過(guò)長(zhǎng)度。本軟件是一個(gè)結(jié)合手機(jī)用戶特別是智能手機(jī)用戶常用功能的一個(gè)軟件平臺(tái),本軟件可以通過(guò)界面快速獲取運(yùn)動(dòng)的情況,獲取信息后可以對(duì)這些信息進(jìn)行個(gè)性化處理以方便用戶直觀的感受運(yùn)動(dòng)量。4.2.1 計(jì)步開始及暫停首先對(duì)暫停/開始鍵做一個(gè)監(jiān)聽start_pause

20、_button.setOnClickListener(newView.OnClickListener()同時(shí)還要對(duì)此時(shí)狀態(tài)做一個(gè)判斷start_pause_button.setText(mIsRunning?R.string.pause:R.string.resume);若初始狀態(tài)為記錄則顯示暫停,若初始狀態(tài)為非記錄狀態(tài)則顯示開始。4.2.2 復(fù)位鍵對(duì)清零按鈕做一個(gè)View即:resetButton=(Button)findViewById(R.id.reset_button);實(shí)現(xiàn)清零的語(yǔ)句很簡(jiǎn)單,對(duì)“開始”鍵做一個(gè)監(jiān)聽,當(dāng)用戶點(diǎn)擊“開始”鍵時(shí),即:resetButton.setOnClic

21、kListener(newView.OnClickListener()7執(zhí)行一下命令:publicvoidonClick(Viewv)resetValues(true);這樣記錄數(shù)據(jù)清零的按鈕就完成了。4.2.3 設(shè)置步長(zhǎng)對(duì)于設(shè)置步長(zhǎng),首先要獲取用戶所輸入的步長(zhǎng)信息:returnFloat.valueOf(mSettings.getString("step_length","70")若用戶未對(duì)步長(zhǎng)信息進(jìn)行編輯,則默認(rèn)為70.在DistanceNotfier中使用mStepLength來(lái)計(jì)算走過(guò)的距離:mDistance=mDistance+(float)

22、(mStepLength/100000.0);notifyListener();4.2.4 設(shè)置體重對(duì)于設(shè)置體重,首先要獲取用戶所輸入的體重信息:returnFloat.valueOf(mSettings.getString("body_weight","50若用戶未對(duì)步長(zhǎng)信息進(jìn)行編輯,則默認(rèn)為50.在CaloriesNotifier中使用mBodyWeight來(lái)計(jì)算用戶因運(yùn)動(dòng)所消耗的卡路里:mCalories+=(mBodyWeight*(mIsRunning?METRIC_RUNNING_FACTORMETRIC_WALKING_FACTOR)*mStepLe

23、ngth/100000.0;notifyListener();4.2.5 歷史記錄的查看及刪除publicclassViewlextendsActivity也使用ActionBarActivity出現(xiàn)閃退不能運(yùn)行,可以使用ActivityprivateListViewlist;privateButtonbtnBack,btnForward;privateintmYear,mMonth,mDay;privateTextViewtvTitle;String口from;Stringtoday;intto;int_id;SimpleCursorAdaptermAdapter;DataBasedb;Cu

24、rsorcur;OverrideprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedlnstanceState);setContentView(R.layout.viewl);db=newDataBase(this);db.CreatTable_amount();list=(ListView)findViewById(R.id.listViewl );Calendarc=Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00");mYear=c

25、.get(Calendar.YEARmMonth=c.get(Calendar.MONT)+1;mDay=c.get(Calendar.DAY_OF_MOh)ITHif(mMonth<10)today=mYear+"-"+"0"+mMonth;elsetoday=mYear+"-"+mMonth;cur=db.getAmount(today);from=newString"date","Distance"to=newintR.id.textViewl,R.id.textView2;cur=

26、db.getAmount(today);mAdapter=newSimpleCursorAdapter(this,R.layout.items,cur,from,to);list.setAdapter(mAdapter);list.setOnItemLongClickListener(newOnItemLongClickListener()OverridepublicbooleanonItemLongClick(AdapterView<?>Vparent,android.view.Viewview,intposition,longid)/TODOAuto-generatedmeth

27、odstub_id=(int)id;newAlertDialog.Builder(View1.this).setTitle("提示?).setMessage(”確定刪除該細(xì)節(jié)?)setIcon(R.drawable.ic_launcher).setPositiveButton("確定",newDialogInterface.OnClickListener()publicvoidonClick(DialogInterfacedialog,intwhichButton)/Log.v("",""+_id);db.delAmount

28、(_id);mAdapter.changeCursor(cur);(SimpleCursorAdapter)mAdapter).notifyDataSetChanged();finish();System.out.println("ok");list.setAdapter(mAdapter);).setNegativeButton("取消",newDialogInterface.OnClickListener()publicvoidonClick(DialogInterfacedialog,intwhichButton).show();returnfal

29、se;);tvTitle=(TextView)findViewById(R.id.tvTitle);tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+mYear+"-"+(mMonth+1)+"-"+"01");/if(mMonth=12)tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+(mY

30、ear+1)+"-"+1+"-"+"01");elseif(mMonth>12)mMonth=1;mYear=mYear+1;tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+mYear+"-"+(mMonth+1)+"-"+"01");/btnBack=(Button)findViewById(R.id.btnBack);btnForward=(B

31、utton)findViewById(R.id.btnForward);ButtonListenerbuttonlistener=newButtonListener();btnBack.setOnClickListener(buttonlistener);btnForward.setOnClickListener(buttonlistener);classButtonListenerimplementsOnClickListenerpublicvoidonClick(android.view.Viewv)switch(v.getId()caseR.id.btnBack:leftView();b

32、reak;caseR.id.btnForward:rightView();break;privatevoidrightView()Calendarc=Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00");mMonth+;tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+mYear+"-"+(mMonth+1)+"-"+"01");if(mM

33、onth=12)tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+(mYear+1)+"-"+1+"-"+"01");elseif(mMonth>12)mMonth=1;mYear=mYear+1;tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+mYear+"-"+(

34、mMonth+1)+"-"+"01");if(mMonth<10)today=mYear+"-"+"0"+mMonth;elsetoday=mYear+"-"+mMonth;cur=db.getAmount(today);mAdapter.changeCursor(cur);(SimpleCursorAdapter)mAdapter).notifyDataSetChanged();privatevoidleftView()mMonth=mMonth-1;if(mMonth<1)mMo

35、nth=12;mYear=mYear-1;tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+(mYear+1)+"-"+"1"+"-"+"01");elseif(mMonth>=12)mMonth=1;mYear=mYear+1;tvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-&q

36、uot;+(mYear+1)+"-"+"1"+"-"+"01");elsetvTitle.setText(mYear+"-"+mMonth+"-"+"01"+"-"+mYear+"-"+(mMonth+1)+"-"01");if(mMonth<10)today=mYear+"-"+"0"+mMonth;elsetoday=mYear+&quo

37、t;-"+mMonth;cur=db.getAmount(today);mAdapter.changeCursor(cur);(SimpleCursorAdapter)mAdapter).notifyDataSetChanged();第五章計(jì)步器的界面效果5.1用戶界面5.2設(shè)置界面圖5-1用戶主界面圖5-2設(shè)置體重界面圖5-3設(shè)置步長(zhǎng)界面5.4日歷選擇界面色到己錄名無(wú)境,跑羌疆!2017-1-01-2017-2-01下一月上一月圖5-5日期選擇界面5.5用戶離開界面圖5-6用戶離開界面第六章系統(tǒng)測(cè)試與分析6.1測(cè)試過(guò)程1)點(diǎn)擊應(yīng)用圖標(biāo),如圖6-1所示:施用中心2M5澗更林放開那三國(guó)

38、2蔡蛾工具圖6-1圖為計(jì)步器主界面2)計(jì)步器主界面開始記錄數(shù)據(jù),如圖 6-2所示:05:13圖6-2圖為計(jì)步器主界面4)繼續(xù)運(yùn)動(dòng)觀察主界面數(shù)據(jù)是否有變化,如圖 6-4所示:圖6-4圖為停止計(jì)步后仍在運(yùn)動(dòng)界面5)進(jìn)入體重設(shè)置界面,如圖6-5所示:圖6-5圖為體重設(shè)置界面6)進(jìn)入步長(zhǎng)設(shè)置界面,如圖6-6所示:育 Q 5:21圖6-6圖為步長(zhǎng)設(shè)置界面7)選擇日期界面,如圖6-7所示:令 Ql 5:242016年12月16日周五20151115201612162017117完成3a匕圖6-7圖為日期選擇界面章Q5:26喇悅跑2016-12-16y10.0833km囪開始:口£W存匕圖6-8圖

39、為日期選擇后的界面8)歷史界面,如圖6-9所示:號(hào) Q 5:#圖6-8圖為歷史界面悅跑歷史記錄悅無(wú)境,跑無(wú)疆!2017-1-01-2017-2-01下一月上一月9)歷史查詢界面 如圖6-9所示:圖6-9圖為歷史查詢界面審Q5:36明悅跑歷史記錄悅無(wú)境.跑無(wú)疆!廠2016-12-01-20171012016-12-16,0720km2016-12-260J284km2016-12-300.1530km上一月下一月10)歷史刪除界面 如圖6-10所示:圖6-10圖為歷史刪除界面號(hào) Q 5:39圖6-11圖為歷史刪除后的界面悅跑歷史記錄一悅無(wú)境,跑無(wú)疆12016-12-01-2017-1-010.0

40、720kmOJ 530km2016-12-162016-12-30上一月下一月11)退出程序界面 如圖6-12所示:圖6-12圖為退出程序界面6.2測(cè)試分析本軟件中幾個(gè)模塊的功能經(jīng)過(guò)測(cè)試,均測(cè)試通過(guò),測(cè)試結(jié)果和最初的設(shè)計(jì)基本一致,所有的功能均能正常運(yùn)行,軟件需要比較特殊的運(yùn)行環(huán)境,首先手機(jī)的重力感應(yīng)功能必須有,而且Android系統(tǒng)的版本過(guò)低將不能使用。至此基于安卓平臺(tái)的手機(jī)計(jì)步器的設(shè)計(jì)基本完成經(jīng)過(guò)了數(shù)月的努力,Android平臺(tái)手計(jì)步器軟件終于完成了。本軟件能實(shí)現(xiàn)用戶對(duì)計(jì)步器的基本要求。方便用戶開啟關(guān)閉計(jì)步器,對(duì)運(yùn)動(dòng)情況和運(yùn)動(dòng)量可以直觀的從主界面獲取信息,設(shè)置選項(xiàng)中的智能人機(jī)交互平臺(tái)也可以明

41、了的對(duì)用戶信息進(jìn)行編輯,不需要復(fù)雜的操作不需要學(xué)習(xí),一目了然。對(duì)于智能手機(jī)用戶來(lái)說(shuō),基于安卓平臺(tái)的手機(jī)計(jì)步器提供了一個(gè)快捷方便的平臺(tái)。為用戶提供隨時(shí)隨地的服務(wù),節(jié)省用戶不必要的資金消耗與時(shí)間消耗是本軟件設(shè)計(jì)的一個(gè)宗旨,整個(gè)框架和細(xì)節(jié)的設(shè)計(jì)都是圍繞這個(gè)宗旨進(jìn)行的,雖然整個(gè)軟件還不是很成熟,還有很多不足和需要改進(jìn)的地方,或者還有很多信息提供不到位,例如我們可以加入音樂播放模塊,是用戶在運(yùn)動(dòng)的同時(shí)享受輕松快樂的環(huán)境,這些還需要日后慢慢優(yōu)化和改善,但是最初的設(shè)計(jì)都實(shí)現(xiàn)了。在現(xiàn)在的功能基礎(chǔ)上本軟件可以進(jìn)行擴(kuò)展升級(jí)。本軟件最初設(shè)計(jì)的時(shí)候就是一個(gè)可以擴(kuò)展的框架,所以為將來(lái)加入新的功能提供了很大的方便。本軟件

42、雖然不是很強(qiáng)大,但是是我自己親手編寫的,開發(fā)一個(gè)能在時(shí)下最流行的軟件,使之順利的在平臺(tái)上運(yùn)行是一件令人興奮的事情。把自己的想法一步一步地付諸實(shí)踐,最后成為一個(gè)真實(shí)的實(shí)物,被別人使用和稱贊,此時(shí)得到的成就感是尤為強(qiáng)烈的。參考文獻(xiàn)1 高煥堂.GoogleAndroid應(yīng)用程序框架原理與程序設(shè)計(jì).2 E2ECloud工作室著深入淺出GoogleAndroidM北京:人民郵電出版社,2009-08-1.3 AndroidAPI.chm4 王家林大話企業(yè)級(jí)Android應(yīng)用開發(fā)實(shí)戰(zhàn)M電子工業(yè)出版社,2011,85 差沙.用Android手機(jī)開發(fā)應(yīng)用.程序員.2008.6 萬(wàn)瑪,寧關(guān)永,韓相軍.嵌入式數(shù)據(jù)

43、庫(kù)典型技術(shù)SQLite和Berkeley的研究.微計(jì)算機(jī)信息,2006.7 馬越.Andriod的架構(gòu)與應(yīng)用.北京:中國(guó)地質(zhì)大學(xué),2008.8 高昂,馮大祥等.GoogleAndroid開發(fā)入門與實(shí)踐.北京:人民郵電出版社,2009.9 張孝祥著java就業(yè)培訓(xùn)教程M北京:清華大學(xué)出版社,2007.10 MichaelMcRoberts著,楊繼志,郭敬譯.Arduino從基礎(chǔ)到實(shí)踐M.北京:電子工業(yè)出版社,2013.附錄:1. 啟動(dòng)界面importandroid.app.Activity;importandroid.annotation.SuppressLint;importandroid.c

44、ontent.Intent;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;/importandroid.support.v7.app.ActionBarActivity;/importandroid.widget.ImageView;importandroid.widget.TextView;publicclassWelcomeextendsActivity/ActionBarActivity可以使用ActivityprivateHandlermHandler=newHandler();Ima

45、geViewimageview;TextViewtextview;intalpha=150;intb=0;SuppressLint("NewApi","HandlerLeak")SuppressWarnings("deprecation")OverrideprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.welcome);imageview=(ImageView)this.f

46、indViewById(R.id.imageView1);imageview.setImageAlpha(alpha);newThread(newRunnable()publicvoidrun()while(b<2)tryif(b=0)Thread.sleep(1000);b=1;elseThread.sleep(50);updateApp();catch(InterruptedExceptione)e.printStackTrace();).start();mHandler=newHandler()OverridepublicvoidhandleMessage(Messagemsg)s

47、uper.handleMessage(msg);imageview.setAlpha(alpha);imageview.invalidate();publicvoidupdateApp()alpha-=5;if(alpha<=0)b=2;/漸變效果結(jié)束時(shí)啟動(dòng)主菜單的ActivityIntentin=newIntent(this,com.zyl11123ok.deRun.View.class);startActivity(in);this.finish();mHandler.sendMessage(mHandler.obtainMessage();2. 主界面代碼importjava.ut

48、il.Calendar;importjava.util.TimeZone;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.DatePickerDialog;importandroid.app.DatePickerDialog.OnDateSetListener;importandroid.content.ComponentName;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.

49、content.Intent;importandroid.content.ServiceConnection;importandroid.content.SharedPreferences;.Uri;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.IBinder;importandroid.os.Message;importandroid.preference.PreferenceManager;/importandroid.support.v7.app.ActionBarActivity;/importand

50、roid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.DatePicker;importandroid.widget.EditText;importandroid.widget.ImageButton;importandroid.widget.TextView;importandroid.widget.Toast;importandroid.R.layout;importcom

51、.zyl11123ok.deRun.R;importcom.zyl.deRun.DataBase.DataBase;閃退不能運(yùn)publicclassViewextendsActivity/使用ActionBarActivit行y可以使用ActivityprivatestaticfinalStringTAG="Delightful"privateButtonbtnReset,btnCancel,btnSave,btnDate,btnNext,btnAC;publicDataBasedb;privateTextViewtvDate,tvCount,tvMile,tvKaluli

52、;privateButtonimageButton;privateSharedPreferencesmSettings;privateSettingsmPedometerSettings;privateUtilsmUtils;privateDatePickerDialogdialog;privateintmStepValue;privatefloatmDistanceValue;privatebooleanmIsRunning;privatebooleanmQuitting=false;privateintmYear;privateintmMonth;privateintmDay;privat

53、eintstep_length;intacctitemid=-1;/OverrideprotectedvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);Log.i(TAG,"ACTIVITYonCreate");mStepValue=0;mUtils=Utils.getInstance();setContentView(R.layout.view_plus);btnReset=(Button)findViewById(R.id.BtnReset);btnCancel=(Butto

54、n)findViewById(R.id.btnCancel);btnSave=(Button)findViewById(R.id.BtnSave);btnDate=(Button)findViewById(R.id.BtnEdit);btnNext=(Button)findViewById(R.id.BtnNext);btnAC=(Button)findViewById(R.id.btnAC);db=newDataBase(this);db.CreatTable_amount();tvDate=(TextView)findViewById(R.id.tvDate);initTime();if(

55、mMonth<10&&mDay<10)tvDate.setText(mYear+"-"+"0"+mMonth+"-"+"0"+mDay);elseif(mMonth<10&&mDay>=10)tvDate.setText(mYear+"-"+"0"+mMonth+"-"+mDay);elseif(mMonth>=10&&mDay<10)tvDate.setText(mYear+"-"+mMonth+"-"+"0"+mDay);elsetvDate.setText(mYear+"-"+mMonth+"-"+mDay);ButtonListenerbuttonlistener=newButtonListener();btnDate.setOnClickLis

溫馨提示

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

評(píng)論

0/150

提交評(píng)論