基于Android平臺(tái)的背單詞軟件設(shè)計(jì)與開發(fā)_第1頁(yè)
基于Android平臺(tái)的背單詞軟件設(shè)計(jì)與開發(fā)_第2頁(yè)
基于Android平臺(tái)的背單詞軟件設(shè)計(jì)與開發(fā)_第3頁(yè)
基于Android平臺(tái)的背單詞軟件設(shè)計(jì)與開發(fā)_第4頁(yè)
基于Android平臺(tái)的背單詞軟件設(shè)計(jì)與開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(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)介

PAGEii-題目:基于Android平臺(tái)的背單詞軟件設(shè)計(jì)與開發(fā) 摘要社會(huì)生活的信息化和經(jīng)濟(jì)的全球化,使英語(yǔ)的重要性日益突出。英語(yǔ)作為最重要的信息載體之一,已成為人類生活各個(gè)領(lǐng)域中使用最廣泛的語(yǔ)言。許多國(guó)家在基礎(chǔ)教育發(fā)展戰(zhàn)略中,都把英語(yǔ)教育作為公民素質(zhì)教育的重要組成部分,并將其擺在突出的地位。隨著中國(guó)逐漸走進(jìn)國(guó)際化,使用英語(yǔ)的范圍也越來(lái)越廣,現(xiàn)在在日常的生活中許多地方都用得到英語(yǔ)。而對(duì)于學(xué)習(xí)英語(yǔ)的基礎(chǔ),背單詞的方式與方法也在不斷的更新和進(jìn)步。背單詞軟件是現(xiàn)下比較流行且實(shí)用有效的的工具,其功能也隨著計(jì)算機(jī)時(shí)代的發(fā)展越來(lái)越強(qiáng)大與復(fù)雜,主要功能包括英漢查詢,漢英查詢,真人發(fā)音,背誦單詞,默寫單詞,進(jìn)度查詢,添加單詞等。不但節(jié)約了學(xué)習(xí)者的記憶時(shí)間,還可以幫助他們有規(guī)律的去復(fù)習(xí),查找。本程序是一個(gè)在Android平臺(tái)上應(yīng)用開發(fā)的背單詞軟件。隨著智能手機(jī)的普及,Android平臺(tái)軟件更加方便人們隨時(shí)隨地背英語(yǔ)記單詞。該軟件用于幫助有決心去掌握英語(yǔ)的用戶去學(xué)習(xí)背誦英語(yǔ),可以大大的增加用戶英語(yǔ)的詞匯量,并可通過(guò)反復(fù)的鍛煉加強(qiáng)用戶的記憶力。具體包括以下功能:?jiǎn)卧~記憶,添加單詞,分列表查詢單詞;本系統(tǒng)界面友好、操作便捷,具有良好的可擴(kuò)展性和可維護(hù)性;系統(tǒng)經(jīng)過(guò)測(cè)試,可以穩(wěn)定運(yùn)行,能夠滿足手機(jī)用戶的基本需求。關(guān)鍵詞:英語(yǔ),安卓,記憶 AbstractInformationtechnologyandtheglobalizationoftheeconomyandsociallife,sotheimportanceofEnglishisincreasinglyprominent.Englishasoneofthemostimportantinformationcarrier,hasbecomethemostwidelyusedinvariousfieldsofthelanguageofhumanlife.Manycountriesinbasiceducationdevelopmentstrategy,regardedasanimportantpartofEnglishciviceducationqualityeducation,andinaprominentposition.AsChinagraduallyintotheinternational,English-speakingrangemorewidely,nowineverydaylifeareusedinmanyplacestogetEnglish.ThebasisforlearningEnglish,thewordbackwaysandmeansareconstantlyupdatingandimprovement.Backwordsoftwareismorepopularandholdsmanylessonsforpracticalandeffectivetoolforthedevelopmentofitsfunctionasthecomputeragemorepowerfulandcomplex,themainfeaturesincludeChineseandEnglishqueries,Chinese-Englishqueries,humanvoice,recitingthewords,worddictation,schedulequery,addthewordandsoon.Learner'smemorynotonlysavestime,butalsohelpthemtoregularreview,search.ThisprogramisanapplicationdevelopedontheAndroidplatformbackwordsoftware.Withthepopularityofsmartphones,AndroidplatformsoftwaremoreconvenientforpeoplebackanytimeEnglishVocabulary.ThesoftwareusedisdeterminedtomastertheEnglishlanguagetohelpuserstolearntorecitetheEnglish,cangreatlyincreasetheamountofusersofEnglishvocabulary,andenhancetheuser'smemorythroughrepeatedexercise.Includesthefollowingfeatures:wordmemory,addtheword,ofalistofquerywords;thesystemuser-friendly,easytooperate,hasgoodscalabilityandmaintainability;systemstested,stableoperation,tomeetthebasicneedsofmobilephoneusers.Keywords: English,Android,memoryPAGE2-第一章前言項(xiàng)目的背景和意義背單詞軟件是英語(yǔ)學(xué)習(xí)類軟件的分支,是專門針對(duì)用戶背誦英語(yǔ)單詞,掌握詞匯量而制作的輔助學(xué)習(xí)軟件。社會(huì)生活的信息化和經(jīng)濟(jì)的全球化,使英語(yǔ)的重要性日益突出。英語(yǔ)作為最重要的信息載體之一,已成為人類生活各個(gè)領(lǐng)域中使用最廣泛的語(yǔ)言。許多國(guó)家在基礎(chǔ)教育發(fā)展戰(zhàn)略中,都把英語(yǔ)教育作為公民素質(zhì)教育的重要組成部分,并將其擺在突出的地位。隨著中國(guó)逐漸走進(jìn)國(guó)際化,使用英語(yǔ)的范圍也越來(lái)越廣,現(xiàn)在在日常的生活中許多地方都用得到英語(yǔ)。而對(duì)于學(xué)習(xí)英語(yǔ)的基礎(chǔ),背單詞的方式與方法也在不斷的更新和進(jìn)步。智能的機(jī)操作系統(tǒng)經(jīng)過(guò)多盤廝殺,到現(xiàn)在形成了三足鼎立之勢(shì):Android、iOS、Windowsphone8三者一統(tǒng)天下。而其他的諸如SymbianS60,UIQ,WindowsMobile,Linux,Brew、Blackberr等則成為了過(guò)眼煙云。今天,Android更是在市場(chǎng)上有75%的占有率;在國(guó)內(nèi)比例更甚,達(dá)到90%之多。廣大的Android市場(chǎng)以及學(xué)習(xí)英語(yǔ)的重要使得基于Android平臺(tái)的背英語(yǔ)軟件開發(fā)更有意義。隨著智能手機(jī)的普及,Android平臺(tái)軟件更加方便人們隨時(shí)隨地背英語(yǔ)記單詞。研究開發(fā)現(xiàn)狀分析 背單詞軟件,目前市面上的背單詞軟件多達(dá)200余款,各有優(yōu)勢(shì)與特色,相對(duì)來(lái)說(shuō)功能都已經(jīng)比較成熟,不失為學(xué)習(xí)者掌握英語(yǔ)詞匯的一條捷徑。而依據(jù)背單詞軟件所采用的學(xué)習(xí)方法,基本可以分為三大類:網(wǎng)絡(luò)學(xué)習(xí)類隨著web2.0的深入,越來(lái)越多的網(wǎng)絡(luò)背單詞開始吸引用戶的參加。網(wǎng)絡(luò)背單詞借助手機(jī)(特別是3G)網(wǎng)絡(luò)和寬帶,使得用戶隨時(shí)隨地地學(xué)習(xí)成為可能。更主要的是,網(wǎng)絡(luò)背單詞相對(duì)于傳統(tǒng)的機(jī)器背單詞,有著更快的更新和更靈活地功能設(shè)計(jì),迅速為用戶所接受。蘋果手機(jī)(iphone)和Android手機(jī),讓網(wǎng)絡(luò)背單詞更快普及。電子辭典類這類背單詞軟件依照各類英語(yǔ)考試項(xiàng)目大綱,收錄了完整的英語(yǔ)詞匯,并詳細(xì)分類和列表,使用方法與詞匯書籍差別不大,習(xí)慣于使用詞匯書反復(fù)背誦的學(xué)習(xí)者可以選擇此類軟件。電子辭典類背單詞軟件通常可以在文曲星等學(xué)習(xí)機(jī)上,以及一部分手機(jī)軟件上。通常,他們的功能都很受局限,用戶堅(jiān)持的動(dòng)力不大,復(fù)習(xí)完字母A開頭的單詞都很少電腦類這部分屬于大型的背單詞軟件,通常安裝在windows電腦上,具有典型代表的新東方背單詞,我愛背單詞。這類軟件目前都是需要購(gòu)買的,但盜版非常猖獗。電腦軟件類的背單詞系統(tǒng)通常設(shè)計(jì)地較為復(fù)雜,有很多音效和各種特效,單詞量比較大,發(fā)音完備,開發(fā)耗時(shí)耗力,更新較為緩慢。用戶處于使用電腦軟件的習(xí)慣,一般來(lái)說(shuō),容易上手。但電腦軟件類的產(chǎn)品較為笨重,價(jià)格昂貴,不能在手機(jī)上使用,也就達(dá)不到隨時(shí)隨地復(fù)習(xí)的可能。在Android市場(chǎng)占有率達(dá)百分之七十的基礎(chǔ)上,加之日益重要的英語(yǔ)國(guó)際需求,基于Android平臺(tái)的背英語(yǔ)單詞軟件開發(fā)正符合了二十一世紀(jì)信息化發(fā)展的需求。

第二章技術(shù)與原理AndroidAndroid是一個(gè)包含操作系統(tǒng)、中介架構(gòu)層及應(yīng)用程序所產(chǎn)生出來(lái)的軟件堆棧架構(gòu)。由下而上,其核心為嵌入式Linux2.6作業(yè)系統(tǒng),向上搭配Google為Android開發(fā)的類庫(kù)及Android運(yùn)行時(shí),再配合應(yīng)用程序架構(gòu),來(lái)開發(fā)各種不同的應(yīng)用程序Android的API【3】AndroidAPI主要包含了以下幾個(gè)部分:(1)AndroidManifest.xmlAndroidManifest.xml是系統(tǒng)的控制文件,它告訴系統(tǒng)如何處理所創(chuàng)建的所有應(yīng)用組件(尤其是活動(dòng)(Activity),服務(wù)(Service),意圖接收器(IntentReceiver)和內(nèi)容提供者(ContentProvider))。舉例來(lái)說(shuō),控制文件就是把活動(dòng)和要接收的意圖(Intents)連接在一起的“膠水”。(2)活動(dòng)活動(dòng)就是一個(gè)有生命周期的對(duì)象。一個(gè)活動(dòng)就是完成某些工作的代碼塊,這部分工作還可能包括對(duì)用戶UI界面的顯示。不過(guò)這不是必須的,有些活動(dòng)從不顯示UI界面。(3)視圖視圖可以將其自身繪制到屏幕上。Android的用戶界面由一系列的視圖樹構(gòu)成。接口都是由一組以樹的形式出現(xiàn)的視圖組成的。開發(fā)者可以通過(guò)創(chuàng)建一個(gè)新的視圖的方法來(lái)使用自定義的圖形處理技術(shù)(比如開發(fā)游戲,或者是使用了不常用的用戶圖形窗口界面)。(4)意圖意圖是一個(gè)簡(jiǎn)單的消息對(duì)象,它表示程序想做某事的“意圖”。比如應(yīng)用程序想要顯示一個(gè)網(wǎng)頁(yè),那么它可以通過(guò)創(chuàng)建一個(gè)Intent實(shí)例并將其傳遞給系統(tǒng)來(lái)表示意圖瀏覽這個(gè)URI。系統(tǒng)將定位到能處理這一Intent的代碼(在當(dāng)前情況下就是瀏覽器),并運(yùn)行之。意圖也可以用于廣播系統(tǒng)范圍內(nèi)的有效事件(例如通知事件)。(5)服務(wù)服務(wù)是運(yùn)行在后臺(tái)的一段代碼。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的進(jìn)程里,這取決于自身的需要.。其它的組件可以綁定到一個(gè)服務(wù)上來(lái),通過(guò)遠(yuǎn)程過(guò)程調(diào)用(RPC)來(lái)調(diào)用這個(gè)方法。例如媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇的界面時(shí),仍然希望音樂(lè)依然可以繼續(xù)播放,這時(shí)就可用服務(wù)來(lái)保證當(dāng)用戶界面關(guān)閉時(shí)音樂(lè)還繼續(xù)播放著。(6)通知通知將以小圖標(biāo)的形式呈現(xiàn)在狀態(tài)欄里,用戶通過(guò)與圖標(biāo)的交互來(lái)接收消息。最常見的通知包括短信息、通話記錄和語(yǔ)音郵件,但是應(yīng)用程序也可以創(chuàng)建它們自己的通知事件。(7)內(nèi)容提供者內(nèi)容提供者是用來(lái)提供對(duì)設(shè)備上數(shù)據(jù)進(jìn)行訪問(wèn)。典型的例子就是使用內(nèi)容提供者來(lái)訪問(wèn)聯(lián)系人列表。應(yīng)用程序也可以使用其它程序通過(guò)內(nèi)容提供者提供的數(shù)據(jù),同時(shí)也可以定義自己的內(nèi)容提供者來(lái)向其它應(yīng)用提供數(shù)據(jù)訪問(wèn)服務(wù)。3.2Android應(yīng)用程序結(jié)構(gòu)解析通常由以下四個(gè)組件來(lái)構(gòu)建一個(gè)完整的Android應(yīng)用程序。①活動(dòng)②意圖接收器③服務(wù)④內(nèi)容提供者2.2.1活動(dòng)【2】活動(dòng)是以上四個(gè)組件中最常用的一個(gè)。每個(gè)活動(dòng)都是Activity的子類,并實(shí)現(xiàn)了一些獨(dú)有的功能,如管理UI顯示和UI的反饋事件。一個(gè)活動(dòng)就相當(dāng)于應(yīng)用程序的一個(gè)用戶界面,由事件響應(yīng)以及視圖等組成。大多數(shù)的應(yīng)用程序通常包括多個(gè)界面。例如:一個(gè)文本聊天應(yīng)用程序,至少應(yīng)該包含一個(gè)聯(lián)系人列表界面、一個(gè)聊天界面、一個(gè)設(shè)置界面、一個(gè)聊天記錄查詢界面等等。每個(gè)界面其實(shí)都可看作是一個(gè)活動(dòng)。顯示一個(gè)新界面就相當(dāng)于生成一個(gè)對(duì)應(yīng)的活動(dòng)對(duì)象。在一些情況下,活動(dòng)能夠返回給它的上級(jí)界面一個(gè)返回值,例如一個(gè)提供給用戶選擇照片的活動(dòng)可以返回給它的調(diào)用者用戶選擇了哪個(gè)照片文件。當(dāng)一個(gè)新的活動(dòng)出現(xiàn)時(shí),前一個(gè)活動(dòng)被中斷并被放入到一個(gè)歷史堆棧中。用戶可以使用返回鍵使前一個(gè)活動(dòng)重現(xiàn)。當(dāng)一個(gè)活動(dòng)不再需要時(shí),可以將它們從歷史堆棧中移除。默認(rèn)情況下,Android會(huì)為每個(gè)應(yīng)用程序保留從主界面開始的歷史堆棧。Android通過(guò)一個(gè)被稱作意圖的特殊類,來(lái)實(shí)現(xiàn)界面與界面之間的跳轉(zhuǎn)。一個(gè)意圖描述了一個(gè)應(yīng)用程序想要做什么。在意圖的描述結(jié)構(gòu)中,含有兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu):動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。典型的動(dòng)作類型包括MAIN、VIEW、PICK、EDIT等等,而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式表示。例如:顯示一個(gè)聯(lián)系人信息的界面,可以創(chuàng)建一個(gè)意圖,并將它的動(dòng)作設(shè)置成VIEW,數(shù)據(jù)設(shè)置成表示這個(gè)人信息的URI。除此之外,還有一個(gè)被稱作意圖過(guò)濾器(IntentFiher)的相關(guān)類。當(dāng)發(fā)生一個(gè)有效的目的請(qǐng)求時(shí),意圖過(guò)濾器用來(lái)描述一個(gè)活動(dòng)能夠處理什么意圖。如上例中所描述,想要正常顯示一個(gè)聯(lián)系人信息的界面,必須聲明一個(gè)意圖過(guò)濾器,它說(shuō)明當(dāng)有聯(lián)系人數(shù)據(jù)要被在界面上顯示時(shí),知道如何處理它們。通常意圖過(guò)濾器要被注冊(cè)在AndroidManifest.xml文件中。從一個(gè)界面跳轉(zhuǎn)到另一個(gè)界面是由解析各種意圖實(shí)現(xiàn)的。例如:一個(gè)活動(dòng)使用startActivity(myIntent)來(lái)調(diào)用其他活動(dòng)時(shí),系統(tǒng)會(huì)查找所有已經(jīng)安裝的應(yīng)用程序的意圖過(guò)濾器,并從中挑選出能夠匹配myIntent意圖的活動(dòng)。隨后,這個(gè)新的活動(dòng)接收到意圖(myIntent)的通知并開始運(yùn)行。當(dāng)startActivity方法被調(diào)用,解析意圖的處理過(guò)程隨之發(fā)生,這個(gè)機(jī)制有以下兩個(gè)突出的優(yōu)點(diǎn):活動(dòng)可以通過(guò)一個(gè)以意圖形式產(chǎn)生的請(qǐng)求來(lái)重用其他組件的功能?;顒?dòng)可以在任何時(shí)候被一個(gè)具有等價(jià)意圖過(guò)濾器的新活動(dòng)所替代。2.2.2意圖接收器【1】當(dāng)想要編寫代碼來(lái)對(duì)外部事件做一些處理時(shí),可以使用意圖接收器。意圖接收器并不顯示UI界面,它是通過(guò)NotificationManager來(lái)通知用戶他們感興趣的事件發(fā)生了。意圖接收器同樣可以被注冊(cè)在AndroidManifest.xml文件中,同時(shí)也可以在代碼中使用Context.registerReceiver()來(lái)注冊(cè)自己的意圖接收器。當(dāng)一個(gè)意圖接收器被觸發(fā)時(shí),系統(tǒng)會(huì)根據(jù)需要來(lái)啟動(dòng)應(yīng)用程序。2.2.3服務(wù)服務(wù)是具有長(zhǎng)生命周期并且沒有用戶界面的代碼。2.2.4內(nèi)容提供者【4】在Android中,每個(gè)應(yīng)用程序都是有自己的userID及在自己的進(jìn)程中執(zhí)行。這樣做的好處是,可以保護(hù)系統(tǒng)及應(yīng)用程序,避免被其他不正常的應(yīng)用程序所影響。可以把每個(gè)進(jìn)程想像成是一個(gè)黑盒子,彼此不會(huì)互相影響,連內(nèi)存的資料都無(wú)法共享。如果應(yīng)用程序之間想要共享數(shù)據(jù),就需要使用用內(nèi)容提供者。一個(gè)內(nèi)容提供者就是一個(gè)類,它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的方法集合。其他的應(yīng)用程序可以使用這些方法來(lái)保存和檢索此內(nèi)容提供者處理過(guò)的數(shù)據(jù)。2.3Android應(yīng)用的構(gòu)成和工作機(jī)制【5】對(duì)于一個(gè)Android應(yīng)用程序來(lái)說(shuō),是由Activity、IntentReceiver、Service、ContentProvider四部分組成,但并不是每一個(gè)Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件AndroidManifest.xml中進(jìn)行配置。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。Android應(yīng)用的構(gòu)成和工作流程如圖2-1:圖2-1:Android的構(gòu)成和工作流程第三章需求建模需求概述功能性需求概述功能需求定義一個(gè)軟件系統(tǒng)或組件的功能,也是一個(gè)系統(tǒng)需提供的功能及服務(wù)。功能可以用一組輸入、行為及輸出的組合來(lái)表示。功能需求可以是計(jì)算、技術(shù)細(xì)節(jié)、數(shù)據(jù)處理或其他說(shuō)明系統(tǒng)希望達(dá)成功能的內(nèi)容。通過(guò)第一章的項(xiàng)目背景和現(xiàn)狀分析,系統(tǒng)的主要業(yè)務(wù)包括以下主要功能:查詢記錄,單詞記憶,添加單詞等。非功能性需求概述非功能性需求是指依一些條件判斷系統(tǒng)運(yùn)作情形或其特性,而不是針對(duì)系統(tǒng)特定行為的需求。非功能性需求是指依一些條件判斷系統(tǒng)運(yùn)作情形或其特性,而不是針對(duì)系統(tǒng)特定行為的需求。包括安全性、可靠性、互操作性、健壯性、易使用性、可維護(hù)性、可移植性、可重用性、可擴(kuò)充性。領(lǐng)域模型領(lǐng)域模型是對(duì)領(lǐng)域內(nèi)的概念類或現(xiàn)實(shí)世界中對(duì)象的可視化表示。又稱概念模型、領(lǐng)域?qū)ο竽P汀⒎治鰧?duì)象模型。它專注于分析問(wèn)題領(lǐng)域本身,發(fā)掘重要的業(yè)務(wù)領(lǐng)域概念,并建立業(yè)務(wù)領(lǐng)域概念之間的關(guān)系。根據(jù)對(duì)系統(tǒng)的業(yè)務(wù)分析,得系統(tǒng)領(lǐng)域模型如下:圖3-1:領(lǐng)域模型需求分析本軟件是基于Android平臺(tái)上自主研發(fā)的背英語(yǔ)單詞軟件。該軟件主要幫助用戶學(xué)習(xí)英語(yǔ),增加用戶的詞匯量,加強(qiáng)用戶的記憶。本軟件具體包括以下主要功能:查詢記錄,單詞記憶,添加單詞等。需求列表用戶打開軟件,在主頁(yè)面選擇需求功能,進(jìn)入需求選擇頁(yè)面;能夠選擇添加單詞頁(yè)面并能夠?qū)卧~歸類能夠在輸入列表數(shù)后對(duì)該列表下的單詞進(jìn)行查詢背誦能夠正常退出軟件。用例描述:添加英語(yǔ)單詞至相應(yīng)列表角色:用戶前置條件:用戶能夠正常打開登錄軟件選擇添加英語(yǔ)單詞功能并成功添加英語(yǔ)單詞4.1正常流程a)點(diǎn)擊“Insert”按鈕b)在第一個(gè)文本框輸入英語(yǔ)單詞c)在第二個(gè)文本框輸入列表數(shù)d)點(diǎn)擊“ok”,成功保存記錄該英語(yǔ)單詞4.2異常流程a)第二個(gè)文本框輸入非阿拉伯?dāng)?shù)字,無(wú)法成功。b)其他情況用例圖用戶背單詞的用例圖如下圖3-2:用例圖第四章架構(gòu)設(shè)計(jì)系統(tǒng)架構(gòu)及原理Android系統(tǒng)架構(gòu)研究Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,Android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層。 Android的功能特征包括了應(yīng)用程序架構(gòu)、Dalvik虛擬機(jī)器、集成的瀏覽器、優(yōu)化的繪圖能力、SQLite數(shù)據(jù)庫(kù)、多媒體的支持能力、GSM技術(shù)、藍(lán)牙、EDGE、3G及Wi-Fi等。Android架構(gòu)分析圖4-1:Android架構(gòu)的五個(gè)部分應(yīng)用程序架構(gòu)在AndroidSDK中,定義了讓開發(fā)者使用與核心應(yīng)用程序相同API的權(quán)限應(yīng)用程序框架是為了要簡(jiǎn)化組件的重新利用而設(shè)計(jì)的,應(yīng)用程序可以發(fā)布功能為其它應(yīng)用程序所使用。但是,這要受限于應(yīng)用程序架構(gòu)的安全機(jī)制,使用者以用同樣的機(jī)制來(lái)新增、置換組件。目前所有的應(yīng)用程序是由服務(wù)及系統(tǒng)來(lái)組成,包含有:(1)豐富而又可擴(kuò)展的視圖:可以用來(lái)構(gòu)建應(yīng)用程序,它包括列表,網(wǎng)格,文本框,按鈕,甚至可嵌入的web瀏覽器。(2)內(nèi)容提供器:使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)(3)資源管理器:提供非代碼資源的訪問(wèn),如本地字符串,圖形,和布局文件(Layoutfiles)。(4)通知管理器:使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。(5)活動(dòng)管理器:用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。類庫(kù)在Android中包含一些C/C++的類庫(kù),這些類庫(kù)能被Android系統(tǒng)中不同的組件來(lái)使用。開發(fā)者可以通過(guò)應(yīng)用程序框架使用這些功能。部分核心類庫(kù)列表如下:(1)surfaceManager:主要的功能是讓開發(fā)者可以去存取/顯示系統(tǒng)及管理的功能,在[顯示]與[存取操作]間的對(duì)應(yīng)、互動(dòng)以及實(shí)現(xiàn)無(wú)接縫的2D/3D多應(yīng)用程序之間的整合。例如:在2D、2D顯示上的合成、疊合動(dòng)作。(2)3Dlibraries:主要是依openGLES1.0規(guī)范所定義的3D繪圖引擎。該庫(kù)使用硬件加速(當(dāng)硬件可用時(shí)),可以將硬件的3D功能做最佳化的處理顯示。(3)SGL:主要是處理有關(guān)顯示2D方面的繪圖引擎。(4)MediaFramework:主要是以packetVideo公司的OpenCORE為基礎(chǔ)所發(fā)展的多媒體類庫(kù),該庫(kù)支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。例如:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式(5)FreeType:主要是用來(lái)顯示點(diǎn)陣圖和處理向量字形的。(6)SSL:(secureSocketsuyer),中文名為“安全套接層協(xié)議層”,它是網(wǎng)景公司提出的基于WEB應(yīng)用的安全協(xié)議,當(dāng)前版本為3.0。SSL協(xié)議指定了一種在應(yīng)用程序協(xié)議(如HTTP、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。它已被廣泛地用于Web瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸。SSL協(xié)議位于TCP膽協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSLRecordProtocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSLHandshakeprotocol):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議提供的服務(wù)主要有:①認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;②加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;③維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變。(7)SQLite:SQLite是一套開放性的關(guān)聯(lián)式資料庫(kù),能夠被所有應(yīng)用程序使用的輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)引擎。(8)webKit:是一個(gè)先進(jìn)的網(wǎng)頁(yè)瀏覽器引擎,被用來(lái)構(gòu)建Android瀏覽器和內(nèi)嵌的web視圖,也可以讓開發(fā)者利用這個(gè)引擎來(lái)做不同的應(yīng)用。(9)libc:就是一個(gè)BSD標(biāo)準(zhǔn)C類庫(kù)。但是,針對(duì)Linux嵌入式裝置進(jìn)行過(guò)最佳化的調(diào)整。Android運(yùn)行時(shí)組件雖然Android是用Java語(yǔ)言來(lái)開發(fā)、撰寫應(yīng)用程序,但卻不使用Java運(yùn)行時(shí)組件來(lái)執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運(yùn)行時(shí)組件來(lái)執(zhí)行程序。Android運(yùn)行時(shí)組件包括兩個(gè)重要的部分,一個(gè)是核心類庫(kù),另一個(gè)是Dalvik虛擬機(jī)。業(yè)務(wù)用例的實(shí)現(xiàn)錄入單詞管理用戶登錄軟件以后進(jìn)入錄入單詞頁(yè)面,輸入的單詞及其所屬列表會(huì)被后臺(tái)數(shù)據(jù)庫(kù)所記錄。查詢單詞用戶輸入所需要查詢的英語(yǔ)單詞列表數(shù)目,由后臺(tái)數(shù)據(jù)庫(kù)記錄的信息將顯示出來(lái)。數(shù)據(jù)庫(kù)設(shè)計(jì)Android使用SQLite數(shù)據(jù)庫(kù),它是一個(gè)開源的、支持多操作系統(tǒng)的SQL數(shù)據(jù)庫(kù),在許多領(lǐng)域廣泛使用。使用DBAdapter類,可以簡(jiǎn)化Android應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)記錄的操作。操作數(shù)據(jù)庫(kù)的最佳實(shí)踐是創(chuàng)建一個(gè)輔助類,由它封裝所有對(duì)數(shù)據(jù)庫(kù)的復(fù)雜訪問(wèn),對(duì)于調(diào)用代碼而言它是透明的,因此我創(chuàng)建了一個(gè)DBAdapter的輔助類,由它創(chuàng)建、打開、關(guān)閉和使用SQLite數(shù)據(jù)庫(kù)。E-R圖因?yàn)橄到y(tǒng)目前的功能較為簡(jiǎn)單,所以涉及的類較為單一,可以看到系統(tǒng)的E-R圖如圖4-2所示:圖4-2:系統(tǒng)ER圖表的設(shè)計(jì)由數(shù)據(jù)分析,可實(shí)現(xiàn)以下數(shù)據(jù)總表,如圖圖4-3:系統(tǒng)數(shù)據(jù)總表圖

第五章模塊設(shè)計(jì)背英語(yǔ)軟件實(shí)現(xiàn)的功能包括登陸軟件,增加單詞,添加單詞到相應(yīng)列表,輸入列表數(shù)查詢單詞,退出軟件等。5.1選擇主界面用戶界面主要包括三個(gè)功能:進(jìn)行新的英語(yǔ)單詞記錄;翻閱之前背誦過(guò)的英語(yǔ);退出軟件。實(shí)現(xiàn)代碼如下:publicclassMainActivityextendsActivity{ //這個(gè)文件是主頁(yè)面場(chǎng)景,也就是一打開程序進(jìn)入的那個(gè)場(chǎng)景 //@Override表示這個(gè)函數(shù)是重載函數(shù) @Override protectedvoidonCreate(BundlesavedInstanceState){ //這兩個(gè)是系統(tǒng)函數(shù),表明創(chuàng)建一個(gè)新實(shí)例,并且該實(shí)例的布局采用activity_main.xml //activity_main.xml在目錄res->layout中 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //每一個(gè)activity都需要一個(gè)布局文件,在res->layout中 //布局文件中有按鈕、文本框之類的、通過(guò)下面這個(gè)函數(shù)來(lái)獲取 Buttonb_play=(Button)findViewById(R.id.button_play); Buttonb_insert=(Button)findViewById(R.id.button_insert); Buttonb_exit=(Button)findViewById(R.id.button_exit); //增加按鈕的監(jiān)聽函數(shù),就是點(diǎn)擊這個(gè)按鈕時(shí)會(huì)發(fā)生什么事 b_play.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub //新建一個(gè)Intent,提示系統(tǒng)點(diǎn)擊按鈕之后,你的主屏幕會(huì)變成系統(tǒng)中的哪個(gè)場(chǎng)景 Intentintent_play=newIntent(MainActivity.this,PlayActivity.class); //啟動(dòng)一個(gè)新場(chǎng)景 startActivity(intent_play); //把當(dāng)前的場(chǎng)景關(guān)閉 MainActivity.this.finish(); } }); b_insert.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentintent_insert=newIntent(MainActivity.this,InActivity.class); startActivity(intent_insert); MainActivity.this.finish(); } }); b_exit.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewarg0){ //TODOAuto-generatedmethodstub MainActivity.this.finish(); } }); } //這個(gè)是系統(tǒng)函數(shù),表明使用什么菜單設(shè)置,可以不用理會(huì) @Override publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); returntrue; }}play界面點(diǎn)擊“play”按鈕以后,進(jìn)入到輸入列表數(shù)頁(yè)面以后,輸入想背誦的單詞列表,然后點(diǎn)擊“ok”進(jìn)入單詞頁(yè)面,或者點(diǎn)擊“back”回到選擇主頁(yè)面。具體代碼實(shí)現(xiàn)如下:publicclassPlayActivityextendsActivity{ //這個(gè)Activity是在主頁(yè)面那里點(diǎn)擊Play之后會(huì)出現(xiàn)的場(chǎng)景 @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.activity_play); //獲取按鈕之類的,final表示這個(gè)屬性是全局的 Buttonback=(Button)findViewById(R.id.button_back3); finalEditTextset_list=(EditText)findViewById(R.id.set_list); Buttonb_setok=(Button)findViewById(R.id.set_ok); //按鈕添加監(jiān)聽函數(shù) b_setok.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub intto_list=0; //獲取你輸入文本框的內(nèi)容,如果不為空,就把他轉(zhuǎn)換為String if(set_list.getText().length()!=0) to_list=Integer.parseInt(set_list.getText().toString()); //調(diào)用另一個(gè)場(chǎng)景,從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)并展示的場(chǎng)景 //并且傳遞一個(gè)參數(shù),list_num,它的值=to_list Intentintent=newIntent(PlayActivity.this,ShowActivity.class); intent.putExtra("list_num",to_list); startActivity(intent); PlayActivity.this.finish(); } }); //調(diào)用另一個(gè)場(chǎng)景,返回之前的主頁(yè)面 back.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentintent=newIntent(PlayActivity.this,MainActivity.class); startActivity(intent); PlayActivity.this.finish(); } }); }}5.3進(jìn)入單詞列表界面 進(jìn)入到列表單詞頁(yè)面以后就可以一個(gè)一個(gè)查詢?cè)摿斜?。每個(gè)列表的首個(gè)單詞都是welcome。可以點(diǎn)擊next查看下一個(gè)要背誦的單詞,但不能向前翻前一個(gè)單詞,不過(guò)可以反復(fù)循環(huán)回到最開始的單詞??梢渣c(diǎn)擊“back”回到選擇列表頁(yè)面。具體實(shí)現(xiàn)代碼如下:publicclassShowActivityextendsActivity{ //這個(gè)Activity是從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)并展示 intlist_num; //Cursor,從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),返回的是一個(gè)Cursor對(duì)象的列表,你百度一下SQLiteCursor Cursorc; intcount; Strings; @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.activity_show); //獲取當(dāng)前Intent,從里面可以拿到之前的場(chǎng)景傳過(guò)來(lái)的參數(shù),就是list_num,見PlayActivity Intentintent=this.getIntent(); list_num=intent.getIntExtra("list_num",0); Buttonnext=(Button)findViewById(R.id.button_next); finalTextViewshow_word=(TextView)findViewById(R.id.show_word); Buttonback2=(Button)findViewById(R.id.button_back2); //數(shù)據(jù)庫(kù)相關(guān)的類,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作 DBAdapterdb=newDBAdapter(this); db.open(); //如果你之前有在文本框中輸入列表,那么從數(shù)據(jù)庫(kù)中讀取該列表下的單詞數(shù)據(jù) if(list_num!=0){ c=db.getWords(list_num); } //不然從數(shù)據(jù)庫(kù)中讀取所有的單詞數(shù)據(jù) else c=db.getAllWords(); //讀取的單詞數(shù)據(jù)的數(shù)量 count=c.getCount(); //show_word是給你展示的 show_word.setText("Welcome!"); //給按鈕添加監(jiān)聽函數(shù) next.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub //按按鈕next時(shí),會(huì)判斷你現(xiàn)在看到的是不是讀取出來(lái)的數(shù)據(jù)里面的最后一條 //如果是,則轉(zhuǎn)到讀取的數(shù)據(jù)的第一條開始顯示 if(c.getCount()>0){ if(c.isAfterLast()){ c.moveToFirst(); } //設(shè)置顯示給你的數(shù)據(jù),然后跳到下一條 show_word.setText(c.getString(0)); c.moveToNext(); } else{ show_word.setText("Nowordexists!"); } } }); back2.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Intentintent=newIntent(ShowActivity.this,PlayActivity.class); startActivity(intent); ShowActivity.this.finish(); } }); } }插入單詞頁(yè)面點(diǎn)擊“insert”按鈕以后進(jìn)入到插入單詞頁(yè)面,有兩個(gè)文本框,第一個(gè)文本框可輸入要背誦的英語(yǔ)單詞,第二個(gè)文本框可輸入該英語(yǔ)單詞要存放的列表數(shù)。點(diǎn)擊“ok”以后數(shù)據(jù)自動(dòng)存入數(shù)據(jù)庫(kù),兩個(gè)文本框重新恢復(fù)空白,可繼續(xù)輸入相應(yīng)的英語(yǔ)單詞及單詞所屬列表數(shù)。具體代碼實(shí)現(xiàn)如下:publicclassInActivityextendsActivity{ //這個(gè)是插入單詞的場(chǎng)景,第一個(gè)輸入框是單詞,第二個(gè)輸入框是單詞列表 @Override protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layout.activity_in); //獲取按鈕之類,要使用R.id,R是系統(tǒng)自動(dòng)生成的文件,獲取布局文件的東西需要使用R Buttonb_ok=(Button)findViewById(R.id.button_ok); Buttonb_back=(Button)findViewById(R.id.button_back); finalEditTextword=(EditText)findViewById(R.id.get_word); finalEditTextlist=(EditText)findViewById(R.id.get_list); //DBAdapter是DBAdapter數(shù)據(jù)庫(kù)類,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,見文檔 finalDBAdapterdb=newDBAdapter(this); //對(duì)按鈕添加監(jiān)聽函數(shù) b_ok.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub //t_word獲取第一個(gè)文本框的內(nèi)容 //tmp_lost獲取第二個(gè)文本框的內(nèi)容 Stringt_word=word.getText().toString(); Stringtmp_list=list.getText().toString(); if(word.getText().length()<=1||list.getText().length()<1){ } //if(t_word!=null&&tmp_list!=null) //如果文本框的內(nèi)容不為空,則打開數(shù)據(jù)庫(kù),向數(shù)據(jù)庫(kù)中插入數(shù)據(jù),然后關(guān)閉數(shù)據(jù)庫(kù) else{ db.open(); intt_list=Integer.parseInt(tmp_list); db.insertAWorld(t_word,t_list); db.close(); } //操作完之后把兩個(gè)文本框里面的內(nèi)容清空 word.setText(""); list.setText(""); } }); b_back.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub //調(diào)用另一個(gè)場(chǎng)景 Intentintent=newIntent(InActivity.this,MainActivity.class); startActivity(intent); InActivity.this.finish(); } }); } }

第六章部署與應(yīng)用6.1概述本章主要描述該設(shè)計(jì)時(shí)系統(tǒng)的運(yùn)行環(huán)境,以及該系統(tǒng)的應(yīng)用及一個(gè)對(duì)未來(lái)發(fā)展前景的展望。6.2項(xiàng)目部署Android的上層應(yīng)用程序是用Java語(yǔ)言開發(fā),同時(shí)還需要基于Dalvik虛擬機(jī),所以,Google公司推薦使用主流的Java繼承開發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語(yǔ)言進(jìn)行開發(fā),還應(yīng)該有由SUN公司提供的Java

SDK(其中包括JRE:Java

Runtime

Environment)。此外,Android的應(yīng)用程序開發(fā)和Java開發(fā)有較大區(qū)別的,所以還需要有Google提供的Android

SDK。同時(shí),還需要在Eclipse安裝ADT,為Android開發(fā)提供開發(fā)工具的升級(jí)或者變更,是Eclipse下開發(fā)工具的升級(jí)下載的工具。

簡(jiǎn)言之,需要以下軟件,才能搭建Android開發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開發(fā)。

(1)

Java

SDK

(2)

Eclipse

(3)

Android

SDK

(4)

ADT6.3系統(tǒng)運(yùn)行環(huán)境

運(yùn)行該系統(tǒng)需要具備以下配置環(huán)境操作系統(tǒng):Android;數(shù)據(jù)庫(kù):SQLite數(shù)據(jù)庫(kù);網(wǎng)絡(luò)環(huán)境:無(wú)要求;編譯環(huán)境:eclipse6.4部分界面演示6.4.1登陸軟件頁(yè)面在takeword的背景圖片下,分別有三個(gè)按鈕,“play”按鈕,“Insert”按鈕以及“Exit”按鈕。點(diǎn)擊不同的按鈕進(jìn)入不同的操作頁(yè)面。圖6-1:登陸軟件界面6.4.2輸入列表數(shù)頁(yè)面進(jìn)入到輸入列表數(shù)頁(yè)面以后,有一個(gè)輸入文本框以及“ok”和“back”按鈕。文本框內(nèi)輸入相應(yīng)的阿拉伯?dāng)?shù)字以后,點(diǎn)擊“ok”,便會(huì)顯示該列表下的英語(yǔ)單詞。圖6-2:輸入列表數(shù)頁(yè)面6.4.3單詞表頁(yè)面進(jìn)入到單詞表頁(yè)面以后,首先顯示的是“welcome”字母,點(diǎn)擊”next”進(jìn)入到下一個(gè)單詞,如此循環(huán)便可回到最開始的單詞,點(diǎn)擊“bac

溫馨提示

  • 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)論