軟件工程畢業(yè)設(shè)計(jì)(論文)基于Android手機(jī)輔助系統(tǒng)_第1頁
軟件工程畢業(yè)設(shè)計(jì)(論文)基于Android手機(jī)輔助系統(tǒng)_第2頁
軟件工程畢業(yè)設(shè)計(jì)(論文)基于Android手機(jī)輔助系統(tǒng)_第3頁
軟件工程畢業(yè)設(shè)計(jì)(論文)基于Android手機(jī)輔助系統(tǒng)_第4頁
軟件工程畢業(yè)設(shè)計(jì)(論文)基于Android手機(jī)輔助系統(tǒng)_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、青島大學(xué)本科生畢業(yè)論文(設(shè)計(jì)) 方萌本科畢業(yè)論文(設(shè)計(jì)) 題 目: 基于android手機(jī)輔助系統(tǒng) 學(xué) 院: 國際學(xué)院 專 業(yè): 軟件工程 姓 名: 指導(dǎo)教師: 2011年 5月23日 目 錄第一章 序言11.1 設(shè)計(jì)背景11.2 設(shè)計(jì)目標(biāo)11.2.1短信群發(fā)11.2.2來電管家21.2.3多彩手電筒21.2.4電蚊香21.3 項(xiàng)目設(shè)計(jì)原則31.3.1實(shí)用性原則31.3.2可控性原則31.3.3占用資源少的原則31.3.4易擴(kuò)展性原則31.4設(shè)計(jì)框架3第二章 系統(tǒng)分析42.1 需求分析42.2 技術(shù)可行性42.2.1面向?qū)ο缶幊碳夹g(shù)42.2.2程序語言的選擇52.2.3操作可行性62.3 環(huán)境

2、可行性分析62.3.1軟件環(huán)境62.3.2硬件環(huán)境62.4 系統(tǒng)結(jié)構(gòu)可行性分析6第三章 系統(tǒng)設(shè)計(jì)83.1 總體設(shè)計(jì)83.2 數(shù)據(jù)庫設(shè)計(jì)83.2.1數(shù)據(jù)庫的需求分析83.2.2數(shù)據(jù)庫表的具體設(shè)計(jì)93.3 詳細(xì)設(shè)計(jì)103.3.1目標(biāo)實(shí)現(xiàn)103.3.2具體設(shè)計(jì)103.4 數(shù)據(jù)模塊架構(gòu)圖113.5 各數(shù)據(jù)模塊詳細(xì)架構(gòu)123.5.1短信群發(fā)模塊文件架構(gòu)123.5.2來電管家模塊文件架構(gòu)123.5.3電蚊香模塊文件架構(gòu)133.5.4手電筒架構(gòu)13第四章 系統(tǒng)實(shí)現(xiàn)144.1主界面的實(shí)現(xiàn)144.2短信群發(fā)模塊實(shí)現(xiàn)194.3來電管家模塊實(shí)現(xiàn)414.4手電筒模塊實(shí)現(xiàn)484.5電蚊香模塊實(shí)現(xiàn)504.6開機(jī)啟動程序的

3、實(shí)現(xiàn)514.7系統(tǒng)展望52第五章 系統(tǒng)測試535.1 測試的定義和目的535.2 測試的方法535.3測試發(fā)現(xiàn)的問題及解決辦法535.3.1短信群發(fā)測試535.3.2來電管家測試545.3.3其他模塊的測試54第六章 總結(jié)55謝 辭56參考文獻(xiàn)5759第一章 序言1.1 設(shè)計(jì)背景當(dāng)今通訊領(lǐng)域中,手機(jī)成為日常生活必不可少的工具,隨著科學(xué)技術(shù)的發(fā)展,智能手機(jī)日趨發(fā)展成熟。2007年11月5日,android手機(jī)操作系統(tǒng)脫穎而出,僅推出兩年已超越稱霸十年的諾基亞塞班系統(tǒng),一躍成為全球最受歡迎的智能手機(jī)平臺之一。android系統(tǒng)不但應(yīng)用于智能手機(jī),也在平板電腦市場急速擴(kuò)張。該系統(tǒng)是基于linux內(nèi)核

4、的系統(tǒng),早期由google公司開發(fā),后由開放手持設(shè)備聯(lián)盟(open handset alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。底層linux內(nèi)核只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),部分程序以java編寫。android為開源系統(tǒng),開發(fā)靈活性更強(qiáng),各種軟件層出不窮,發(fā)展前景十分廣闊。智能手機(jī)改變?nèi)藗兪褂檬謾C(jī)的習(xí)慣,也放大人們對手機(jī)的想象。對目前形式的分析和對未來的展望,手機(jī)系統(tǒng)已經(jīng)不僅限于通話和短信等內(nèi)容,手機(jī)擴(kuò)展功能日益發(fā)展壯大,利用手機(jī)里的各種基本功能,可以拓展更多更實(shí)用的軟件,這不僅使用戶更方便的利用手機(jī),

5、而且也激發(fā)了很多編程人員的創(chuàng)新思維。本程序就是利用android手機(jī)系統(tǒng)的各種功能實(shí)現(xiàn)有創(chuàng)意且實(shí)用的手機(jī)輔助系統(tǒng)。1.2 設(shè)計(jì)目標(biāo)眾所周知,手機(jī)的各項(xiàng)功能都是圍繞用戶的需求而開發(fā)的,以下功能設(shè)計(jì)的實(shí)現(xiàn)就是按照人們生活中經(jīng)常用到的但系統(tǒng)中沒有的功能,從而為android系統(tǒng)提供更好的用戶體驗(yàn)。1.2.1短信群發(fā)1)此項(xiàng)功能不僅可以正常發(fā)送短信,而且可以發(fā)送對方的稱謂。我們國家人民熱情好客,逢年過節(jié)祝福不斷。近幾年隨著移動事業(yè)的發(fā)展,以短信傳遞祝福的方式廣為流傳。而編輯短信逐條發(fā)送很麻煩,短信群發(fā)又感覺沒有誠意,如果可以帶上對方的姓名或昵稱發(fā)送,會讓被祝福者倍感親切。發(fā)送的姓名可以隨意更改,默認(rèn)為

6、聯(lián)系薄里的姓名,選擇后可以改為其他昵稱。2)定時(shí)發(fā)送的功能。在緊張忙碌的工作學(xué)習(xí)生活中,難免會遇到待發(fā)送的重要信息被遺忘,或者同一時(shí)間有其他的事情要做而耽誤了短信的待發(fā)送。為了避免這些現(xiàn)象的發(fā)生,可以預(yù)先定時(shí)進(jìn)行發(fā)送,而且不會影響非定時(shí)短信的發(fā)送。若定時(shí)信息未到時(shí)間,信息內(nèi)容、發(fā)送時(shí)間及聯(lián)系人可以增刪改查,以防止發(fā)送失誤帶來的尷尬。1.2.2來電管家1)自動回復(fù)功能。當(dāng)用戶有急事來不及或者不方便接聽電話和短信,此功能可以幫用戶及時(shí)回復(fù)對方,以便讓對方知道本人的當(dāng)前狀態(tài)或其他內(nèi)容。此功能可以選擇回復(fù)對象、回復(fù)內(nèi)容,也可以選擇對短信回復(fù)、對來電回復(fù)、對短信和來電都回復(fù)。當(dāng)然,為了防止惡意來電,每次

7、啟用該功能后,無論短信還是來電,每人只限一次回復(fù)。2)翻轉(zhuǎn)靜音功能。這是模仿諾基亞手機(jī)的一項(xiàng)功能,對于如此暢銷的android系統(tǒng)而言,若沒有此功能確實(shí)是個(gè)遺憾。用過的人都很清楚此功能的趣味性和實(shí)用性,比如在會議室或者其他不方便使用鈴聲的場合,而忘了調(diào)成靜音模式,只要開啟該功能,當(dāng)來電鈴聲響起時(shí),就可以翻轉(zhuǎn)手機(jī)快速變?yōu)殪o音模式,從而有效防止打擾他人和避免自己的尷尬。1.2.3多彩手電筒此功能的實(shí)現(xiàn)也為該系統(tǒng)增添了趣味性和實(shí)用性。一般人們都不會隨身攜帶手電筒,除非必要的時(shí)候。但是如果沒有防備時(shí),手頭沒有一個(gè)照明的東西,確實(shí)帶來危險(xiǎn)和不便。而手機(jī)是人們生活中都會隨身攜帶的物品之一,如果安裝了該軟件

8、,只要打開屏幕,亮度會自動調(diào)到最大,這會有很好的照明效果。而且內(nèi)設(shè)了多種顏色供用戶選擇,其中有一種為紫色,可以用來模擬紫外線燈進(jìn)行驗(yàn)鈔等,雖然不能與真的紫外線燈媲美,但仍有其功效。1.2.4電蚊香炎熱的夏季,蚊蟲滋生快,被蚊子叮咬確實(shí)奇癢難忍,啟動該功能后,手機(jī)的音頻外設(shè)會放出讓蚊蟲難以忍受的頻率波段,從而達(dá)到驅(qū)蚊的效果;而人耳對此頻率的感應(yīng)能力不是很強(qiáng)。1.3 項(xiàng)目設(shè)計(jì)原則1.3.1實(shí)用性原則設(shè)計(jì)此軟件的初衷是方便用戶使用,本程序的各項(xiàng)功能都是圍繞用戶需求設(shè)計(jì),實(shí)用性是此軟件的最基礎(chǔ)原則,圍繞這個(gè)基礎(chǔ)進(jìn)行創(chuàng)新型擴(kuò)展。1.3.2可控性原則為了方便用戶的使用,每個(gè)功能都可由用戶自主控制,參數(shù)也可

9、由用戶自定義,這就迎合了大部分人的使用習(xí)慣,充分體現(xiàn)以人為本。該原則的目的就是軟件適應(yīng)用戶,而不是用戶適應(yīng)軟件。1.3.3占用資源少的原則此軟件是安裝在手機(jī)操作系統(tǒng)上使用,因?yàn)槟壳暗拇蟛糠质謾C(jī)cpu和內(nèi)存都比不上電腦的配置,如何節(jié)省資源開銷已經(jīng)成為手機(jī)編程中必不可少的環(huán)節(jié)。1.3.4易擴(kuò)展性原則此軟件的架構(gòu)是按照可擴(kuò)展性設(shè)計(jì)的,這樣做是為了方便以后升級和擴(kuò)展更多更實(shí)用的功能,易于軟件優(yōu)化,從而使該軟件的靈活性增強(qiáng),功能更加完善,運(yùn)行更加穩(wěn)定。1.4設(shè)計(jì)框架此手機(jī)輔助系統(tǒng)采用java語言設(shè)計(jì),在功能上分為四個(gè)模塊:短信群發(fā)模塊,來電管家模塊,手電筒模塊,電蚊香模塊。而每個(gè)模塊多由界面部分和功能部

10、分組成,除手電筒模塊外,其余模塊均有服務(wù)功能,即后臺運(yùn)行機(jī)制。此系統(tǒng)主要由服務(wù)、廣播和多線程機(jī)制有機(jī)的統(tǒng)一于一個(gè)整體。短信群發(fā)模塊分為界面部分,聯(lián)系人讀取部分,修改列表部分,手機(jī)發(fā)送短信機(jī)制,定時(shí)機(jī)制等方面進(jìn)行設(shè)計(jì)與實(shí)現(xiàn);來電管家模塊分自動回復(fù)和翻轉(zhuǎn)靜音兩大部分,自動回復(fù)從界面設(shè)計(jì)和廣播監(jiān)聽與后臺服務(wù)的結(jié)合進(jìn)行闡述,翻轉(zhuǎn)靜音從手機(jī)擺放角度監(jiān)聽和廣播監(jiān)聽的結(jié)合進(jìn)行闡述;手電筒模塊主要在屏幕亮度方面著手;電蚊香則從系統(tǒng)后臺播放音樂方面著手。在論文設(shè)計(jì)方面,采用從整體到細(xì)節(jié),從重點(diǎn)到難點(diǎn)的寫作思路對該系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)進(jìn)行描述。首先分析了當(dāng)今智能機(jī)產(chǎn)業(yè)的發(fā)展背景和前景,介紹了手機(jī)輔助系統(tǒng)對用戶工作和生活

11、的影響和用戶對該系統(tǒng)的需求,分析了實(shí)現(xiàn)本系統(tǒng)的可行性,而本文章重點(diǎn)內(nèi)容是手機(jī)輔助系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方法,最后對該系統(tǒng)各個(gè)功能模塊進(jìn)行測試評價(jià),論述該系統(tǒng)的優(yōu)缺點(diǎn)和對本軟件的前景展望。在本文中,短信群發(fā)和來電管家模塊將是主要的論述部分。第二章 系統(tǒng)分析2.1 需求分析在智能手機(jī)日益發(fā)展壯大的今天,手機(jī)輔助系統(tǒng)使智能手機(jī)功能的多樣化和人性化成為可能。通過手機(jī)輔助系統(tǒng),我們可以更方便的應(yīng)用和整合手機(jī)的各種軟硬件,拓展出更多更實(shí)用的功能。通過手機(jī)輔助系統(tǒng)中的短信群發(fā),我們可以更方便的發(fā)送帶有稱謂的短信,從而提升在人際關(guān)系中的友好程度和在好友圈中的受歡迎程度;通過手機(jī)輔助系統(tǒng)中的來電助手,我們可以隨心所欲

12、的定制自動回復(fù)功能,避免無人接聽給對方帶來的擔(dān)憂,使智能手機(jī)更加人性化;通過手機(jī)輔助系統(tǒng)中的手電筒,可以為我們照亮光線不好的環(huán)境,如無電燈的樓梯,這樣可以有效的避免黑暗為我們帶來的不便,而且又不必隨身攜帶手電,實(shí)現(xiàn)一機(jī)多用;通過手機(jī)輔助系統(tǒng)中的電蚊香,我們可以在多蚊蟲的環(huán)境中避免被蚊蟲叮咬而帶來的痛苦,從而使我們不必分散精力,提高工作和學(xué)習(xí)效率。2.2 技術(shù)可行性2.2.1面向?qū)ο缶幊碳夹g(shù)面向?qū)ο蟪绦蛟O(shè)計(jì)(object-oriented programming)是一種起源于六十年代,發(fā)展已經(jīng)將近三十年的程序設(shè)計(jì)思想。其自身理論已十分完善,并被多種面向?qū)ο蟪绦蛟O(shè)計(jì)語言(object-orient

13、ed programming language)實(shí)現(xiàn)。對象是對現(xiàn)實(shí)世界實(shí)體的模擬,由現(xiàn)實(shí)實(shí)體的過程或信息特性來定義。一個(gè)對象可被認(rèn)為是一個(gè)把數(shù)據(jù)(屬性)和程序(方法)封裝在一起的實(shí)體,這個(gè)程序產(chǎn)生該對象的動作或?qū)λ邮艿降耐饨缧盘柕姆磻?yīng)。這些對象操作有時(shí)稱為方法。區(qū)別面向?qū)ο蟮拈_發(fā)和傳統(tǒng)過程的開發(fā)的要素有:對象識別和抽象、封裝、多態(tài)性和繼承。面向?qū)ο蟮暮诵氖菍︻惖膽?yīng)用。在本程序中大量用到面向?qū)ο蠹夹g(shù),每個(gè)功能的實(shí)現(xiàn)都離不開對以下類的繼承:activity(動作類)、services(服務(wù)類)和broadcast(廣播類)。這些類均在android sdk中提供接口。1) activity:an

14、droid系統(tǒng)與用戶進(jìn)行交互的接口,用戶對android系統(tǒng)進(jìn)行操作都是通過activity類來完成。此類要依附于界面,對用戶是可見的。2) services:與activity類似,區(qū)別在于不用依附于見面,可以后臺運(yùn)行動作指令。3) broadcast:系統(tǒng)每運(yùn)行一個(gè)事件都會觸發(fā)一個(gè)廣播,通過廣播監(jiān)聽器可以對相應(yīng)事件做出反應(yīng)。2.2.2程序語言的選擇n java mejava me(java platform,micro edition),這個(gè)版本以前稱之為 j2me。j2me 為在移動設(shè)備和嵌入式設(shè)備(比如手機(jī)、pda、電視機(jī)頂盒等)上運(yùn)行的應(yīng)用程序提供一個(gè)健壯且靈活的環(huán)境。java me

15、 在用戶界面、網(wǎng)絡(luò)協(xié)議、安全模型等方面具有很強(qiáng)的靈活性和穩(wěn)定性?;?java me 規(guī)范的應(yīng)用程序只需編寫一次,就能夠用于許多設(shè)備,而且可以利用每個(gè)設(shè)備的本機(jī)功能。java語言提供類的繼承,android系統(tǒng)的編程就很好的利用了這一性質(zhì)??傊琷ava語言是一個(gè)面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。這種優(yōu)良的特性使java應(yīng)用程序具有無比的健壯性和靈活性,而且通過內(nèi)置的api(應(yīng)用程序接口)可大大節(jié)省資源開銷,提高編程效率。本系統(tǒng)是基于android開發(fā)平臺的軟件,因?yàn)閍ndroid頂層的應(yīng)用軟件大部分都是用java語言開發(fā),而要與系統(tǒng)進(jìn)行關(guān)聯(lián),不可避免的用到了android sdk提供的api,通過此a

16、pi可將該軟件與android系統(tǒng)有機(jī)的融合為一個(gè)整體。n xmlxml即可擴(kuò)展標(biāo)記語言,是一種簡單數(shù)據(jù)存儲語言,類似于html,都是標(biāo)準(zhǔn)通用標(biāo)記語言。xml是在internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。xml與html的不同點(diǎn)是:xml的主要作用是存儲數(shù)據(jù),而html是用來定義數(shù)據(jù)的。擴(kuò)展標(biāo)記語言xml使用一系列簡單的標(biāo)記描述數(shù)據(jù),建立和保存數(shù)據(jù)比較方便。雖然xml占用的空間相對于二進(jìn)制數(shù)據(jù)存儲占用的空間更多,但xml極其簡單易于掌握和使用。在android編程中,要用xml文件進(jìn)行界面布局設(shè)置。本程序不僅用xml文件設(shè)置界面,也用它作為數(shù)據(jù)庫存儲

17、數(shù)據(jù)(preference存儲模式)。2.2.3操作可行性本系統(tǒng)只要求具有一定的手機(jī)操作經(jīng)驗(yàn),因?yàn)閍ndroid系統(tǒng)本身操作就很簡單,本程序中全部的控件均繼承自android,所以用戶對控件本身的操作不會陌生。在本程序中,每進(jìn)行一步操作都會有相應(yīng)的提示,而且每個(gè)功能界面都會提供幫助信息,只要有一點(diǎn)手機(jī)操作經(jīng)驗(yàn),看過提示后,對本軟件的操作就會非常清楚。2.3 環(huán)境可行性分析2.3.1軟件環(huán)境軟件運(yùn)行環(huán)境:android操作系統(tǒng) 2.1 update1版本語言環(huán)境:簡體中文編譯環(huán)境:windows7 32bit操作系統(tǒng)編譯工具:eclipse 3.6+android sdk2.3.2硬件環(huán)境軟件測

18、試機(jī)型:三星gt-i5508編譯環(huán)境:聯(lián)想天逸 f41a, cpu intelcore2 1.67ghz,ram 2g2.4 系統(tǒng)結(jié)構(gòu)可行性分析android sdk 提供了一個(gè)視圖控件gridview,用于以網(wǎng)格的形式陳列內(nèi)容。本軟件利用此結(jié)構(gòu),以功能為單位將各圖標(biāo)和名稱陳列于此視圖中,這種結(jié)構(gòu)的優(yōu)點(diǎn)是使軟件界面簡潔大方,對各功能一目了然,易于用戶操作,是一種人性化的界面設(shè)計(jì)格式;另一方面,這種結(jié)構(gòu)形式有利于軟件開發(fā)過程中進(jìn)行軟件管理,增加新功能,刪除無用功能。第三章 系統(tǒng)設(shè)計(jì)3.1 總體設(shè)計(jì)本系統(tǒng)的主要任務(wù)是輔助手機(jī)用戶更方便的管理和使用手機(jī)的各項(xiàng)基本功能,主要分為一下幾個(gè)功能模塊:主界面

19、模塊,短信群發(fā)模塊,手機(jī)照明模塊,來電管理模塊,電蚊香模塊。模型結(jié)構(gòu)如圖3.1所示:手機(jī)輔助系統(tǒng)短信群發(fā)電蚊香主界面選擇聯(lián)系人修改稱謂短信發(fā)送定時(shí)系統(tǒng)刪除所選插入稱謂播放聲波手機(jī)照明選擇顏色來電管理自動回復(fù)翻轉(zhuǎn)靜音回復(fù)對象回復(fù)內(nèi)容來電動作翻轉(zhuǎn)后動作圖3.1 手機(jī)輔助系統(tǒng)結(jié)構(gòu)圖3.2 數(shù)據(jù)庫設(shè)計(jì)3.2.1數(shù)據(jù)庫的需求分析根據(jù)項(xiàng)目的需要,本系統(tǒng)將建立如下數(shù)據(jù)庫表單:來電管家界面表單(fm.app.aa_preferences.xml):用于存儲來電管家的設(shè)置參數(shù);電蚊香狀態(tài)表單(mospre.xml):用于存儲電蚊香功能的開啟狀態(tài);短信群發(fā)狀態(tài)表單(smsspre.xml):主要用于存儲定時(shí)發(fā)短信

20、的參數(shù);本程序狀態(tài)表單(aapre.xml):主要存儲本程序中各個(gè)功能的開啟狀態(tài),可使手機(jī)重啟后能繼續(xù)運(yùn)行相應(yīng)程序。3.2.2數(shù)據(jù)庫表的具體設(shè)計(jì)表3.1來電管家界面表單(fm.app.aa_preferences.xml)鍵類型默認(rèn)值描述key_manager_leave_checkbooleanfalse是否開啟自動回復(fù)key_manager_leave_edit_messagestringi am not here,please wait a moment回復(fù)內(nèi)容key_manager_leave_list_actionstringphone回復(fù)來電動作key_manager_leave_

21、list_humenstringfriends回復(fù)對象key_manager_overturn_checkbooleanfalse是否打開翻轉(zhuǎn)靜音key_manager_overturn_list_actionbooleanfalse翻轉(zhuǎn)后動作表3.2電蚊香狀態(tài)表單(mospre.xml)鍵類型默認(rèn)值描述mos_statusint0是否開啟避蚊功能表3.3短信群發(fā)狀態(tài)表單(smsspre.xml)鍵類型默認(rèn)值描述isinsertbooleanfalse是否插入稱謂istimerbooleanfalse是否定時(shí)發(fā)送message_beforestringnull稱謂前字符串message_aft

22、erstringnull稱謂后字符串yearint1900定時(shí)年monthint1定時(shí)月dayint1定時(shí)日hourint0定時(shí)小時(shí)minuteint0定時(shí)分鐘countint0選擇的聯(lián)系人數(shù)namestringnull選擇聯(lián)系人姓名phonestringnull選擇聯(lián)系人電話表3.4本程序狀態(tài)表單(aapre.xml)鍵類型默認(rèn)值描述smss_timerbooleanfalse是否有定時(shí)發(fā)短信任務(wù)manager_leavebooleanfalse是否開啟自動回復(fù)manager_overturnbooleanfalse是否開啟翻轉(zhuǎn)靜音3.3 詳細(xì)設(shè)計(jì) 3.3.1目標(biāo)實(shí)現(xiàn)本系統(tǒng)主要目的是輔助用戶

23、更方便地使用手機(jī),突出實(shí)用功能。具體地講,本系統(tǒng)通過手機(jī)固有的接口,從短信功能、來電管理功能,照明功能、避蚊功能(播放功能)出發(fā),實(shí)現(xiàn)輔助作用,充分發(fā)揮智能機(jī)的優(yōu)點(diǎn),將實(shí)用性盡可能擴(kuò)展到最大。具體實(shí)現(xiàn)如下目標(biāo):l 短信群發(fā)功能l 手機(jī)照明功能l 自動回復(fù)功能l 翻轉(zhuǎn)靜音功能l 電蚊香功能l 可后臺運(yùn)行,建立服務(wù)架構(gòu)l 重啟后仍然有效,實(shí)現(xiàn)開機(jī)啟動l 運(yùn)行安全可靠穩(wěn)定l 占用盡可能少的資源l 適合各種手機(jī)屏幕分辨率l 對aandroid各種版本兼容性強(qiáng)3.3.2具體設(shè)計(jì)手機(jī)輔助系統(tǒng)是基于android 系統(tǒng)平臺下的應(yīng)用軟件,針對android手機(jī)用戶開發(fā)。主要的功能模塊有:短信群發(fā),來電管家,多

24、彩手電筒,電蚊香。以下是對各個(gè)功能模塊的具體設(shè)計(jì):短信群發(fā):主要包括群發(fā)短信,定時(shí)群發(fā),可插入稱謂,對所選聯(lián)系人的刪除和修改操作。來電管家:對來電和短信自動回復(fù),可以自定義回復(fù)事件是來電還是短信,可以自定義回復(fù)內(nèi)容,可以自定義回復(fù)對象是好友還是全部回復(fù),重啟仍然可以正常運(yùn)行。多彩手電筒:屏幕亮度為最大,避免手機(jī)進(jìn)入待機(jī)狀態(tài),顏色可由用戶選擇,增加紫色驗(yàn)鈔光。電蚊香:播放驅(qū)蚊聲波,可后臺運(yùn)行,若功能打開,重啟后仍然有效。3.4 數(shù)據(jù)模塊架構(gòu)圖此圖為本軟件的總架構(gòu)圖,顯示了各個(gè)功能模塊之間的關(guān)系和后臺服務(wù)和前臺操作的關(guān)系, 簡單闡明了系統(tǒng)運(yùn)行的機(jī)制,具體結(jié)構(gòu)如圖3.2所示:aa.java 主界面s

25、mss.java短信群發(fā)mos.java電蚊香manager.java來電管家light.java手電筒aabroadcast.java用于處理開機(jī)事件smsscontact.java選擇聯(lián)系人smssservice.java發(fā)送短信服務(wù)mosservice.java電蚊香服務(wù)managerservice.java自動回復(fù)服務(wù)manageroverturnservice.java翻轉(zhuǎn)靜音服務(wù)開機(jī)aapre.xml記錄狀態(tài)信息根據(jù)狀態(tài)信息啟動服務(wù)開機(jī)讀取狀態(tài)信息圖3.2 系統(tǒng)數(shù)據(jù)模塊架構(gòu)圖3.5 各數(shù)據(jù)模塊詳細(xì)架構(gòu)3.5.1短信群發(fā)模塊文件架構(gòu)短信群發(fā)模塊通過smsscontact.java調(diào)用

26、系統(tǒng)中的聯(lián)系人列表;當(dāng)啟動定時(shí)服務(wù)時(shí),通過alarmmanager觸發(fā)smssservice后臺服務(wù)發(fā)送短信,當(dāng)觸發(fā)服務(wù)的同時(shí),將開機(jī)項(xiàng)目表單中的短信定時(shí)服務(wù)狀態(tài)改為活動狀態(tài),如下圖3.3所示:直接發(fā)送定時(shí)發(fā)送smss.java短信群發(fā)smsscontact.java讀取聯(lián)系人列表aapre.xml開機(jī)啟動項(xiàng)表單smssservice.java后臺發(fā)短信服務(wù)alarmmanager定時(shí)返回聯(lián)系人數(shù)據(jù)發(fā)送短信給所選的聯(lián)系人圖3.3短信群發(fā)模塊運(yùn)行架構(gòu)示意圖3.5.2來電管家模塊文件架構(gòu)來電管家模塊分為自動回復(fù)和翻轉(zhuǎn)靜音兩個(gè)功能,通過設(shè)置界面(preferencescreen)可由用戶直接啟動兩個(gè)

27、功能,對設(shè)置的更改觸發(fā)事件,運(yùn)行相應(yīng)的服務(wù),并且更新開機(jī)啟動項(xiàng)表單的信息,以便開機(jī)后仍然可以正常運(yùn)行。啟動自動回復(fù)功能后,服務(wù)中會建立用來監(jiān)聽來電或短信的廣播監(jiān)聽器,當(dāng)來電或來短信時(shí),程序讀取電話號碼,根據(jù)用戶的自定義設(shè)置進(jìn)行相應(yīng)的回復(fù)動作;啟動翻轉(zhuǎn)靜音功能后,即啟動了含有監(jiān)聽來電廣播監(jiān)聽器的服務(wù),原理同上,當(dāng)來電時(shí),觸發(fā)來電廣播監(jiān)聽器,而其中又注冊了一個(gè)監(jiān)聽手機(jī)角度的類模塊,若此時(shí)手機(jī)角度小于-120°,即手機(jī)翻轉(zhuǎn)過來,就進(jìn)行相應(yīng)的靜音操作。運(yùn)行機(jī)制可用圖3.4表示:aapre.xml更新狀態(tài)列表manager.java來電管家manageroverturnservice.java

28、翻轉(zhuǎn)靜音服務(wù)managerservice.java自動回復(fù)服務(wù)來電話callreceiver來電廣播監(jiān)聽器smsreceiver短信廣播監(jiān)聽器來短信callreceiver來電廣播監(jiān)聽器msensorlistener手機(jī)角度監(jiān)聽器用戶將手機(jī)翻轉(zhuǎn)讀取電話號碼并回復(fù)短信手機(jī)靜音圖3.4來電管家模塊運(yùn)行架構(gòu)示意圖3.5.3電蚊香模塊文件架構(gòu)電蚊香模塊的原理是通過系統(tǒng)從后臺循環(huán)播放一段音頻波段,此模塊設(shè)計(jì)比較簡單,運(yùn)行架構(gòu)如下圖3.5所示:mos.java電蚊香模塊mosservice.java電蚊香服務(wù)aapre.xml服務(wù)狀態(tài)表單更新狀態(tài)表單驅(qū)趕蚊蟲圖3.5電蚊香模塊運(yùn)行架構(gòu)示意圖3.5.4手電筒

29、架構(gòu)手電筒的實(shí)現(xiàn)較為簡單,啟用該功能后,程序首先保存當(dāng)前的亮度,然后將亮度調(diào)到最大,并全屏顯示,背景顏色默認(rèn)為白色。退出該功能后將屏幕亮度參數(shù)恢復(fù)到之前的值。運(yùn)行機(jī)制如圖3.6所示:light.java手電筒模塊保存屏幕亮度值將屏幕亮度調(diào)為最大背景默認(rèn)為白色開啟退出背景顏色可調(diào)根據(jù)之前保存的亮度因數(shù)恢復(fù)屏幕亮度手機(jī)照明圖3.6手電筒運(yùn)行示意圖第四章 系統(tǒng)實(shí)現(xiàn)此系統(tǒng)分為四個(gè)模塊分別進(jìn)行實(shí)現(xiàn),這些模塊既相互獨(dú)立,又相互聯(lián)系。所謂相互獨(dú)立,是指各功能之間是平行關(guān)系,功能之間沒有必然的聯(lián)系;所謂相互聯(lián)系,是指通屬于一個(gè)主界面控制,使整個(gè)系統(tǒng)成為一個(gè)有機(jī)的整體。下面分別介紹各模塊的實(shí)現(xiàn)代碼及效果圖。4.

30、1主界面的實(shí)現(xiàn)此部分的代碼在aa.java中,用來顯示所有功能模塊,以便進(jìn)入相應(yīng)模塊進(jìn)行操作。此界面采用gridview布局,使界面簡潔大方,一目了然,充分體現(xiàn)人性化設(shè)計(jì)理念。首先要建立一個(gè)gridview的適配器布局,用來定義gridview的格式,本程序中用上圖標(biāo)下文字的顯示方式,此代碼在layout/grid.xml文件中,實(shí)現(xiàn)代碼如下:<linearlayout android:orientation="vertical" > <imageview android:id="+id/icon" /> <textview

31、 android:id="+id/text" /></linearlayout>建立gridview適配器文件(aagridviewadapter.java)/*創(chuàng)建gridview方法*/public view getview(int position, view convertview, viewgroup parent) layoutinflater factory=layoutinflater.from(_con);/*使用grid.xml定義每個(gè)item的layout*/view v=(view)factory.inflate(r.layout.

32、grid, null);/*取得view*/imageview iv=(imageview)v.findviewbyid(r.id.icon);textview tv=(textview)v.findviewbyid(r.id.text);/*設(shè)置顯示的image與文字*/iv.setimageresource(_iconsposition);tv.settext(_itemsposition);return v;建立主界面的布局,采用相對布局(relativelayout),在其中包含一個(gè)gridview,設(shè)置每行顯示的數(shù)量為3:<?xml version="1.0"

33、; encoding="utf-8"?><relativelayout xmlns: android:background="drawable/aabackground0"> <gridviewandroid:id="+id/gridview_aa" android:numcolumns="3"<!-顯示3列-> /></relativelayout>將做好的圖標(biāo)存到工程文件夾下的res/drowable中,聲明圖標(biāo)數(shù)組和相對應(yīng)的字符數(shù)組:/定義gridview

34、的圖標(biāo)private int icons=r.drawable.message,r.drawable.light,r.drawable.manager,r.drawable.mos;/定義gridview的顯示文字private int items=r.string.aa_smss,r.string.aa_light,r.string.aa_manager,r.string.aa_mos;將適配器與圖標(biāo)和文字進(jìn)行連接gv=(gridview)findviewbyid(r.id.gridview_aa);/定義一個(gè)gridview對象 /*使用自定義的aagridviewadapter設(shè)置gri

35、dview里面的item內(nèi)容*/ aagridviewadapter gv_adapter=new aagridviewadapter(this,items,icons); gv.setadapter(gv_adapter);聲明一個(gè)click點(diǎn)擊事件,用于用戶點(diǎn)擊相應(yīng)圖標(biāo)進(jìn)入對應(yīng)的功能模塊,因?yàn)槊總€(gè)gridview都有一個(gè)position,我們可以用這個(gè)變量辨別用戶單擊的是哪個(gè)圖標(biāo):public void onitemclick(adapterview<?> parent, view v, int position,long arg3) intent intent=new int

36、ent();switch(position)case 0:/進(jìn)入短信群發(fā)intent.setclass(aa.this,smss.class);startactivity(intent);break;case 1:/進(jìn)入手電筒intent.setclass(aa.this,light.class);startactivity(intent);break;case 2:/進(jìn)入通信管家intent.setclass(aa.this,manager.class);startactivity(intent);break;case 3:/進(jìn)入電蚊香intent.setclass(aa.this,mos.

37、class);startactivity(intent);break;default:break;主界面的顯示部分到此結(jié)束,效果如圖4.1:圖4.1主界面的效果圖在主界面內(nèi)建立一個(gè)“關(guān)于”對話窗口,按menu鍵打開,里面存放軟件的信息。先聲明一個(gè)menu菜單:public boolean oncreateoptionsmenu(menu menu) / todo 等待其他選項(xiàng)加入menu.add(0, 0, 0, r.string.str_about);return super.oncreateoptionsmenu(menu);建立點(diǎn)擊事件,每個(gè)點(diǎn)擊對象都有一個(gè)id,在此只建立一個(gè)menu對

38、象,當(dāng)點(diǎn)擊后打開關(guān)于對話窗口:public boolean onoptionsitemselected(menuitem item) / todo 等待其他選項(xiàng)動作加入super.onoptionsitemselected(item);switch(item.getitemid()case 0:helpdialog();/在此調(diào)用“關(guān)于”對話窗口break;return true;對話窗口的實(shí)現(xiàn)很簡單,實(shí)例化一個(gè)alertdialog對象即可:private void helpdialog()new alertdialog.builder(this).settitle(r.string.str

39、_about).setmessage(r.string.app_about).setpositivebutton(r.string.str_ok,new dialoginterface.onclicklistener()public void onclick(dialoginterface arg0, int arg1) ).show();顯示效果如圖4.2所示:圖4.2關(guān)于對話框的顯示需要注意的是,本程序的文本顯示內(nèi)容,如以上代碼中的“r.string.str_about”均存放在res/values/strings.xml文件里,這樣做的好處是便于更改文字內(nèi)容,可方便實(shí)現(xiàn)語言的轉(zhuǎn)換。當(dāng)然,

40、目前只有中文,可根據(jù)需要,只要將該文件里的中文翻譯為其他語言即可更改為另一個(gè)語言版本的軟件。4.2短信群發(fā)模塊實(shí)現(xiàn)短信群發(fā)功能分一下幾個(gè)部分實(shí)現(xiàn):主界面部分,添加聯(lián)系人,聯(lián)系人稱謂的刪除和修改,短信群發(fā)系統(tǒng),插入聯(lián)系人稱謂,定時(shí)服務(wù)系統(tǒng)。此部分的主要功能是群發(fā)短信并可由用戶自定義是否發(fā)送稱謂,也可選擇定時(shí)發(fā)送,可實(shí)現(xiàn)定時(shí)發(fā)送與即時(shí)發(fā)送互不影響。·短信群發(fā)的主界面此功能模塊界面實(shí)現(xiàn)的主要難點(diǎn)在于listview的重寫方法,listview是以可滾動列表的形式顯示固定格式的內(nèi)容,在此模塊中,用以顯示已選好的聯(lián)系人姓名。首先是界面布局,是以相對布局(relativelayout)實(shí)現(xiàn)的。之

41、所以采用這種布局,是為了符合各個(gè)屏幕的分辨率,不會因?yàn)槠聊坏拇笮《蛊鋬?nèi)容的位置改變,符合大眾化的需求。代碼在smss.xml中:<relativelayout ><!- 采用相對關(guān)系布局 -><togglebutton<!-此控件的上邊緣和左邊緣與系統(tǒng)的上邊緣和左邊緣內(nèi)對齊->android:layout_alignparentright="true"android:layout_alignparenttop="true"/><button<!-此控件的上邊緣和左邊緣與系統(tǒng)的上邊緣和左邊緣內(nèi)對

42、齊->android:layout_alignparenttop="true"android:layout_alignparentleft="true"/>listview 所在的部分在“選擇聯(lián)系人”與“信息發(fā)送文本框”之間,scrollbar=“vertical”表示以垂直方式陳列: <linearlayout android:layout_below="id/btn_smss_select"android:layout_above="id/etxt_smss_messageback">&

43、lt;listview android:id="+id/smslv"android:drawselectorontop="false"android:scrollbars="vertical"> </listview></linearlayout></relativelayout>幾乎所有的自定義listview都要使用適配器定義格式,在此也不例外,文件為smssadapter.java。與之前的適配器建立步驟一樣,首先建立適配器布局文件,名為smslv.xml,同樣采用相對布局,格式為并列的

44、兩個(gè)textview:<relativelayout > <textview android:id="+id/txt_smss_name" android:layout_alignparentleft="true" /> <textview android:id="+id/txt_smss_report" android:layout_alignparentright="true" /></relativelayout>下面就要定義適配器,繼承系統(tǒng)的simpleada

45、pter類,引用上面提到的布局格式,代碼寫在smssadapter.java文件中:public view getview(int position, view convertview, viewgroup parent) if (convertview = null) convertview = minflater.inflate(r.layout.smslv, null);textview tn = (textview) convertview.findviewbyid(r.id.txt_smss_name);tn.settext(string) mlist.get(position).g

46、et(selected_name);textview tr = (textview) convertview.findviewbyid(r.id.txt_smss_report);tr.settext(string) mlist.get(position).get(send_report);return convertview;此時(shí)短信群發(fā)界面的已選擇聯(lián)系人列表建立完成了,這個(gè)listview中的內(nèi)容就是從選擇聯(lián)系人界面選擇的聯(lián)系人姓名。因?yàn)橄纫M(jìn)入子頁面選擇聯(lián)系人,而后返回父窗體時(shí)顯示內(nèi)容,所以用startactivityforresult拋出,用此方法返回父窗體就會執(zhí)行onactivity

47、result()方法:startactivityforresult(intent,0);protected void onactivityresult(int requestcode, int resultcode, intent data) super.onactivityresult(requestcode, resultcode, data);listview = (listview)findviewbyid(r.id.smslv);switch(resultcode)case result_ok:default:break;此模式的原理是子頁面將選擇的內(nèi)容存入arraylistextr

48、a空間的變量中,然后用getstringarraylistextra將內(nèi)容取出,子頁面存入方法在接下來的部分中介紹,以下為父頁面取出記錄的內(nèi)容,記錄為所選的用戶名和相應(yīng)的電話號碼,取出后將內(nèi)容分別存放在arraylist變量name和phone中:name=data.getstringarraylistextra("str_name");phone=data.getstringarraylistextra("str_phone");name.trimtosize();/節(jié)省資源開銷phone.trimtosize();將用來顯示的arraylist(這里

49、實(shí)例化為al1)變量清空,以防重復(fù)顯示:al1.clear();定義哈希map,此格式變量以鍵值對的形式存儲內(nèi)容,下面用循環(huán)的方式分別將選出的聯(lián)系人姓名添加到al1中:for(int i=0;i<name.size();i+)/顯示選擇的聯(lián)系人姓名于列表listview中map<string, string> map = new hashmap<string, string>();map.put(selected_name, name.get(i);al1.add(map);將listview與它的適配器進(jìn)行關(guān)聯(lián):string from = selected_na

50、me, send_report ; int to = r.id.txt_smss_name, r.id.txt_smss_report ; msmssadapter=new smssadapter(this, al1, r.layout.smslv, from, to); listview.setadapter(msmssadapter);break;這樣就把所選的內(nèi)容逐條顯示在listview中了。主界面效果及選擇聯(lián)系人后的效果如圖4.3所示: 圖4.3短信群發(fā)主界面。左圖為未選擇聯(lián)系人界面,右圖為選擇聯(lián)系人返回后的界面·選擇聯(lián)系人當(dāng)在短信群發(fā)主頁面點(diǎn)擊“選擇聯(lián)系人”按鈕時(shí),就會進(jìn)

51、入選擇聯(lián)系人的界面,啟動此頁面繼承的activitysmsscontact,此activity在smsscontact.java中實(shí)現(xiàn)。首先實(shí)現(xiàn)進(jìn)入選擇聯(lián)系人頁面,在androidsdk中要使一個(gè)activity啟動另一個(gè)activity的就是利用intent方法,格式如下:intent intent=new intent();intent.setclass(父類activity,子類activity);startactivityforresult(intent,0); 在smss(聯(lián)系人主界面)的activity中,用如下方法將活動拋給smsscontact類,此方法寫在“選擇聯(lián)系人”的點(diǎn)擊

52、事件中。當(dāng)點(diǎn)擊“選擇聯(lián)系人”后,系統(tǒng)就會讀取聯(lián)系人數(shù)據(jù),然后將聯(lián)系人顯示與listview中,在這個(gè)過程中,系統(tǒng)會出現(xiàn)“假死”狀態(tài),所以,應(yīng)在這期間設(shè)置一個(gè)dialog窗口,用來提示用戶正在讀取數(shù)據(jù),而不是死機(jī)現(xiàn)象,這樣更體現(xiàn)出人性化的設(shè)計(jì)思想理念。首先定義dialog的標(biāo)題和內(nèi)容:final charsequence strdialogtitle=getstring(r.string.dialog_smss_readcontacttitle);final charsequence strdialogbody=getstring(r.string.dialog_smss_readcontact

53、body);然后顯示dialog:/顯示dialogsendmsg_dialog=progressdialog.show(smss.this,strdialogtitle,strdialogbody,true);在顯示dialog后,啟動一個(gè)線程來調(diào)用選擇聯(lián)系人的activity,當(dāng)完成對選擇聯(lián)系人窗口的啟動后,dialog銷毀,代碼如下: new thread(new runnable()public void run() /new一個(gè)intent對象,并制定classintent intent=new intent();intent.setclass(smss.this,smsscontact.class);startactivityforresult(intent,0);/此函數(shù)可以返回被叫acti

溫馨提示

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

最新文檔

評論

0/150

提交評論