基于Android系統(tǒng)的計步器軟件的設(shè)計與制作_第1頁
基于Android系統(tǒng)的計步器軟件的設(shè)計與制作_第2頁
基于Android系統(tǒng)的計步器軟件的設(shè)計與制作_第3頁
基于Android系統(tǒng)的計步器軟件的設(shè)計與制作_第4頁
基于Android系統(tǒng)的計步器軟件的設(shè)計與制作_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北京郵電大學(xué)世傳感器的種類很多,其中包括加速度傳感器、姿態(tài)傳感器、磁場傳感器、溫度傳感器、光傳感器等,本論文介紹的計步器應(yīng)用就是使用加速度傳感器。本論文主要對計步器以下功能做主要研究。程序運行后進入主界面,用戶可以看到行程、消耗熱量、速度以及步速。點擊開始,進入運行狀態(tài),點擊清零可以使所有數(shù)據(jù)回歸零初始狀態(tài)。點擊設(shè)置選項可以進入設(shè)置界面,調(diào)節(jié)靈敏度來設(shè)置需要的靈敏度(靈敏度越高,對身體的動作的感應(yīng)越靈敏,調(diào)節(jié)靈敏度來適應(yīng)不同的體型了,路面等因素),通過設(shè)置步長來設(shè)置用戶自身實際步長(為了估算行走的距離和速度,輸入步長得出粗略的距離和速度,僅供參考),設(shè)置體重來調(diào)節(jié)用戶的實際體重(這是為了計算消

2、耗的卡路里)。按軟件工程步驟:2相關(guān)技術(shù)介紹2.1 開發(fā)工具及環(huán)境簡介Android 的上層應(yīng)用程序是用Java 語言開發(fā),同時還需要基于Dalvik 虛擬機,所以Google 公司推薦使用主流的Java 繼承開發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因為是使用Java 語言進行開發(fā),還應(yīng)該有由SUN 公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android 的應(yīng)用程序開發(fā)和Java 開發(fā)有較大區(qū)別的,所以還需要有Google 提供的Android SDK。同時,還需要在Eclipse 安裝ADT,為Android 開發(fā)提供開

3、發(fā)工具的升級或者變更,是Eclipse 下開發(fā)工具的升級下載的工具。簡言之,需要以下軟件,才能搭建Android 開發(fā)環(huán)境,從而進行Android 應(yīng)用程序的開發(fā)。(1) Java SDK(2) Eclipse(3) Android SDK(4) ADT2.1.1 開發(fā)工具 Android SDK介紹SDK指是軟件開發(fā)包,被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,Android SDK指的既是Android專屬的軟件開發(fā)工具包。 Eclipse簡介Eclipse是一個著名的跨平臺的自由集成開發(fā)環(huán)境軟件。最初

4、主要用來Java語言開發(fā),現(xiàn)在人們可以通過安裝插件使其作為C+、Python、PHP等其他語言的開發(fā)工具。Eclipse的本身只是一個框架平臺,但是隨著眾多插件的產(chǎn)生,使得Eclipse擁有很好的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。Eclipse含有插件開發(fā)環(huán)境,這個組件主允許希望擴展Eclipse的軟件開發(fā)人員構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。盡管Eclipse是使用 Java 語言開發(fā)的,但它的用途并不限于

5、Java 語言。例如,支持諸如 C/C+ 和 COBOL 等編程語言的插件已經(jīng)可用。Eclipse 框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。本系統(tǒng)即通過Eclipse,添加Android做插件,匹配上AndroidSDK進行軟件的開發(fā)。 JDK簡介JDK(Java Development Kit)是一個寫Java應(yīng)用程序的程序開發(fā)環(huán)境。它由一個處于操作系統(tǒng)層之上的運行環(huán)境還有開發(fā)者編譯,調(diào)試和運行用Java語言寫的applet和應(yīng)用程序所需的工具組成。JDK是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已

6、經(jīng)成為使用最廣泛的Java SDK(Software development kit)。JDK是整個Java的核心,包括了Java運行環(huán)境,Java工具和Java基礎(chǔ)的類庫。JDK中還包括完整的JRE(Java Runtime Environment,Java運行環(huán)境),也被稱為private runtime。包括了用于產(chǎn)品環(huán)境的各種庫類,以及給開發(fā)員使用的補充庫,如國際化的庫、IDL庫。 ADT簡介Google專門為Eclipse開發(fā)了一個插件來輔助開發(fā),即Android Development Tools(ADT)。目前Android開發(fā)所用的開發(fā)工具是Eclips

7、e,在Eclipse編譯IDE環(huán)境中,安裝ADT,為Android開發(fā)提供開發(fā)工具的升級或者變更,簡單理解為在Eclipse下開發(fā)工具的升級下載工具。2.1.2 開發(fā)環(huán)境本軟件是在windows 7 操作系統(tǒng)中,利用Eclipse開發(fā)工具搭載Android SDK工具包,結(jié)合Android手機自帶的sqlite3數(shù)據(jù)庫進行開發(fā)。2.2 Android SDK常見公共類庫介紹2.2.1 android的傳感器加速度傳感器 、磁場傳感器、光線傳感器 、重力傳感器、線性加速傳感器、等等。加速度傳感器 :Sensor.TYPE_ACCELEROMETER:返回手機設(shè)備在X,Y,Z三個方向上的加速度.(

8、我們用到的) 磁場傳感器:Sensor.TYPE_MAGNETIC_FIELD:,返回周圍磁場在手機的X,Y,Z方向上的影響(磁場分量). 距離感應(yīng)器:Sensor.TYPE_PROXIMITY: 重力傳感器:Sensor.TYPE_GRAVITY: 線性加速傳感器:Sensor.TYPE_LINEAR_ACCELERATION: 2.2.2 Android界面Activity介紹Android的界面是由每一個成為Activity的java類組成的,這個類庫是制作Android軟件必須使用的。 WalkingActivity是應(yīng)用程序的用戶界面,主要功能是按照XML布局文件的內(nèi)容顯示界面并與用

9、戶進行交互。只有使用了這個才可以讓用戶看得見,本類中有幾個常用的覆寫方法來表示界面的生存周期,分別是:onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart()七個方法。Activity的生命周期圖,如圖2-1所示: 圖2-1 Android Activity生存周期圖3.系統(tǒng)需求分析3.1 可行性研究可行性分析(Feasibility Analysis)也稱為可行性研究,是在系統(tǒng)調(diào)查的基礎(chǔ)上,針對剛剛開發(fā)打算進一步應(yīng)用的系統(tǒng)的必要性和可能性的分析和研究??尚行匝芯康哪康闹饕谟?,用最小的代價在

10、盡可能短的時間內(nèi)確定問題是否能夠解決。該階段通過對系統(tǒng)總目標的初步調(diào)研與分析,提出可行性方案并進行論證。在此,主要從經(jīng)濟可行性、技術(shù)可行性和操作可行性三方面進行分析。3.1.1 經(jīng)濟可行性隨著人民生活水平的提高,尤其我國成功承辦2008年奧運會以來,人們的健康運動意識逐漸增強。而上班族們由于時間緊張可利用的休閑時間較少,他們則會利用一些零散的時間進行鍛煉,比如上班來回的路上多走路少乘車,在辦公區(qū)盡量選擇走樓梯而不是乘坐電梯等等,由于運動時間零散不便于量化自己的運動量,也就無法估計健身效果。在這樣的背景前提下,擁有一款計步器就顯得尤為必要了。目前市場上的計步器少則幾十多則上百,而智能手機計步器軟

11、件的成本幾乎為零。只需用戶擁有一臺有安卓系統(tǒng)的智能手機即可安裝使用了。并且手機計步器軟件攜帶方便,可以隨時隨地獲取用戶的運動信息,擁有不受地理和時間限制的特點,可以充分利用人們的閑暇時間,從這個角度看,該軟件可行。3.1.2 技術(shù)可行性開發(fā)工具:Eclipse Classic 3.7.2數(shù)據(jù)庫環(huán)境:sqlite3系統(tǒng)環(huán)境:Microsoft Windows XP或以上版本軟件實現(xiàn)是依靠基于Android系統(tǒng)的開發(fā)技術(shù),使用的是java為主的開發(fā)語言進行開發(fā),再加上SOAP技術(shù)進行數(shù)據(jù)交互。 功能說明具體有如下一些功能:計步開始,計步暫停,計步清零,主屏幕顯示計步總數(shù),走過的公里數(shù)

12、,每分鐘走多少步,每小時走多少公里和消耗的卡路里量。進入設(shè)置菜單設(shè)置靈敏度,設(shè)置步長,根據(jù)步長計算走過公里數(shù)、步速和消耗的卡路里量,設(shè)置體重和運動類型,主要用于計算消耗的卡路里量。退出應(yīng)用。 技術(shù)分析表 3-1 技術(shù)需求分析關(guān)鍵技術(shù)項要求現(xiàn)有水平對照分析數(shù)據(jù)結(jié)構(gòu)了解了解可以滿足要求。數(shù)據(jù)庫熟悉了解雖有欠缺,但通過指導(dǎo)培訓(xùn),應(yīng)該在短期內(nèi)可以達到要求。Java熟練熟悉基本可以滿足要求。Android精通 熟悉短期需進一步達到要求,存在一定問題。3.1.3 操作可行性軟件采用最主流的Android軟件應(yīng)用開發(fā)風(fēng)格,并使用Android的原生組件進行開發(fā),界面友好,簡潔易懂,組建布局具有

13、誘導(dǎo)性,用戶使用極其方便快捷。主界面操作流程見圖3-1,設(shè)置界面操作流程見圖3-2。開始計步計步暫停計步清零開始 圖3-1 圖為主界面操作流程圖主界面設(shè)置靈敏度運動類型型返回步長體重圖3-2 圖為設(shè)置界面操作流程圖3.2 性能需求分析為了保證軟件能夠長期、安全、穩(wěn)定、可靠、高效地在Android設(shè)備上運行,本系統(tǒng)應(yīng)該滿足以下性能需求。3.2.1 實用性原則充分利用手機的內(nèi)置傳感器功能,為本軟件提供信息支持,充分考慮用戶獲取信息的心理需求,在簡潔實用的基礎(chǔ)上對軟件界面層級進行布局,做到了方便,美觀大方。3.2.2 可擴展性與可維護性原則為適應(yīng)將來的發(fā)展,軟件應(yīng)該具有良好的可擴展性和可維護性。系統(tǒng)

14、設(shè)計盡可能模塊化、組件化,由于Android設(shè)備分辨率的各不相同,使軟件可靈活配置,適應(yīng)不同的的Android終端設(shè)備。系統(tǒng)的可擴展性應(yīng)包括能接納已有的系統(tǒng)和在今后系統(tǒng)軟硬件擴展時,能有效地保護已有的資源建設(shè)。當用戶的需求有所改變時,可以對其快速的配置改變,以應(yīng)對用戶的需求,有一個較好的應(yīng)用平臺Android設(shè)備,能容易地安裝和卸載。系統(tǒng)易于擴充升級,既能滿足當前業(yè)務(wù)的需求,將來的需求改變升級也被考慮在內(nèi)。3.2.3 安全可靠性原則隨著三網(wǎng)融合的發(fā)展,智能終端產(chǎn)業(yè)鏈的構(gòu)成相對于傳統(tǒng)功能手機發(fā)生了巨大變化。處于上游的操作系統(tǒng)提供商制定安全機制的基本規(guī)則以及相應(yīng)的應(yīng)用商店政策。終端廠商在這些規(guī)則的

15、基礎(chǔ)上,定制個性化的終端軟件,建立自有的應(yīng)用商店。應(yīng)用軟件開發(fā)商/開發(fā)者則利用操作系統(tǒng)提供商提供的工具進行各類應(yīng)用軟件的開發(fā),第三方應(yīng)用商店或論壇等提供應(yīng)用軟件的下載渠道?;谥悄芙K端產(chǎn)業(yè)鏈在管理和技術(shù)方面暴露出來的脆弱性,來源于傳統(tǒng)互聯(lián)網(wǎng)和信息系統(tǒng)的各類攻擊逐漸將目標定位于智能終端,并借助智能終端操作系統(tǒng)的開放性制造出大量的惡意軟件。此外,應(yīng)用商店的審核機制欠缺也導(dǎo)致了惡意軟件的泛濫。目前智能終端信息竊取類軟件橫行,一款應(yīng)用軟件的安全可靠性便顯得尤為重要了?,F(xiàn)在智能終端個人信息的泄露通常不會引起用戶的覺察,或者即便覺察也無法判斷其帶來的損失。與早期的安全問題不同,個人信息泄露所帶來的通常不是

16、直接的高額話費,而是潛在的巨大經(jīng)濟損失。如銀行賬戶泄密、絕密商業(yè)信息泄露等。如何保護用戶個人信息,防止在用戶不知情的情況下泄露隱私信息,是當前亟待解決的問題。本軟件承諾不會殘留用戶任何的隱私信息。3.2.4 用戶界面美觀原則界面經(jīng)過對用戶心理的調(diào)研和統(tǒng)計后。并參考時下流行的軟件風(fēng)格進行設(shè)計,在此基礎(chǔ)上,加入了對用戶具有誘導(dǎo)性的按鍵設(shè)計,使得用戶在初次使用的時候就會使用,而不需要在使用的時候進行特別的學(xué)習(xí)和指導(dǎo)。a. 應(yīng)用圖標見圖3-3。圖3-3 圖為應(yīng)用圖標 b.主界面見圖3-4。 c.設(shè)置和退出按鈕見圖3-5。圖3-4 圖為應(yīng)用主界面 圖3-5 畫紅圈處為設(shè)置,退出按鈕d.設(shè)置界面見圖3-6

17、。圖3-6 圖為設(shè)置界面3.3 數(shù)據(jù)需求分析表3-2 信息輸入輸出信息輸入信息處理信息輸出用戶點擊開始計步軟件通過后臺感應(yīng)手機狀態(tài),開始計步通過軟件主界面輸出計步總數(shù),消耗卡路里等信息用戶點擊暫停軟件將通過后臺停止感應(yīng)手機狀態(tài),從而停止計步顯示計步的相應(yīng)信息用戶用戶點擊清零軟件通過后臺運行清除所記錄的數(shù)據(jù)所有這界面顯示的信息將歸零等待下次命令用戶點擊設(shè)置鍵軟件通過數(shù)據(jù)庫中的設(shè)置管理顯示設(shè)置主界面輸入步長設(shè)置對數(shù)據(jù)庫中步長信息進行改變刷新設(shè)置中步長列表輸入靈敏度設(shè)置對數(shù)據(jù)庫中靈敏度信息進行改變刷新設(shè)置中靈敏度列表輸入體重設(shè)置對數(shù)據(jù)庫中的體重進行管理刷新收藏夾電視頻道的列表輸入運動類型設(shè)置對數(shù)據(jù)庫

18、中的運動類型進行管理刷新收藏夾單詞的列表4.系統(tǒng)設(shè)計4.1 系統(tǒng)總體結(jié)構(gòu)設(shè)計在設(shè)計一款軟件時一般都會把它分成幾個模塊,在模塊的基礎(chǔ)上還會再分小模塊,這樣就達到了軟件模塊化設(shè)計的要求,然后再對各個小模塊進行詳細設(shè)計和編寫,采用模塊化的管理方式可以使軟件結(jié)構(gòu)更清晰,也使得軟件的管理更有秩序,使別人容易理解和閱讀,但是這些模塊也要根據(jù)別的模塊來設(shè)計和約束,不能隨便設(shè)計脫離框架,設(shè)計完成后需要把每個設(shè)計完成的模塊根據(jù)總體框架結(jié)合起來。根據(jù)本軟件的功能需求,將本軟件分為以下幾個功能模塊,如圖 4-1所示:主界面步數(shù)公里步速時速卡路里設(shè)置走過的總步數(shù)走過的總長度每分鐘多少步走過的總步數(shù)運動所消耗的能量暫停

19、/開始清零所有數(shù)據(jù)清零開始/暫停運動靈敏度步長體重運動類型設(shè)置軟件敏感程度設(shè)置用戶一步多長設(shè)置用戶體重設(shè)置用戶運動類型結(jié)束關(guān)閉應(yīng)用軟件 圖4-1 整體框架圖4.2 系統(tǒng)靜態(tài)模型設(shè)計根據(jù)系統(tǒng)需求可以識別系統(tǒng)中存在的對象。從需求中可知我們至少創(chuàng)建2個類:主界面類和設(shè)置類。系統(tǒng)和用戶交互時需要直觀的圖形化界面,所以我們需要5個設(shè)置界面類。確定了系統(tǒng)的類后需要確定類之間的關(guān)系,如圖4-2所示:圖4-2系統(tǒng)靜態(tài)模型5.系統(tǒng)實現(xiàn)本章介紹本系統(tǒng)的各個模塊的設(shè)計和實現(xiàn)。首先在Eclipse中配置好ADT和Android SDK等開發(fā)環(huán)境,然后新建一個Android項目,項目名為pedometer,然后在And

20、roid項目中的AndroidManifest.xml文件中配置本軟件需要使用的權(quán)限。本論文用到的是:<manifest xmlns:android=" package="m.liangwenshu.pedometer" android:versionCode="5" android:versionName="1.4.0" android:installLocation="auto">計步器的主要功能有:計步開始/暫停,設(shè)置,顯示運動所消耗的卡路里,走過長度,步速,時速,里程。本軟件是一個結(jié)合

21、手機用戶特別是智能手機用戶常用功能的一個軟件平臺,本軟件可以通過界面快速獲取運動的情況,獲取信息后可以對這些信息進行個性化處理以方便用戶直觀的感受運動量。5.1布局界面的設(shè)計5.1.1主界面的設(shè)計由于Android平臺手機屏幕大小有限,為了不使用戶有凌亂的感覺,在主界面使用了清爽的色彩以及上兩層信息顯示的排版,使界面看起來簡單明快功能健全。本軟件實現(xiàn)了步速,步數(shù),卡路里的顯示等功能,為了讓界面顯得更為美觀,使用更為方便,筆者使用在TextView的基礎(chǔ)上實現(xiàn)了Tab底部菜單,在底部菜單上添加了 “Pause/Resume”,“Reset”如圖5-1所示:(a)主界面運動信息的顯示 (b)Pau

22、se/Resume及Reset鍵圖5-1 主界面信息顯示及暫停/開始,清零鍵“Pause/Resume”主要終于用于停止和開啟監(jiān)聽手機運動狀態(tài),也就是用戶可以點擊該按鈕添來控制手機計步器的工作開始或者暫停?!癛eset”用于清除Android數(shù)據(jù)池所獲得的數(shù)據(jù)即用戶可以利用此鍵將之前所記錄的運動信息清零,以便開始記錄新一次的運動情況。在主界面下,點擊Android固有的功能鍵即可呼喚出設(shè)置和退出應(yīng)用鍵,即“Settings”,“Quite”如圖5-2所示:圖5-2 Settings和Quite鍵“Settings”用于進入設(shè)置主界面,對用戶的參數(shù)進行設(shè)這?!癚uite”即退出本程序5.1.2設(shè)

23、置界面的設(shè)計用戶選擇設(shè)置后會進入一個設(shè)置列表界面,該界面是利用Android固有的資源模板,沒有做多余的修飾,簡單明了的表達出設(shè)置項目及目的。每一行顯示一條設(shè)置信息。該界面僅僅使用一個ListView控件實現(xiàn)設(shè)置的列表,不占用較多的尺寸卻能夠讓用戶直觀的看到所有關(guān)于計步器統(tǒng)計運動量所需的信息。列表中的每一項均可再打開一個小窗口用于更改用戶信息,例如設(shè)置步長功能(見圖5-3),在點擊“Step length”鍵后會出現(xiàn)填入用戶步長的對話框如圖5-4。圖5-3 設(shè)置步長 圖5-4 輸入用戶步長設(shè)置列表中的每一項指向了一條設(shè)置內(nèi)容,點擊一條設(shè)置項目后能夠進入設(shè)置項目的輸入界面,用戶可以根據(jù)自身的實際

24、情況來更改設(shè)置信息,這也很符合人們的使用習(xí)慣。5.2 各功能的實現(xiàn)5.2.1 計步開始及暫停首先對Pause/ resume鍵做一個監(jiān)聽start_pause_button.setOnClickListener(new View.OnClickListener()同時還要對此時狀態(tài)做一個判斷start_pause_button.setText(mIsRunning ? R.string.pause : R.string.resume);若初始狀態(tài)為記錄則顯示pause,若初始狀態(tài)為非記錄狀態(tài)則顯示resume。具體代碼的實現(xiàn)見附錄“開始/暫停按鈕”5.2.2 記錄數(shù)據(jù)清零對清零按鈕做一個Vie

25、w即:resetButton = (Button) findViewById(R.id.reset_button);實現(xiàn)清零的語句很簡單,對“reset”鍵做一個監(jiān)聽,當用戶點擊“reset”鍵時,即:resetButton.setOnClickListener(new View.OnClickListener()執(zhí)行一下命令:public void onClick(View v)resetValues(true);這樣記錄數(shù)據(jù)清零的按鈕就完成了。5.2.3 設(shè)置步長對于設(shè)置步長,首先要獲取用戶所輸入的步長信息:return Float.valueOf(mSettings.getString(

26、"step_length", "20")若用戶未對步長信息進行編輯,則默認為20.在DistanceNotifier中使用mStepLength來計算走過的距離:mDistance = mDistance + (float) (mStepLength / 100000.0);notifyListener();在paceChanged中使用mStepLength來計算步速:mSpeed = / kilometers / hourvalue * mStepLength / centimeters / minute/ 100000f * 60f; / cent

27、imeters/kilometertellFasterSlower();notifyListener();5.2.4 設(shè)置體重對于設(shè)置體重,首先要獲取用戶所輸入的體重信息:return Float.valueOf(mSettings.getString("body_weight", "50"若用戶未對步長信息進行編輯,則默認為50.在CaloriesNotifier中使用mBodyWeight來計算用戶因運動所消耗的卡路里:mCalories += (mBodyWeight * (mIsRunning ? METRIC_RUNNING_FACTOR :

28、METRIC_WALKING_FACTOR) * mStepLength / 100000.0;notifyListener();5.2.5 設(shè)置運動狀態(tài)當用戶選擇跑步運動的時候,程序會判斷返回值等于Running: return mSettings.getString("exercise_type", "running").equals("running")判斷跑步還是走路是為了方便計算用戶所消耗的卡路里,在因運動所消耗卡路里的計算公式中跑步狀態(tài)和走路狀態(tài)分別對應(yīng)不同的參數(shù),根據(jù)用戶的選擇而確定卡路里的計算方法。設(shè)置運動裝態(tài)的詳細代

29、碼見附錄“判斷是走路還是跑步”。6.系統(tǒng)測試6.1 測試開始停止模塊測試能否根據(jù)用戶控制得到開始計步和停止計步的結(jié)果。6.1.1 測試準備1) 模塊名:計步器2) 負責(zé)人:梁文淑3) 意圖:測試計步器各模塊功能。6.1.2測試過程1) 點擊應(yīng)用圖標,如圖 6-1所示:2) 運動使主界面開始記錄數(shù)據(jù),如圖 6-2所示: 我要過論文我要過論文我要過論文我要過論文我要過論文我要過論文我要過論文圖6-1 圖為計步器主界面 圖6-2 圖為計步器主界面3) 在主界面點擊Pause,如圖 6-3所示:4) 繼續(xù)運動觀察主界面數(shù)據(jù)是否有變化,如圖 6-4所示: 我要過論文我要過論文我要過論文我要過論文我要過論

30、文我要過論文我要過論文我要過論文我要論文我要過論文我要過論文我要過論文我要過論文我要過論文我要文 圖6-3 圖為停止計步界面 圖6-4 圖為停止計步后仍在運動界面5) 進入settings(設(shè)置)界面,如圖 6-5所示:6) 點擊設(shè)置Sensitivity(靈敏度),如圖6-6所示: 過論文我要過論文我要過論 圖6-5 圖為設(shè)置界面 圖6-6 圖為設(shè)置靈敏度界面7) 點擊設(shè)置Step length(步長),如圖 6-7所示:8) 點擊設(shè)置Body weight(體重),如圖 6-8所示:圖6-7 圖為步長設(shè)置界面圖6-8 圖為體重設(shè)置界面9) 點擊設(shè)置Exercise type(運動類型),如

31、圖6-9所示: 過論文我要過論文我要過論文 我要過論文我要過論文我要過論文我要過論文我要過論文我要過論文圖6-9 圖為運動類型設(shè)置界面6.2 測試總結(jié)本軟件中幾個模塊的功能經(jīng)過測試,均測試通過,測試結(jié)果和最初的設(shè)計基本一致,所有的功能均能正常運行,軟件需要比較特殊的運行環(huán)境,首先手機的重力感應(yīng)功能必須有,而且Android系統(tǒng)的版本過低將不能使用。至此基于安卓平臺的手機計步器的設(shè)計基本完成。5結(jié)論經(jīng)過了數(shù)月的努力,Android平臺手計步器軟件終于完成了。本軟件能實現(xiàn)用戶對計步器的基本要求。方便用戶開啟關(guān)閉計步器,對運動情況和運動量可以直觀的從主界面獲取信息,設(shè)置選項中的智能人機交互平臺也可以

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

33、件雖然不是很強大,但是是我自己親手編寫的,開發(fā)一個能在時下最流行的軟件,使之順利的在平臺上運行是一件令人興奮的事情。把自己的想法一步一步地付諸實踐,最后成為一個真實的實物,被別人使用和稱贊,此時得到的成就感是尤為強烈的。參考文獻1 李剛.瘋狂的Android講義M.北京:電子工業(yè)出版社.2011.7.2 吳亞峰,蘇亞光.Android2.0游戲開發(fā)實戰(zhàn)寶典M.北京:人民郵電出版 社.2010.7.3 李寧.Android開發(fā)完全講義M.北京:中國水利水電出版社.2012.4.4 嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu) M.北京:清華大學(xué)出版社.2007.3.5 李剛.瘋狂Java講義M.北京:電子工業(yè)出版社

34、.2008.10.6 Bruce Eckel著.Java編程思想(陳昊鵬)M.北京:機械工業(yè)出版 社.2007.6:23-357 蘇亞光;吳亞峰;索依娜.Android平臺下傳感器技術(shù)開發(fā)計步器應(yīng)用J.電腦編程技巧與維護.2010(23):3-6.8 熊剛.基于Android的智能手機的設(shè)計與實現(xiàn)D.武漢理工大學(xué).2010:34一60.9 Sandeep Kumar. Location Based Services using AndroidC. Android Application Fundamentals, 2009 IEEE International Conference: P1-5

35、10 姚昱旻,劉衛(wèi)國.Android 與J2ME 平臺間即時通信的研究與實現(xiàn)J.計算機系統(tǒng)應(yīng)用.2008(12):118-12011 公磊,周聰.基于Android 的移動終端應(yīng)用程序開發(fā)與研究J.計算機與現(xiàn)代化.2008(8):86-89.12 差沙,地獄男爵.用Android 開發(fā)手機應(yīng)用J.程序員.2008(1):25-2713 Narayan Babu.Android application development skillsJ.IT TIME WEEKLY,2012。6(8):55-58.14 Konrad Adenauer.Android structural design gu

36、idelinesJ.Journal of Computer and Software Engineering,2012.3(6):69-72.附錄Activitypackage m.liangwenshu.pedometer;import android.app.Activity;import android.app.backup.RestoreObserver;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.cont

37、ent.ServiceConnection;import android.content.SharedPreferences;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.preference.PreferenceManager;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import andro

38、id.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;/* * author Liangwenshu */public class WalkingActivity extends Activityprivate static final String TAG = "Pedometer"private SharedPreferences mSettings;private PedometerSettings mPed

39、ometerSettings;private Utils mUtils;private TextView mStepValueView; / 步數(shù)private TextView mPaceValueView; /private TextView mDistanceValueView; / 距離private TextView mSpeedValueView; / 速度private TextView mCaloriesValueView; / 卡路里消耗顯示框TextView mDesiredPaceView;private int mStepValue;/ mStepValueView的值

40、private int mPaceValue;/ mPaceValueView的值private float mDistanceValue;/ mDistanceValueView的值private float mSpeedValue;/ mSpeedValueView的值private int mCaloriesValue;/ mCaloriesValueView的值private float mDesiredPaceOrSpeed;/private int mMaintain;/ is爬山private boolean mIsMetric=true;/ 公制和米制切換標志private f

41、loat mMaintainInc;/private boolean mQuitting = false; /private Button resetButton;private Button start_pause_button;/ Set when user selected Quit from menu, can be used by onPause, onStop,/ onDestroy/* * True, when service is running. */private boolean mIsRunning;/ 程序是否運行的標志位/* Called when the activ

42、ity is first created. */Override/ 開始函數(shù),重寫該函數(shù),加入日志。Overrideprotected void onStart()Log.i(TAG, "ACTIVITY onStart");super.onStart();/ 重寫回復(fù)函數(shù)Overrideprotected void onResume()Log.i(TAG, "ACTIVITY onResume");super.onResume();mSettings = PreferenceManager.getDefaultSharedPreferences(thi

43、s);mPedometerSettings = new PedometerSettings(mSettings);mUtils.setSpeak(mSettings.getBoolean("speak", false);/ Read from preferences if the service was running on the last onPausemIsRunning = mPedometerSettings.isServiceRunning();/ Start the service if this is considered to be an applicat

44、ion start/ (last onPause was long ago)mPedometerSettings.clearServiceRunning();mStepValueView = (TextView) findViewById(R.id.step_value);mPaceValueView = (TextView) findViewById(R.id.pace_value);mDistanceValueView = (TextView) findViewById(R.id.distance_value);mSpeedValueView = (TextView) findViewBy

45、Id(R.id.speed_value);mCaloriesValueView = (TextView) findViewById(R.id.calories_value);mDesiredPaceView = (TextView) findViewById(R.id.desired_pace_value);/ 重設(shè)按鈕resetButton = (Button) findViewById(R.id.reset_button);resetButton.setOnClickListener(new View.OnClickListener()public void onClick(View v)

46、resetValues(true););/ 開始/暫停按鈕start_pause_button = (Button) findViewById(R.id.start_pause_button);start_pause_button.setText(mIsRunning ? R.string.pause : R.string.resume);start_pause_button.setOnClickListener(new View.OnClickListener()public void onClick(View v)if (start_pause_button.getText().equal

47、s(getResources().getString(R.string.pause)start_pause_button.setText(R.string.resume);unbindStepService();stopStepService();else if (start_pause_button.getText().equals(getResources().getString(R.string.resume)start_pause_button.setText(R.string.pause);startStepService();bindStepService(););mIsMetri

48、c = mPedometerSettings.isMetric();(TextView) findViewById(R.id.distance_units).setText(getString(mIsMetric ? R.string.kilometers: R.es);(TextView) findViewById(R.id.speed_units).setText(getString(mIsMetric ? R.string.kilometers_per_hour: R.es_per_hour);mMaintain = mPedometerSetti

49、ngs.getMaintainOption();if (mMaintain = PedometerSettings.M_PACE)mMaintainInc = 5f;mDesiredPaceOrSpeed = (float) mPedometerSettings.getDesiredPace();else if (mMaintain = PedometerSettings.M_SPEED)mDesiredPaceOrSpeed = mPedometerSettings.getDesiredSpeed();mMaintainInc = 0.1f;Button button1 = (Button)

50、 findViewById(R.id.button_desired_pace_lower);button1.setOnClickListener(new View.OnClickListener()public void onClick(View v)mDesiredPaceOrSpeed -= mMaintainInc;mDesiredPaceOrSpeed = Math.round(mDesiredPaceOrSpeed * 10) / 10f;displayDesiredPaceOrSpeed();setDesiredPaceOrSpeed(mDesiredPaceOrSpeed););

51、Button button2 = (Button) findViewById(R.id.button_desired_pace_raise);button2.setOnClickListener(new View.OnClickListener()public void onClick(View v)mDesiredPaceOrSpeed += mMaintainInc;mDesiredPaceOrSpeed = Math.round(mDesiredPaceOrSpeed * 10) / 10f;displayDesiredPaceOrSpeed();setDesiredPaceOrSpee

52、d(mDesiredPaceOrSpeed););Overrideprotected void onPause()Log.i(TAG, "ACTIVITY onPause");if (mIsRunning)unbindStepService();if (mQuitting)mPedometerSettings.saveServiceRunningWithNullTimestamp(mIsRunning);elsemPedometerSettings.saveServiceRunningWithTimestamp(mIsRunning);super.onPause();savePaceSetting();/ 開始/暫停按鈕public void onClick(View v)if (start_pause_button.getText().equals(getResources().getString(R.string.pause)start_pause_button.setText(R.string.resume);unbindStepService();stopStepService();else if (start_pause_button.getText().equals(getResour

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論