基于Android計(jì)算器功能的實(shí)現(xiàn)畢業(yè)設(shè)計(jì).doc_第1頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)畢業(yè)設(shè)計(jì).doc_第2頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)畢業(yè)設(shè)計(jì).doc_第3頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)畢業(yè)設(shè)計(jì).doc_第4頁(yè)
基于Android計(jì)算器功能的實(shí)現(xiàn)畢業(yè)設(shè)計(jì).doc_第5頁(yè)
已閱讀5頁(yè),還剩44頁(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)介

基于Android計(jì)算器功能的實(shí)現(xiàn)摘要隨著移動(dòng)通信技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,手機(jī)系統(tǒng)發(fā)生了巨大的變化,從進(jìn)行簡(jiǎn)單通話功能的非智能手機(jī)到現(xiàn)在集上網(wǎng)、聊天、收發(fā)郵件、視屏電話會(huì)議等各種服務(wù)于娛樂(lè)為一身的智能手機(jī)系統(tǒng)。由Google公司牽頭眾多實(shí)力雄厚的軟硬件廠商加盟成立了OMS聯(lián)盟,并推出的Android平臺(tái)手機(jī)系統(tǒng)。作為時(shí)代的新生兒,Android手機(jī)操作平臺(tái)有著得天獨(dú)厚的優(yōu)勢(shì)廣闊的發(fā)展前景。本文正是基于Android平臺(tái)開(kāi)發(fā)的計(jì)算器。論文主要闡述以面向?qū)ο蟮某绦蜷_(kāi)發(fā)語(yǔ)言eclipse為開(kāi)發(fā)工具, 設(shè)計(jì)并實(shí)現(xiàn)基于Android的計(jì)算器。論文首先介紹了Android開(kāi)發(fā)平臺(tái)和環(huán)境以及Android 工程的重要部分,其次對(duì)計(jì)算器系統(tǒng)和程序進(jìn)行了分析和設(shè)計(jì),再次對(duì)計(jì)算器進(jìn)行了系統(tǒng)的實(shí)現(xiàn),并對(duì)系統(tǒng)進(jìn)行了嚴(yán)格的驗(yàn)證,最后本文對(duì)所做工作進(jìn)行了總結(jié)。關(guān)鍵詞:手機(jī),Android,用戶界面,計(jì)算器 THE CALCULATOR FUNCTION REALIZATION BASED ON ANDROIDABSTRACTWith the development of mobile communication technology and network technology, great changes have taken place on the mobile phone system. The original mobile phone only has the functions of communication and Smartphone has the functions of internet, chat, video conferencing and other services and entertainment. Android mobile phone platform which was developed by Google Company and many equipment manufacturers of hardware and software vendors, as the era of neonatal has a unique advantage and prospects for development. This article is based on the Android platform calculator. The thesis describes object-oriented programming language eclipse development tools, design and implement a calculator based on the Android. The paper first introduces the Android development platform and environment as well as an important part of the Android project, followed by the calculator systems and procedures analysis and design, the realization of the system once again the calculator, and strict verification, Finally, a summary of the work done.Key words: mobile phone, Android, UI, calculator畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過(guò)的研究成果,也不包含我為獲得 及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過(guò)的材料。對(duì)本研究提供過(guò)幫助和做出過(guò)貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說(shuō)明并表示了謝意。作 者 簽 名: 日 期: 指導(dǎo)教師簽名: 日期: 使用授權(quán)說(shuō)明本人完全了解 大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝?、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)校可以公布論文的部分或全部?jī)?nèi)容。作者簽名: 日 期: 學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期: 年 月 日學(xué)位論文版權(quán)使用授權(quán)書(shū)本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門(mén)或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán) 大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名:日期: 年 月 日導(dǎo)師簽名: 日期: 年 月 日目 錄1 引言11.1 課題背景及意義11.1.1 課題背景11.1.2 課題意義11.2 智能手機(jī)平臺(tái)系統(tǒng)21.3 課題來(lái)源32 基于Android平臺(tái)計(jì)算器相關(guān)技術(shù)概述42.1 Android手機(jī)平臺(tái)52.1.1 Android起源及優(yōu)勢(shì)52.1.2 Android體系結(jié)構(gòu)52.1.3 Android平臺(tái)功能特征72.2 Android SDK介紹92.3 XML技術(shù)102.4 JNI技術(shù)113 基于Android平臺(tái)計(jì)算器設(shè)計(jì)123.1 系統(tǒng)的總體設(shè)計(jì)123.2 程序流程和系統(tǒng)功能設(shè)計(jì)133.2.1 程序流程設(shè)計(jì)133.2.2 系統(tǒng)功能設(shè)計(jì)143.3基于Android平臺(tái)系統(tǒng)具體設(shè)計(jì)153.3.1 總體模塊詳細(xì)設(shè)計(jì)153.3.2 輸入模塊詳細(xì)設(shè)計(jì)163.3.3 顯示模塊詳細(xì)設(shè)計(jì)163.3.4 計(jì)算模塊詳細(xì)設(shè)計(jì)174 計(jì)算器系統(tǒng)實(shí)現(xiàn)184.1 Android應(yīng)用程序構(gòu)成184.2 Android應(yīng)用系統(tǒng)文件結(jié)構(gòu)194.3 構(gòu)建Android應(yīng)用程序用戶界面214.3.1 Android應(yīng)用程序界面組件214.3.2 Android應(yīng)用系統(tǒng)界面組件224.3.3 Android用戶界面的實(shí)現(xiàn)244.4 計(jì)算模塊的實(shí)現(xiàn)284.5 計(jì)算器演示305 結(jié)論32謝辭33參考文獻(xiàn)34附錄1:36附錄2:38V1 引言1.1 課題背景及意義1.1.1 課題背景隨著社會(huì)的發(fā)展,經(jīng)濟(jì)水平的提高,手機(jī)越來(lái)越普及。截止到2010年,中國(guó)手機(jī)用戶數(shù)量將從2007年的5.40億增長(zhǎng)到7.38億1。同時(shí)伴隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,手機(jī)的功能也變得越來(lái)越豐富。從原來(lái)只具有簡(jiǎn)單通信功能的非智能手機(jī)到現(xiàn)在具有手機(jī)操作系統(tǒng),除通話功能以外,還集上網(wǎng)、聊天、炒股、收發(fā)郵件等功能于一身的智能手機(jī)系統(tǒng)。智能手機(jī)2具有獨(dú)立的操作系統(tǒng),像個(gè)人電腦一樣支持用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,并通過(guò)此類(lèi)程序不斷對(duì)手機(jī)的功能進(jìn)行擴(kuò)充,同時(shí)可通過(guò)移動(dòng)通訊網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)接入。智能手機(jī)同傳統(tǒng)手機(jī)外觀和操作方式類(lèi)似,不僅包含觸摸屏也包含非觸摸屏、數(shù)字鍵盤(pán)手機(jī)和全尺寸鍵盤(pán)操作的手機(jī)。但是傳統(tǒng)手機(jī)都使用的是生產(chǎn)廠商自行開(kāi)發(fā)的封閉式操作系統(tǒng),所能實(shí)現(xiàn)的功能非常有限,不具備智能手機(jī)的擴(kuò)展性。從廣義上講,智能手機(jī)除了具備手機(jī)的通話功能外,還具備個(gè)人信息管理以及基于無(wú)線數(shù)據(jù)通信的瀏覽器、GPS(Global Positioning System)和電子郵件功能。智能手機(jī)為用戶提供了足夠的屏幕尺寸和帶寬,既方便隨身攜帶,又為軟件運(yùn)行和內(nèi)容服務(wù)提供個(gè)廣闊的舞臺(tái),很多增值業(yè)務(wù)可以就此展開(kāi),如:股票、新聞、天氣、交通、商品、應(yīng)用程序下載、音樂(lè)圖片下載等等。結(jié)合3G通信網(wǎng)絡(luò)的支持,智能手機(jī)的發(fā)展,勢(shì)必將成為一個(gè)功能強(qiáng)大,集通話、短信、網(wǎng)絡(luò)接入、影視娛樂(lè)為一體的綜合性個(gè)人手持終端設(shè)備3。1.1.2 課題意義 隨著通信技術(shù)的發(fā)展,3G從制定出到現(xiàn)在越來(lái)越被人們關(guān)注?!? G”(英語(yǔ)3rd-generation)或“三代”是第三代移動(dòng)通信技術(shù)的簡(jiǎn)稱,是指支持高速數(shù)據(jù)傳輸?shù)姆涓C移動(dòng)通信技術(shù)4。目前3G存在四種標(biāo)準(zhǔn):CDMA2000、WCDMATD-SCDMA、WiMAX。其中TD-SCDMA(全稱Time Division-Synchronous CDMA)是由中國(guó)大陸?yīng)氉灾贫ǖ?G標(biāo)準(zhǔn)。為了推動(dòng)我國(guó)的智能手機(jī)的發(fā)展,實(shí)現(xiàn)多功能的智能手機(jī),方便人們豐富多彩而又快節(jié)奏的生活。本文正是基于Android平臺(tái)開(kāi)發(fā)的計(jì)算機(jī)器。論文主要闡述以面向?qū)ο蟮某绦蜷_(kāi)發(fā)語(yǔ)言eclipse為開(kāi)發(fā)工具, 基于智能手機(jī)Android之上設(shè)計(jì)一個(gè)計(jì)算器。本文的目標(biāo)就是設(shè)計(jì)并實(shí)現(xiàn)基于Android的計(jì)算器,論文首先介紹了Android開(kāi)發(fā)平臺(tái)和環(huán)境以及Android 工程的重要部分,然后著重針對(duì)計(jì)算器的系統(tǒng)設(shè)計(jì)和系統(tǒng)設(shè)計(jì)的具體實(shí)現(xiàn),最后實(shí)現(xiàn)計(jì)算器的各種功能并得到了很多好的驗(yàn)證。1.2 智能手機(jī)平臺(tái)系統(tǒng)智能手機(jī)(Smartphone),是指“像個(gè)人電腦一樣,具有獨(dú)立的操作系統(tǒng),可以由用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,通過(guò)此類(lèi)程序來(lái)不斷對(duì)手機(jī)的功能進(jìn)行擴(kuò)充,并可以通過(guò)移動(dòng)通訊網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)接入的這樣一類(lèi)手機(jī)的總稱”。目前全球主要的只能手機(jī)操作系統(tǒng)依次是iPhone OS、Symbian、BlackBerry OS和Android,其中Android最年輕,市場(chǎng)份額正迅速增加。下面簡(jiǎn)單介紹Android以外的幾款常用的智能手機(jī)系統(tǒng)。IPhone OS是蘋(píng)果公司專門(mén)為iPhone開(kāi)發(fā)的智能手機(jī)系統(tǒng)5。iPhone手機(jī)具有硬件與軟件一一綁定的特性,Apple公司采用與運(yùn)營(yíng)商分成的策略。iPhone雖然開(kāi)放了SDK,可是卻不能在PC上使用,這對(duì)于中國(guó)的應(yīng)用開(kāi)發(fā)市場(chǎng)是個(gè)不曉得阻礙。但它將創(chuàng)新的移動(dòng)電話、可觸摸寬屏iPod以及具有桌面級(jí)電子郵件、網(wǎng)頁(yè)瀏覽、搜索和地圖功能的突破性因特網(wǎng)通信設(shè)備這三種產(chǎn)品完美的融合為一體的特性,也吸引了無(wú)數(shù)的用戶。Symbian(中文名:塞班)6是一個(gè)實(shí)時(shí)性、多任務(wù)的純32位操作系統(tǒng),具有功耗低、內(nèi)存占用少等特點(diǎn),非常適合手機(jī)等移動(dòng)設(shè)備使用,經(jīng)過(guò)不斷完善,雖然在智能型手機(jī)市場(chǎng)取得了無(wú)比的成功,并長(zhǎng)期居于首位,但是Symbian S60、Symbian3,UIQ等(尤其是S60)系統(tǒng)近兩年亦遭遇到顯著的發(fā)展瓶頸。最近12個(gè)月歐洲手機(jī)公司諾基亞(Nokia)在智能手機(jī)市場(chǎng)市占率的滑落是不爭(zhēng)的事實(shí)。需要注意的是,并不是所有的Symbian系統(tǒng)都是智能系統(tǒng),比如S40系統(tǒng),就不屬于智能手機(jī)系統(tǒng)。BlackBerry OS7是RIM專用的智能手機(jī)操作系統(tǒng)。BlackBerry,在美國(guó)市場(chǎng)占有率相對(duì)較高,BlackBerry的比較具有個(gè)性的設(shè)計(jì)就是寬大的屏幕和便于輸入的QWERTY全鍵盤(pán),所以BlackBerry在移動(dòng)電子郵件方面非常方便,由于我國(guó)手機(jī)用戶發(fā)送短信對(duì)于發(fā)送郵件,所以BlackBerry系統(tǒng)的郵件優(yōu)勢(shì)在中國(guó)不存在,目前BlackBerry OS在智能手機(jī)操作系統(tǒng)的市場(chǎng)份額占據(jù)第三位i,BlackBerry手機(jī)市場(chǎng)主要在美國(guó)8。windows mobile是微軟由于Pocket PC和Smartphone的軟件平臺(tái)9。windows mobile系統(tǒng)將大家熟悉的Windows桌面延伸到了移動(dòng)設(shè)備中。windows mobile是Microsoft為手持設(shè)備推出的“Windows移動(dòng)版”。受Android的沖擊,目前Windows Mobile在智能手機(jī)操作系統(tǒng)的市場(chǎng)下降到4%左右。Linux憑借其開(kāi)放源代碼、免費(fèi)的優(yōu)勢(shì),經(jīng)過(guò)來(lái)自全球程序員的努力,再加上google、IBM等計(jì)算機(jī)巨頭的支持。Linux在手機(jī)操作系統(tǒng)市場(chǎng)中成為了衣服新生的力量,尤其是在許多知名廠商如摩托羅拉宣布支持Linux手機(jī)操作系統(tǒng)之后,Linux的市場(chǎng)份額有增加的趨勢(shì)。目前基于Linux的智能手機(jī)占有7.3%的市場(chǎng)份額。Palm OS由Palm公司研發(fā),是一種32位的嵌入式操作系統(tǒng),它的操作界面采用觸控式,幾乎所有的控制選項(xiàng)都排列在屏幕上,使用觸控筆進(jìn)行所有操作。目前基于Palm OS的智能手機(jī)占有2.3%的市場(chǎng)份額12。1.3 課題來(lái)源計(jì)算器作為現(xiàn)在人們?nèi)粘I钪谐S玫囊环N工具已經(jīng)可以說(shuō)是人們?nèi)粘I钪斜夭豢缮俚墓ぞ吡?。但是?jì)算器的發(fā)展經(jīng)歷了漫長(zhǎng)的過(guò)程,凝聚無(wú)數(shù)先人的智慧,甚至連計(jì)算機(jī)的發(fā)展都可以說(shuō)是源于計(jì)算器的發(fā)展。計(jì)算器和計(jì)算機(jī)一樣都能夠?qū)崿F(xiàn)數(shù)據(jù)的輸入、處理、存儲(chǔ)和輸出這些基本的功能,但計(jì)算器區(qū)別于計(jì)算機(jī)的地方就是,它不能自動(dòng)的進(jìn)行計(jì)算,必須要求由人來(lái)操作完成計(jì)算;而計(jì)算機(jī)通過(guò)提前編寫(xiě)好的程序就能夠自動(dòng)的按照程序進(jìn)行處理。所以計(jì)算器和計(jì)算機(jī)的一個(gè)顯著的區(qū)別就在于是否需要人為地操作來(lái)完成運(yùn)行。這二者還有另一個(gè)本質(zhì)性的區(qū)別。計(jì)算器的處理數(shù)據(jù)的方法是生產(chǎn)時(shí)就已經(jīng)固化在系統(tǒng)中了,所以計(jì)算器只能按照系統(tǒng)中規(guī)定的處理方法來(lái)處理用戶要求的計(jì)算任務(wù);而計(jì)算機(jī)由于可以自行安裝操作系統(tǒng)和各種的相關(guān)軟件和硬件,理論上計(jì)算機(jī)擁有的可擴(kuò)展性是無(wú)窮的。所以簡(jiǎn)單的說(shuō),計(jì)算器和計(jì)算機(jī)的本質(zhì)性區(qū)別就在于該系統(tǒng)是否存在可擴(kuò)展性。在我所了解到的知識(shí)中,最早的計(jì)算工具可以追溯到中國(guó)古代一種叫做籌策(又叫算籌)的東西上。這種計(jì)算工具在計(jì)算的時(shí)候擺成縱式和橫式兩種數(shù)字,按照縱式相間的原則表示任何自然數(shù),從而進(jìn)行加、減、乘、除、開(kāi)方以及其它的代數(shù)計(jì)算。負(fù)數(shù)出現(xiàn)后,算籌分為紅和兩種,紅籌表示正數(shù),黑籌表示負(fù)數(shù)。雖然我對(duì)于這種計(jì)算的原理不是很了解,但是不得不說(shuō),這種運(yùn)算工具和運(yùn)算方法確實(shí)是當(dāng)時(shí)世界上獨(dú)一無(wú)二的。直到今天仍有一些人在使用的珠算或者叫算盤(pán),是中國(guó)古代計(jì)算工具中的另一項(xiàng)偉大發(fā)明,而從明朝開(kāi)始使用的算盤(pán)就已經(jīng)與現(xiàn)代的算盤(pán)幾乎完全相同了。以上介紹完了中國(guó)關(guān)于計(jì)算工具的發(fā)展,下面我們來(lái)看看西方社會(huì)中計(jì)算工具的發(fā)展情況。我通過(guò)查詢資料得知,17世紀(jì)初這個(gè)時(shí)期,西方國(guó)家的計(jì)算工具開(kāi)始有了一個(gè)較大的發(fā)展,英國(guó)數(shù)學(xué)家納皮爾發(fā)明的納皮爾算籌,英國(guó)牧師奧卻德發(fā)明了圓柱型對(duì)數(shù)計(jì)算尺,這種計(jì)算尺的功能不僅僅能做加減乘除、乘方、開(kāi)方運(yùn)算,甚至可以計(jì)算三角函數(shù),指數(shù)函數(shù)和對(duì)數(shù)函數(shù),這些計(jì)算工具的產(chǎn)生不單單是帶動(dòng)了計(jì)算器的發(fā)展,更是為現(xiàn)代計(jì)算器的發(fā)展奠定了一個(gè)堅(jiān)實(shí)的基礎(chǔ)。雖然當(dāng)時(shí)的技術(shù)水平有限,這些工具使用的不是機(jī)械或者電子作為載體,但是這些計(jì)算工具卻為了后世的計(jì)算器提供了一個(gè)良好的思路。1642年,偉大的法國(guó)科學(xué)家帕斯卡在年僅19歲的時(shí)候就利用了算盤(pán)的計(jì)算原理發(fā)明了世界上第一部機(jī)械式的計(jì)算器,在這個(gè)計(jì)算器中有一些互相咬合的齒輪,一個(gè)轉(zhuǎn)過(guò)十位的齒輪會(huì)使另一個(gè)齒輪轉(zhuǎn)過(guò)一位,靠這樣來(lái)實(shí)現(xiàn)十進(jìn)制的算法,人們可以轉(zhuǎn)動(dòng)齒輪,把想要輸入的數(shù)據(jù)輸入進(jìn)去,計(jì)算結(jié)果就會(huì)出現(xiàn)在另一個(gè)窗口中,但是這個(gè)計(jì)算器只能做一些加減計(jì)算。1694年,萊布尼茲在德國(guó)將其改進(jìn),使這種計(jì)算器成為可以進(jìn)行加減乘除計(jì)算的計(jì)算器。此后,一直要到20世紀(jì)50年代末才有電子計(jì)算器的出現(xiàn)。2 基于Android平臺(tái)計(jì)算器相關(guān)技術(shù)概述本章介紹了基于Android平臺(tái)計(jì)算器相關(guān)技術(shù)。首先介紹了各種智能手機(jī)平臺(tái)系統(tǒng),并進(jìn)行分析。重點(diǎn)介紹了Android平臺(tái)系統(tǒng),對(duì)Android體系結(jié)構(gòu)及平臺(tái)功能進(jìn)行了介紹。同時(shí)還對(duì)本文界面開(kāi)發(fā)實(shí)現(xiàn)要用的XML技術(shù)進(jìn)行了簡(jiǎn)單的介紹,具體如下。2.1 Android手機(jī)平臺(tái)2.1.1 Android起源及優(yōu)勢(shì)Android平臺(tái)自發(fā)布以來(lái)就一直吸引著廣大開(kāi)發(fā)者的目光,Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件14。Android平臺(tái)具有以下優(yōu)點(diǎn):(1)平臺(tái)的開(kāi)放性允許任何廠商加入,使其擁有更多的開(kāi)發(fā)者,新穎的應(yīng)用功能及創(chuàng)意可以不斷地出現(xiàn)。(2)脫離了運(yùn)營(yíng)商的束縛,讓手機(jī)更加貼近互聯(lián)網(wǎng)。(3)應(yīng)用程序都是基于java開(kāi)發(fā)的,java具有一次編寫(xiě)、到處運(yùn)行的跨平臺(tái)性。能夠?qū)崿F(xiàn)在所有的Android設(shè)備中運(yùn)行,真正做到了硬件的無(wú)關(guān)性,降低了開(kāi)發(fā)者的負(fù)擔(dān)。(4)提供了標(biāo)準(zhǔn)的API和SDK開(kāi)發(fā)包,手機(jī)廠商可以根據(jù)需要自行開(kāi)發(fā)或者使用已有的程序,從而打造出富有特色的Android平臺(tái)。2.1.2 Android體系結(jié)構(gòu) Android平臺(tái)架構(gòu)15從上至下包含五部分:應(yīng)用程序(Application)、應(yīng)用框架(Application Framework)、開(kāi)發(fā)庫(kù)(Libraries),運(yùn)行時(shí)環(huán)境(Android Runtime)以及Linux內(nèi)核,如圖2-1所示.(1).應(yīng)用程序Android同一系列核心應(yīng)用程序包一起發(fā)布,該程序包包括email客戶端、SMS短消息程序、日歷、聯(lián)系人管理程序等。所有的應(yīng)用程序都是用Java語(yǔ)言編寫(xiě)的。(2).應(yīng)用框架應(yīng)用框架式進(jìn)行Android開(kāi)發(fā)的基礎(chǔ)。應(yīng)用程序框架層包含了視圖系統(tǒng)、內(nèi)容提供器、窗口管理器、活動(dòng)管理器、通知管理器、資源管理器、電話管理器和包管管理器9大部分。圖 2-1 Android架構(gòu)圖在Android中,任何一個(gè)應(yīng)用程序都可以發(fā)布自身的功能塊,而其他應(yīng)用程序則可以使用已發(fā)布的功能塊?;谶@樣的重用機(jī)制,用戶就可以方便地替換平臺(tái)自身的各種應(yīng)用程序組件,這在Symbian和Windows Mobile平臺(tái)中都是無(wú)法實(shí)現(xiàn)的。雖然Android本身已在框架中提供了許多軟件組件,不過(guò)這并不表示所有的應(yīng)用程序一定要調(diào)用Android本身已在框架中提供了許多軟件組件,不過(guò)這并不表示所有的應(yīng)用程序一定調(diào)用Android所提供的組件,開(kāi)發(fā)人員在開(kāi)發(fā)Android平臺(tái)上的應(yīng)用程序時(shí),也可以開(kāi)發(fā)新的軟件組件,并將該軟件組件放入Android的應(yīng)用程序框架中。(3)開(kāi)發(fā)庫(kù)(Libraries)Android包含一套C/C+開(kāi)發(fā)庫(kù),主要包括:libc、Media Framework、WebKit、SGL、OpenGL ES、FreeType、SQlite等。這些庫(kù)被應(yīng)用于Android系統(tǒng)的各種組件中,開(kāi)發(fā)人員可以通過(guò)Android應(yīng)用框架調(diào)用它們。(4)運(yùn)行環(huán)境(Android Runtime)Android雖然采用Java程序語(yǔ)言來(lái)編寫(xiě)應(yīng)用程序,但并不使用J2ME執(zhí)行Java程序,而是用Android本身自帶的Android運(yùn)行時(shí)環(huán)境。Android運(yùn)行時(shí)包括核心庫(kù)和Dalvik虛擬機(jī)兩部分,如圖2-2所示,這兩部分具體功能如下:核心庫(kù)包含兩部分內(nèi)容:一部分為絕大多數(shù)Java程序語(yǔ)言所需要調(diào)用的功能函數(shù),另外一部分為Android的核心庫(kù),如、android.os、android.media等。與標(biāo)準(zhǔn)Java語(yǔ)言不一樣的是,每個(gè)Android應(yīng)用程序都有一個(gè)自用的進(jìn)程,即Android不是用一個(gè)Dalvik虛擬機(jī)來(lái)同時(shí)執(zhí)行多個(gè)Android應(yīng)用程序,而是每個(gè)Android應(yīng)用程序都有一個(gè)自身的Dalvik虛擬機(jī)來(lái)執(zhí)行。圖 2-2 Android 運(yùn)行時(shí)Dalvik是一種基于寄存器的Java虛擬機(jī)。Dalvik虛擬機(jī)是專門(mén)為移動(dòng)設(shè)備而設(shè)計(jì)的,它在開(kāi)發(fā)時(shí)就考慮到了用最少的內(nèi)存資源來(lái)執(zhí)行,以及支持前面提到的同時(shí)執(zhí)行多個(gè)虛擬機(jī)的特性。Dalvik虛擬機(jī)有許多地方參考了Java虛擬機(jī)的設(shè)計(jì),不過(guò)Dalvik虛擬機(jī)所執(zhí)行的中間碼并非是Java虛擬機(jī)所執(zhí)行的Java字節(jié)碼,但也不直接執(zhí)行Java的類(lèi)文件,而是依靠轉(zhuǎn)換工具dx將Java字節(jié)碼轉(zhuǎn)換為dex格式。(5)Linux內(nèi)核(Linux Kernel)Android的內(nèi)核系統(tǒng)服務(wù)依賴于Linux2.6內(nèi)核(如圖2-3所示),如內(nèi)存管理、進(jìn)程管理、安全性、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層,這樣應(yīng)用程序開(kāi)發(fā)人員就無(wú)需關(guān)心硬件實(shí)現(xiàn)細(xì)節(jié)。圖 2-3 linux 內(nèi)核整體架構(gòu)上,Android相比其他平臺(tái)顯示出了自身的特點(diǎn),例如集成了WebKit瀏覽器、Dalvik虛擬機(jī)等模塊、提供了開(kāi)源的代碼、可重用和可替換組件的程序應(yīng)用框架、SQLite結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)等特點(diǎn)。2.1.3 Android平臺(tái)功能特征Android平臺(tái)具有很多獨(dú)特的功能特征,具體如下。應(yīng)用程序架構(gòu):在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備了多種不同的基礎(chǔ)組件,在開(kāi)發(fā)應(yīng)用程序時(shí),可以直接調(diào)用這些組件,極大地節(jié)省了程序開(kāi)發(fā)人員的時(shí)間與精力。Dalvik虛擬機(jī)器:在Android平臺(tái)上使用的java虛擬機(jī),不是Sun公司的標(biāo)準(zhǔn)java虛擬機(jī),而是Google自主開(kāi)發(fā)的代碼為Dalvik的虛擬機(jī),它不但保證了JavaAPI的兼容性,同時(shí)針對(duì)移動(dòng)手機(jī)進(jìn)行了大幅優(yōu)化,占用資源更少,運(yùn)行效率更高。集成的瀏覽器:集成的瀏覽器是Android內(nèi)建的瀏覽器,是以WebKit的瀏覽殷勤為基礎(chǔ)開(kāi)發(fā)的。WebKit是一個(gè)開(kāi)源瀏覽器網(wǎng)頁(yè)排版引擎,目前使用了WebKit引擎的瀏覽器主要有:Safari,Midori,Epiphany等。配合Android手機(jī)的功能,可以再瀏覽網(wǎng)頁(yè)時(shí),達(dá)到更好的效果,例如:局部縮放網(wǎng)頁(yè)上的咨訊、觸控式的操作等效果。優(yōu)化的繪圖能力:在程序里可以用到的繪圖功能分為2D和3D兩個(gè)方面。在2D方面,Android提供了一套特有的類(lèi)庫(kù)(SQL);而在3D方面則是使用OpenGLES1.0(OpenGL for Embedded Systems)規(guī)范的類(lèi)庫(kù)。它們是一種非常快的圖形引擎,并且支持硬件加速。SQlite數(shù)據(jù)庫(kù):SQlite提供結(jié)構(gòu)化的數(shù)據(jù)存取。SQlite16是一款輕型的數(shù)據(jù)庫(kù),它的書(shū)記目標(biāo)是嵌入式的,目前已經(jīng)有很多嵌入式產(chǎn)品使用了它,它占用的資源非常低。它能夠支持windows、linux、unix等主流的操作系統(tǒng),同時(shí)能夠和很多程序語(yǔ)言相結(jié)合,比如PHP,Java等,還有ODBC接口,與Mysql,PostgreSQL相比,它的處理速度更快,無(wú)需安裝和管理配置。它是一個(gè)儲(chǔ)存在單一磁盤(pán)文件中的完整數(shù)據(jù)庫(kù),體積很小只有250KB,但所支持?jǐn)?shù)據(jù)庫(kù)大至ZTB。它雖然很小巧,但是支持的SQL語(yǔ)句毫不遜色于其他開(kāi)源數(shù)據(jù)庫(kù)。同時(shí)它還支持事務(wù)功能和并發(fā)處理等。SQlite也是一套開(kāi)發(fā)性的關(guān)聯(lián)式資料庫(kù),其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。多媒體的支持能力:主要用于播放媒體文件。包括對(duì)音頻(如播放MP3或其他音樂(lè)文件等)和視頻(如播放從網(wǎng)上下載的視頻)的支持,并支持“播放URI地址”模式在網(wǎng)絡(luò)上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:JPG、PNG、GIF等格式。GMS技術(shù):Global System for Mobile Communications,即全球移動(dòng)通訊系統(tǒng),俗稱“全球通”,是一種起源于歐洲的移動(dòng)通信技術(shù)標(biāo)準(zhǔn),是第二代移動(dòng)通信技術(shù),其開(kāi)發(fā)目的是讓全球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球17。GSM技術(shù)是屬于手機(jī)硬件方面的展現(xiàn),也是在開(kāi)發(fā)Android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。藍(lán)牙、EDGE、3G及Wi.Fi:藍(lán)牙技術(shù)是一種新型、開(kāi)放、低成本、短距離的無(wú)線連接技術(shù),可取代短距離的電纜,實(shí)現(xiàn)話音和數(shù)據(jù)的無(wú)線傳輸。EDGE(Enhanced Data Rate for GSM Evolution),即增強(qiáng)型數(shù)據(jù)速率GSM演進(jìn)技術(shù)。EDGE是一種從GSM到3G的過(guò)渡技術(shù),它主要是在GSM系統(tǒng)中采用了一種新的調(diào)制方法,即最先進(jìn)的多時(shí)隙操作和8PSK調(diào)制技術(shù)18。由于8PSK可將現(xiàn)有GSM網(wǎng)絡(luò)采用的8GMSK可將現(xiàn)有GSM網(wǎng)絡(luò)采用的GMSK調(diào)制技術(shù)的信號(hào)空間從2擴(kuò)展到8,從而使每個(gè)符號(hào)所包含的信息是原來(lái)的4倍。Wi.Fi(WireleddFidelity),即無(wú)線保真技術(shù),和藍(lán)牙技術(shù)一樣,都屬于在辦公室和家庭中使用的短距離無(wú)線技術(shù)。該技術(shù)使用的是2.4GHz附近的頻段,該頻段目前尚屬?zèng)]用許可的而無(wú)線頻段。其目前可使用的標(biāo)準(zhǔn)有兩個(gè),分別是IEEE802.11a和IEEE802.11b。這些通訊能力是屬于手機(jī)硬件方面的展現(xiàn),也是在開(kāi)發(fā)android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。GPS:Global Positioning System,即全球定位系統(tǒng),它是一個(gè)由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)19。這個(gè)系統(tǒng)可以保證在任意的時(shí)刻和任何地點(diǎn)都可以同時(shí)觀測(cè)到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測(cè)點(diǎn)的經(jīng)緯度和高度,以便實(shí)現(xiàn)導(dǎo)航、定位、授時(shí)等功能。這項(xiàng)技術(shù)可以用來(lái)引導(dǎo)飛機(jī)、船舶、車(chē)輛以及個(gè)人。這個(gè)同樣也是屬于手機(jī)硬件方面的展現(xiàn),也是在開(kāi)發(fā)Android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。豐富的開(kāi)發(fā)環(huán)境:在Android SDK提供相當(dāng)完善的程序開(kāi)發(fā)環(huán)境,其開(kāi)發(fā)環(huán)境包括設(shè)備模擬器、調(diào)試工具、內(nèi)存和性能檢測(cè)等方面的評(píng)估功能,另外也可提供用于Eclipse IDE的開(kāi)發(fā)插件界面。2.2 Android SDK介紹 Android SDK是Android手機(jī)操作系統(tǒng)運(yùn)行的平臺(tái)支撐,它由開(kāi)發(fā)文檔、實(shí)例、編程API、開(kāi)發(fā)工具集等組成20。Dosc包含了的Android開(kāi)發(fā)文檔,Samples包含了Notepad、APIDemos、Snake等示例程序,Tools包括全部開(kāi)發(fā)、編譯和調(diào)試工具。Emulator.exe:能啟動(dòng)Android模擬器。Android模擬器用來(lái)在虛擬的Android環(huán)境下,運(yùn)行應(yīng)用程序。Adb.exe(Android debugging bridge):是Android的一個(gè)調(diào)試工具,ddms是一個(gè)在adb基礎(chǔ)上的一個(gè)圖形化工具。Adb的工作方式比較特殊,采用監(jiān)聽(tīng)TCP5554等端口的方式讓IDE和Qemu通訊,默認(rèn)情況下adb會(huì)監(jiān)聽(tīng)daemon相關(guān)的網(wǎng)絡(luò)端口,所以當(dāng)運(yùn)行Eclipse時(shí)adb進(jìn)程就會(huì)自動(dòng)運(yùn)行。Android是一個(gè)操作系統(tǒng)平臺(tái),啟動(dòng)一個(gè)模擬器就啟動(dòng)了一個(gè)操作系統(tǒng)??梢允褂肁ndroid adb連接到這個(gè)操作系統(tǒng),并運(yùn)行一些系統(tǒng)命令,就像平時(shí)大家用終端訪問(wèn)一個(gè)遠(yuǎn)程linux、unix服務(wù)器,可以使用adb shell。如下進(jìn)行shell后進(jìn)行l(wèi)s命令,在該shell下可運(yùn)行l(wèi)inux下一些常用的命令。注意:adb shell默認(rèn)只啟動(dòng)一個(gè)模擬器(emulator),如果需要啟動(dòng)多個(gè)模擬器,則需要添加相應(yīng)的參數(shù)。如剛才使用的adb devices命令返回了兩個(gè)模擬器,如果要連續(xù)其中一個(gè)則加參數(shù)-s;使用加:adb 是emulator-5544 shell。2.3 XML技術(shù)XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語(yǔ)言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)。XML是Internet環(huán)境中跨平臺(tái)的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴(kuò)展標(biāo)記語(yǔ)言XML是一種簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語(yǔ)言,使用一系列簡(jiǎn)單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記易于建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)所占用的空間多,但XML極其簡(jiǎn)單易于掌握和使用。XML作為一種廣泛且被各大廠商接收的語(yǔ)言,具有自己的優(yōu)點(diǎn),其優(yōu)點(diǎn)主要體現(xiàn)在以下幾方面。(1)開(kāi)放性XML成功的主要因素之一是它的基于規(guī)范和標(biāo)準(zhǔn)的開(kāi)放性。XML技術(shù)根據(jù)標(biāo)準(zhǔn)規(guī)范,允許在任何平臺(tái)上取得和處理數(shù)據(jù)。更重要的是XML允許通過(guò)HTTP和其他傳輸協(xié)議交換XML數(shù)據(jù)。(2)可擴(kuò)展性可擴(kuò)展性是指,使用XML可以按照自己的需要制定語(yǔ)言。XML繼承了SGML的許多關(guān)鍵特性,首先是良好而可擴(kuò)展性。XML允許使用者創(chuàng)建和使用自己的標(biāo)記而不是HTML的有限詞匯表,用戶可以根據(jù)應(yīng)用需要定義自己的標(biāo)記語(yǔ)言,也可以建立一套特定行業(yè)標(biāo)記語(yǔ)言,作為信息共享和數(shù)據(jù)交換的基礎(chǔ)。使用XML作為表單的描述格式,可以滿足用戶對(duì)表單定制的需求。(3)XML文檔的內(nèi)容和結(jié)構(gòu)完全分離XML的形式和內(nèi)容是分離的,這樣可以讓數(shù)據(jù)的收集者專注于數(shù)據(jù)處理,相同的數(shù)據(jù)無(wú)需改動(dòng)即可在不同的XSL(XML Style language)頁(yè)面呈現(xiàn)不同的風(fēng)格。同時(shí),內(nèi)容和形式的分離使XML文檔在不同應(yīng)用系統(tǒng)之間的轉(zhuǎn)換變得非常簡(jiǎn)單,用戶只需要將兩個(gè)不同XML文檔的DTD(Document Type Definition)或XML Schema進(jìn)行映射。2.4 JNI技術(shù)JNI是Java Native Interface的縮寫(xiě),中文為JAVA本地調(diào)用。從Java1.1開(kāi)始,Java Native Interface(JNI)標(biāo)準(zhǔn)成為java平臺(tái)的一部分,它允許java代碼和其他語(yǔ)言編寫(xiě)的代碼進(jìn)行交互。JNI的初衷是為了本地已編譯語(yǔ)言,尤其是為C和C+而設(shè)計(jì)的,但是它并不妨礙使用其他語(yǔ)言,只要符合約定且被支持就可以了。JNI設(shè)計(jì)的目的是在java應(yīng)用程序中調(diào)用其它語(yǔ)言編寫(xiě)的功能模塊。其結(jié)構(gòu)如圖2-4所示。圖 2-4 JNI 調(diào)用關(guān)系圖標(biāo)準(zhǔn)的java類(lèi)庫(kù)可能完成不了所需要的功能特性,或許已經(jīng)有了用其他語(yǔ)言寫(xiě)成的庫(kù)或者程序,而希望在本java程序中使用它,則可通過(guò)JNI調(diào)用。如果需要用底層語(yǔ)言實(shí)現(xiàn)一個(gè)小型的時(shí)間敏感代碼,比如匯編,然后在java程序中調(diào)用這些功能。實(shí)現(xiàn)JNI的步驟如圖2-5所示。(1)編寫(xiě)帶有native聲明的方法的java類(lèi),native所聲明的方法既是java調(diào)用但其實(shí)現(xiàn)過(guò)程是由別的語(yǔ)言完成的。(2)使用javac命令編譯所編寫(xiě)的java類(lèi),生成可以再JVM運(yùn)行的字節(jié)碼。使用javah?jni java類(lèi)名生成擴(kuò)展名為.h的頭文件。在自動(dòng)生成的頭文件中將聲明有待實(shí)現(xiàn)的C函數(shù)。(3)使用C/C+實(shí)現(xiàn).h文件中所聲明的方法。(4)將C/C+程序文件編譯成動(dòng)態(tài)鏈接庫(kù)文件,然后將動(dòng)態(tài)庫(kù)加載到系統(tǒng)中,然后應(yīng)用程序通過(guò)native接口調(diào)用即可。圖2-5 JNI 開(kāi)發(fā)流程3 基于Android平臺(tái)計(jì)算器設(shè)計(jì)設(shè)計(jì)實(shí)現(xiàn)一個(gè)成功的應(yīng)用程序,不但要有使用的功能配置,也要有有好的用戶界面,下面就是我對(duì)基于Android計(jì)算器的設(shè)計(jì)簡(jiǎn)要介紹。3.1 系統(tǒng)的總體設(shè)計(jì)根據(jù)任務(wù)書(shū),符合使用用戶的實(shí)際要求,系統(tǒng)應(yīng)實(shí)現(xiàn)以下功能:計(jì)算器界面友好,方便使用,顯示至少6位結(jié)果,具有基本的加、減、乘、除功能,能夠判斷用戶輸入運(yùn)算數(shù)是否正確,支持小數(shù)運(yùn)算,具有退格功能,能夠刪除最后一個(gè)輸入,具有清除功能,即C,具有結(jié)果存儲(chǔ)功能,能夠顯示存儲(chǔ)器狀態(tài),支持觸屏手機(jī)。整個(gè)程序基于android技術(shù)開(kāi)發(fā),出總體模塊外主要分為輸入模塊、顯示模塊以及計(jì)算模塊(包括一些其他功能)這三大部分。在整個(gè)系統(tǒng)中總體模塊控制系統(tǒng)的生命周期,輸入模塊部分負(fù)責(zé)讀取用戶輸入的數(shù)據(jù),顯示模塊部分負(fù)責(zé)顯示用戶之前輸入的數(shù)據(jù)以及顯示最終的計(jì)算結(jié)果,計(jì)算模塊部分負(fù)責(zé)進(jìn)行數(shù)據(jù)的運(yùn)算以及一些其他的功能。下面較為詳細(xì)的做了說(shuō)明。具體的說(shuō),總體模塊的作用主要是生成應(yīng)用程序的主類(lèi),控制應(yīng)用程序的生命周期。輸入模塊主要描述了計(jì)算器鍵盤(pán)以及鍵盤(pán)的監(jiān)聽(tīng)即主要負(fù)責(zé)讀取用戶的鍵盤(pán)輸入以及響應(yīng)觸屏的按鍵,需要監(jiān)聽(tīng)手機(jī)按鍵動(dòng)作以及用指針事件處理方法處理觸屏的單擊動(dòng)作(以松開(kāi)按鍵為準(zhǔn))。同時(shí)提供了較為直觀的鍵盤(pán)圖形用戶界面。顯示模塊描述了計(jì)算器的顯示區(qū),即該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果,同時(shí)還負(fù)責(zé)顯示一些其他的信息。計(jì)算模塊則主要描述了計(jì)算器的整體,實(shí)現(xiàn)了計(jì)算器的界面,負(fù)責(zé)計(jì)算用戶輸入數(shù)據(jù),包括加、減、乘、除、等各種計(jì)算功能,記憶數(shù)據(jù)的相關(guān)功能,退格以及清零的功能。3.2 程序流程和系統(tǒng)功能設(shè)計(jì)3.2.1 程序流程設(shè)計(jì)知道了系統(tǒng)的功能以后,我們通過(guò)main.xml來(lái)建立顯示界面,完成后系統(tǒng)開(kāi)始監(jiān)聽(tīng)用戶的按鍵輸入,每次輸入系統(tǒng)都會(huì)判斷一次用戶輸入的類(lèi)型,是數(shù)字還是運(yùn)算符號(hào)或者是清除,判斷完后分成不同類(lèi)型如數(shù)字,符號(hào),基本運(yùn)算等等進(jìn)行進(jìn)一步的處理,根據(jù)用戶的要求繼續(xù)進(jìn)行下一步的操作,最后計(jì)算出最終結(jié)果并顯示在顯示區(qū)。系統(tǒng)流程圖如圖3-2所示:圖3-1 程序流程圖3.2.2 系統(tǒng)功能設(shè)計(jì)整個(gè)系統(tǒng)的功能比較多,比較復(fù)雜,如上所說(shuō),可以分為十多個(gè)功能模塊,但是邏輯上理解其實(shí)不算困難,系統(tǒng)包括普通計(jì)算功能,包括加減乘除,退格以及清零功能。下面就讓我們用圖3-2來(lái)表示:圖3-2 系統(tǒng)的功能圖以上就是系統(tǒng)的流程圖,不過(guò)只是一個(gè)簡(jiǎn)單是示意流程圖,不是整個(gè)程序的完整流程圖,整個(gè)系統(tǒng)的流程圖由于模塊眾多,整個(gè)列舉不易于理解,故此就只采用簡(jiǎn)單流程圖作為示例說(shuō)明,反而更加的簡(jiǎn)單明了。3.3基于Android平臺(tái)系統(tǒng)具體設(shè)計(jì)系統(tǒng)除了總體模塊以外主要由三大模塊來(lái)組成,即輸入模塊,顯示模塊和計(jì)算模塊。用系統(tǒng)框圖來(lái)表示即如圖3-3。圖3-3 系統(tǒng)框圖系統(tǒng)這三大模塊都各自包含什么內(nèi)容在下文的系統(tǒng)詳細(xì)設(shè)計(jì)中會(huì)有進(jìn)一步的說(shuō)明,此處就暫且略過(guò)。下面就來(lái)詳細(xì)的說(shuō)明一下系統(tǒng)的各個(gè)模塊都是如何設(shè)計(jì)的。3.3.1 總體模塊詳細(xì)設(shè)計(jì)總體模塊需要完成的任務(wù)主要就是系統(tǒng)的程序啟動(dòng)類(lèi),需要負(fù)責(zé)整個(gè)系統(tǒng)的生命周期。同時(shí)在還要在模塊中完成菜單欄的所有功能,即退出程序,記憶數(shù)據(jù),顯示數(shù)據(jù),清除記憶數(shù)據(jù)這四個(gè)功能。總體模塊的功能圖如圖3-4:圖3-4 總體模塊功能圖3.3.2 輸入模塊詳細(xì)設(shè)計(jì)系統(tǒng)如果想完成計(jì)算器中的各種功能,首先用戶要能進(jìn)行數(shù)據(jù)輸入,由于是在觸屏手機(jī)上開(kāi)發(fā)計(jì)算器程序,所以要求輸入可以直接使用觸屏進(jìn)行,所以在設(shè)計(jì)的時(shí)候就要充分的考慮要這一點(diǎn)。正是由于考慮到這個(gè)特殊的地方,所以在進(jìn)行模塊設(shè)計(jì)中,選擇編寫(xiě)輸入模塊類(lèi)的時(shí)候會(huì)特意選取使用了可以支持觸屏輸入的特殊增強(qiáng)型圖形用戶界面類(lèi)。輸入模塊主要的任務(wù)是描述計(jì)算器鍵盤(pán)以及實(shí)現(xiàn)鍵盤(pán)的監(jiān)聽(tīng),即當(dāng)用戶點(diǎn)擊按鍵或者屏幕的時(shí)候監(jiān)聽(tīng)器會(huì)去調(diào)用相應(yīng)的處理辦法,本模塊還需要為系統(tǒng)提供了一個(gè)較為直觀的鍵盤(pán)圖形用戶界面。輸入模塊的功能圖如圖3-5:圖3-5 輸入模塊功能圖3.3.3 顯示模塊詳細(xì)設(shè)計(jì)作為手機(jī)計(jì)算器系統(tǒng),顯示部分也是必不可少的一部分。沒(méi)有顯示部分就沒(méi)有辦法顯示用戶輸入的數(shù)字是否正確,甚至不能顯示計(jì)算出的結(jié)果,由此可見(jiàn)顯示模塊即包括輸入的部分也包括輸出的部分。顯示模塊主要要完成的任務(wù)是描述計(jì)算器的顯示區(qū),該區(qū)域用于顯示用戶輸入的數(shù)據(jù)以及最終的計(jì)算結(jié)果和一些其他信息。同時(shí)本模塊還將提供調(diào)用和設(shè)置顯示的具體方法。顯示模塊的功能圖如圖3-6:圖3-6 顯示模塊功能圖3.3.4 計(jì)算模塊詳細(xì)設(shè)計(jì)系統(tǒng)要完成整個(gè)的計(jì)算器的計(jì)算功能,那么計(jì)算模塊就是整個(gè)系統(tǒng)的重點(diǎn)模塊。沒(méi)有計(jì)算模塊系統(tǒng)就不能順利的完成計(jì)算,就無(wú)法達(dá)到用戶的要求。所以計(jì)算模塊的設(shè)計(jì)也是本次系統(tǒng)設(shè)計(jì)中的重點(diǎn)。系統(tǒng)想要能在屏幕上顯示出計(jì)算器的樣子要有整體的布局,在本模塊中要完成布局的具體設(shè)計(jì),使用戶能夠看到整個(gè)計(jì)算器的畫(huà)面。同時(shí)系統(tǒng)想完成計(jì)算功能必須要處理用戶的輸入,當(dāng)輸入模塊的監(jiān)聽(tīng)傳到計(jì)算模塊中時(shí),計(jì)算模塊就要根據(jù)相應(yīng)的方法進(jìn)行進(jìn)一步的處理。這部分主要是對(duì)輸入進(jìn)行的邏輯判斷,基本會(huì)通過(guò)if else來(lái)實(shí)現(xiàn)邏輯判斷。計(jì)算模塊的功能圖如圖3-7:圖3-7 計(jì)算模塊功能圖4 計(jì)算器系統(tǒng)實(shí)現(xiàn)4.1 Android應(yīng)用程序構(gòu)成Android應(yīng)用程序一般是由Activity、Serviece、Content Provider、Intent、Intent Receiver、Notification六個(gè)組件構(gòu)成。但并非每一個(gè)Android應(yīng)用程序都包含這六個(gè)組件。(1)Activity(活動(dòng)):應(yīng)用程序的表示層。Activity是Android的基本組件。每一個(gè)activity代表一個(gè)單獨(dú)的屏幕。每一個(gè)activity都是繼承于Activity的獨(dú)立類(lèi)。這個(gè)activity類(lèi)將會(huì)顯示出幾個(gè)Views控件組成的用戶接口,并對(duì)事件作出響應(yīng)。Android使用了Intent,實(shí)現(xiàn)在屏幕與屏幕之間跳轉(zhuǎn)。Activity跳轉(zhuǎn)時(shí)只需要調(diào)用startActivity(Intent myIntent)方法。然后,系統(tǒng)會(huì)在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對(duì)應(yīng)的activity。新的activity接收到myIntent的通知后,開(kāi)始啟動(dòng)運(yùn)行。當(dāng)startActivity方法被調(diào)用將觸發(fā)解析myIntent的動(dòng)作,這個(gè)機(jī)制提供了兩個(gè)關(guān)鍵的好處:能夠重復(fù)利用從其他組件中以Intent的形式產(chǎn)生的一個(gè)請(qǐng)求和可以在任何時(shí)候被一個(gè)具有相同IntentFilter的新的startActivity取代。(2)Service(服務(wù)):Android應(yīng)用程序的后臺(tái)運(yùn)行組件。Service沒(méi)有用戶界面的程序。服務(wù)組件在后臺(tái)運(yùn)行,它們可以更新數(shù)據(jù)源和可見(jiàn)的Activity,并觸發(fā)Notification。它們被用來(lái)執(zhí)行一些需要在后臺(tái)持續(xù)的常規(guī)處理。例如媒體播放器這個(gè)activity會(huì)使用Context. startService()方法,連接到一個(gè)service上(如果這個(gè)service還沒(méi)有運(yùn)行將啟動(dòng)它)。當(dāng)連接到一個(gè)service之后,我們還可以通過(guò)service提供的接口與它進(jìn)行通訊。(3)Content Provider(內(nèi)容提供器):用來(lái)管理和分享應(yīng)用程序數(shù)據(jù)庫(kù)。Content Provider是在應(yīng)用程序之間共享數(shù)據(jù)的首選方法。通過(guò)配置Content Provider允許其他應(yīng)用程序訪問(wèn)存儲(chǔ)的數(shù)據(jù),也可以使用其他應(yīng)用程序提供的Content Provider來(lái)訪問(wèn)它們存儲(chǔ)的數(shù)據(jù)。Android平臺(tái)也提供了系統(tǒng)自帶的Content Provider,如聯(lián)系人信息等。(4)Intent(意向):Activity之間的粘合劑。使用Intent,可以在系統(tǒng)范圍內(nèi)向目標(biāo)活動(dòng)或者服務(wù)廣播消息,說(shuō)明希望執(zhí)行某個(gè)動(dòng)作的意圖。之后系統(tǒng)就會(huì)確定那些最適合執(zhí)行動(dòng)作的目標(biāo)。(5)Intent Receiver(意向接收器):通過(guò)Intent Receiver實(shí)現(xiàn)應(yīng)用能夠?qū)σ粋€(gè)外部的事件作出響應(yīng),Intent Receiver在AndroidManifest.xml中注冊(cè),但也可以在代碼中使用Context.registerReceiver()進(jìn)行注冊(cè)。當(dāng)一個(gè)intent receive被觸發(fā)時(shí),應(yīng)用不必對(duì)請(qǐng)求調(diào)用intent receive,系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)你的應(yīng)用。各種應(yīng)用還可以通過(guò)使用Context.broadcastIntent()將它們自己的intent receive廣播給其他應(yīng)用程序。(6)Notification(通知):一種用戶通知框架。通過(guò)允許向用戶發(fā)送信號(hào),而不會(huì)過(guò)分吸引他們的注意力或者打斷他們當(dāng)前的活動(dòng)。它們是服務(wù)或者廣播接收器吸引用戶注意的首選方法。例如,當(dāng)設(shè)備接收到一個(gè)文本消息或者來(lái)電的時(shí)候,它可以通過(guò)閃燈、發(fā)出聲音、顯示圖標(biāo)或則會(huì)顯示對(duì)話框信息的方式提示用戶。4.2 Android應(yīng)用系統(tǒng)文件結(jié)構(gòu)本文是基于Android平臺(tái)的開(kāi)發(fā),采用的開(kāi)發(fā)語(yǔ)言為JAVA。Eclipse是開(kāi)源的開(kāi)發(fā)工具,具有強(qiáng)大的功能及良好的用戶界面,深受廣大開(kāi)發(fā)者喜愛(ài)本文采用了Eclipse+Android SDK2.1開(kāi)發(fā)環(huán)境。在Eclipse建立計(jì)算器的Android項(xiàng)目工程,計(jì)算器的工程文件名為jisuanqi2。然后加你存放源文件、資源文件、頁(yè)面文件等各個(gè)文件夾。整個(gè)工程項(xiàng)目的目錄結(jié)構(gòu)如圖4-2所示。圖4-1項(xiàng)目的目錄結(jié)構(gòu)圖其中src和gen文件夾下是整個(gè)項(xiàng)目的源文件,所有的java代碼都在這兩個(gè)文件夾下。src文件夾存放的是本文中開(kāi)發(fā)的所有java文件。這java文件是整個(gè)項(xiàng)目的代碼。gen下面的R.java文件為Eclipse自動(dòng)生成的系統(tǒng)文件,此文件中包含了本文開(kāi)發(fā)過(guò)程中所吸引的資源的標(biāo)示。 res是存放整個(gè)系統(tǒng)中所用到的所有資源,此文件夾包含五個(gè)文件夾。分別為anim、drawble、layout、values、values-zh-rCN。其中anim文件夾下存放的是界面動(dòng)畫(huà)效果。Drawble文件夾存放的是本文開(kāi)發(fā)過(guò)程中所用到的所有圖片。Drawble包括drawable-hdpi,drawable-ldpi,drawable-mdpi三個(gè)文件夾,這是Adroid2.1版本的改進(jìn),是為了適應(yīng)Android手機(jī)系統(tǒng)不同的屏幕大小而設(shè)計(jì)的。用高分辨率的屏幕時(shí),頁(yè)面所需要的圖片在drawable-hdpi中,用地分辨率的屏幕時(shí),則采用drawable-ldpi文件夾下的資源圖片;而普通分辨率時(shí)采用drawable-mdpi文件夾下的圖片資源。因此這種設(shè)計(jì)具有很好的版本適應(yīng)性及兼容性,大大提高了用戶體驗(yàn)。AndroidManifest.xml是每個(gè)Android程序中所必需的,它位于Android工程的根目錄,描述了package中的全局?jǐn)?shù)據(jù),包括package中的組件,各自的實(shí)現(xiàn)類(lèi),各種能被處理的類(lèi)和啟動(dòng)位置等。Manifest文件的主要功能是聲明應(yīng)用程序的組件。例如,一個(gè)activitiy必須要有一個(gè)標(biāo)志對(duì)應(yīng),無(wú)論它是供應(yīng)外部使用還是只用于自己的package中。如果一個(gè)Activity沒(méi)有對(duì)應(yīng)的標(biāo)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論