畢業(yè)論文- 基于Android系統(tǒng)的同學(xué)錄的實(shí)現(xiàn)_第1頁
畢業(yè)論文- 基于Android系統(tǒng)的同學(xué)錄的實(shí)現(xiàn)_第2頁
畢業(yè)論文- 基于Android系統(tǒng)的同學(xué)錄的實(shí)現(xiàn)_第3頁
畢業(yè)論文- 基于Android系統(tǒng)的同學(xué)錄的實(shí)現(xiàn)_第4頁
畢業(yè)論文- 基于Android系統(tǒng)的同學(xué)錄的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGE河北農(nóng)業(yè)大學(xué)本科畢業(yè)論文(設(shè)計(jì))題目:基于Android系統(tǒng)的同學(xué)錄的實(shí)現(xiàn)學(xué)院:現(xiàn)代科技學(xué)院 專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)號(hào): 學(xué)生姓名: 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 講師 2013年6月摘要隨著第三代通信技術(shù)3G的推廣,無線帶寬和傳輸速度都得到了大幅度提升,為智能手機(jī)終端添加更多內(nèi)容豐富的應(yīng)用功能提供了良好的平臺(tái)。本系統(tǒng)是基于谷歌公司新推出的一款Linux平臺(tái)的開源手機(jī)操作系統(tǒng)——Android系統(tǒng),利用Java語言,Eclipse為開發(fā)工具,通過對(duì)平臺(tái)的系統(tǒng)架構(gòu)和應(yīng)用程序進(jìn)行學(xué)習(xí),設(shè)計(jì)出一款手機(jī)通訊錄。本系統(tǒng)包括存儲(chǔ),刪除,Android修改,打電話,發(fā)信息,發(fā)郵件,備份SD卡等功能,滿足了用戶對(duì)通訊錄的需求。此通訊錄的設(shè)計(jì)遵循標(biāo)準(zhǔn)的開發(fā)流程,首先進(jìn)行需求分析,然后確定通訊錄的功能,再編寫程序的代碼,調(diào)試程序,運(yùn)行程序,并對(duì)程序進(jìn)行優(yōu)化完善。關(guān)鍵詞:Android;手機(jī)通訊錄;智能手機(jī);JAVA

AbstractWiththe3Gpromotionofthird-generationcommunicationstechnology,wirelessbandwidthandtransmissionspeedhavebeenimprovedsignificantly,andprovidesagoodplatformforsmartmobileterminalstoaddmorecontent-richapplications.ThedesignisbasedontheGoogleCorporationanewversionoftheLinuxplatformtothesourcemobilephoneoperatingsystem--Androidsystem,usingJavalanguage,Eclipseasadevelopmenttool,throughtheAndroidplatformsystemarchitectureandapplicationforresearch,designamobilephonecontacts.Thedesignincludingfunctionsofstorage,deletion,modification,phonecalls,messagessending,E-mailsending,backupSDcardsandotherfunctions,tomeetuserdemandformaillist.Thedesignofthecontactsfollowsthestandarddevelopmentprocess,thefirstneedsanalysis,andthendeterminethefunctionofthecontacts,thenwritethecode,thedebugger,runtheprogram,andprocedurestooptimizethesound.Keywords:Android;MobilePhoneContacts;Smartphone;Java

目錄1緒論 11.1研究背景 11.2研究現(xiàn)狀 11.3主要工作 32Android技術(shù)與理論 42.1Android系統(tǒng)開發(fā)簡(jiǎn)介 42.1.1Android技術(shù)簡(jiǎn)介 42.1.2關(guān)鍵應(yīng)用程序 62.1.3應(yīng)用程序框架 62.1.4函數(shù)庫 62.1.5Linux內(nèi)核 62.2Android應(yīng)用的構(gòu)成和工作機(jī)制 72.2.1Activity 72.2.2IntentReceiver 72.2.3Service 82.2.4ContentProvider 83需求分析 93.1功能需求分析 93.2性能需求分析 103.3數(shù)據(jù)庫需求分析 103.4安全需求 114功能設(shè)計(jì) 114.1總體設(shè)計(jì) 114.2系統(tǒng)功能設(shè)計(jì) 134.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì) 145通訊錄實(shí)現(xiàn) 165.1Android開發(fā)平臺(tái)搭建 165.2具體功能實(shí)現(xiàn) 165.2.1界面布局 165.2.2增加聯(lián)系人功能 175.2.3查找聯(lián)系人功能 185.2.4數(shù)據(jù)庫操作實(shí)現(xiàn) 195.3系統(tǒng)功能截圖 21參考文獻(xiàn) 25致謝 26PAGE261緒論1.1研究背景智能手機(jī)(Smartphone),是指“像個(gè)人電腦一樣,具有獨(dú)立的操作系統(tǒng),可以由用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,通過此類程序來不斷對(duì)手機(jī)的功能進(jìn)行擴(kuò)充,并可以通過移動(dòng)通訊網(wǎng)絡(luò)來實(shí)現(xiàn)無線網(wǎng)絡(luò)接入的這樣一類手機(jī)的總稱”。目前,全球多數(shù)手機(jī)廠商都有智能手機(jī)產(chǎn)品,而芬蘭諾基亞、美國蘋果、加拿大RIM(黑莓)、美國摩托羅拉、中國臺(tái)灣宏達(dá)(htc)都是智能機(jī)中的佼佼者[1]。智能手機(jī)具有五大特點(diǎn):1.具備了無線接入互聯(lián)網(wǎng)的能力,即要有GSM的支持網(wǎng)絡(luò)下的GPRS或者是CDMA網(wǎng)絡(luò)支持下的CDMA1X或3G網(wǎng)絡(luò)。2.人性化,可以根據(jù)個(gè)人需要擴(kuò)展機(jī)器的功能。3.它是具有開放性的操作系統(tǒng),還可以安裝非常多的應(yīng)用程序,使得智能手機(jī)的功能可以得到無限的擴(kuò)展。4.具有PDA功能,其中包括個(gè)人信息管理、日程記事、任務(wù)安排、多媒體應(yīng)用、瀏覽網(wǎng)頁等。5.?dāng)U展性能強(qiáng),第三方軟件支持多[2]。Android是一種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由AndyRubin開發(fā),最初主要支持手機(jī)。2005年由Google收購注資,并組建開放手機(jī)聯(lián)盟開發(fā)改良,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。Android的主要競(jìng)爭(zhēng)對(duì)手是蘋果公司的iOS以及RIM的BlackberryOS。2011年第一季度,Android在全球的市場(chǎng)份額首次超過塞班系統(tǒng),躍居全球第一。2012年2月數(shù)據(jù),Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)52.5%的份額,中國市場(chǎng)占有率為68.4%[3]。在這個(gè)信息化的時(shí)代,手機(jī)已成為繼固話之后最為通俗的交流工具[4]。在這個(gè)人與人關(guān)系愈加密切的時(shí)代,“通訊”成了生活中的必需品。這就有這么一個(gè)系統(tǒng)記錄下人與人之間的多樣聯(lián)系方式——手機(jī)通訊系統(tǒng)。目前國內(nèi)的通訊錄應(yīng)用服務(wù)商分為三類,第一類如幸會(huì)、名片全能王、QR掃描等等,這些產(chǎn)品主要是為了解決名片交換時(shí)候輸入難度較高的問題。而這也就致使了這部分廠家缺少了一個(gè)服務(wù)商最看重的東西:對(duì)用戶沒有持續(xù)的運(yùn)營能力;第二類如火種、QQ通訊錄、友錄、手機(jī)自帶的通訊錄同步服務(wù)等等,這部分的市場(chǎng)主要提供了號(hào)碼備份服務(wù),幫助用戶解決手機(jī)號(hào)碼記錄聯(lián)系人的問題。第三類就是針對(duì)與通訊錄之上提供的拓展應(yīng)用服務(wù)提供商,比如:米聊和微信,你可以通過上面去發(fā)短信,實(shí)現(xiàn)多種通信能力的聚合[5]。1.2研究現(xiàn)狀當(dāng)今社會(huì)的生活節(jié)奏越來越快,人們對(duì)手機(jī)的要求也越來越高,由于手機(jī)市場(chǎng)發(fā)展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同種類。Android是一個(gè)基于Linux核心(kernel)的開放手機(jī)平臺(tái)作業(yè)系統(tǒng),與WindowsMobile、Symbian等手機(jī)作業(yè)系統(tǒng)處在同一級(jí)別,其中占有開放源代碼優(yōu)勢(shì)的Android系統(tǒng)有最大的發(fā)展前景。較之Symbian用戶體驗(yàn)較差,系統(tǒng)較為封閉,支持的應(yīng)用較少和WindowsMobile系統(tǒng)對(duì)終端廠商來講引入成本較為昂貴,娛樂性平平。Android系統(tǒng)則擁有低廉的引入成本,在應(yīng)用方面的資源豐富,以及良好的用戶體驗(yàn)開放性較強(qiáng)的特點(diǎn),適應(yīng)了移動(dòng)互聯(lián)網(wǎng)的發(fā)展趨勢(shì),切合了移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)鏈各方的發(fā)展變化需求,所以取得了迅猛的發(fā)展[6]。Android系統(tǒng)除了低廉的成本和良好的用戶體驗(yàn)外,因采用了開源的平臺(tái),給予了終端廠商和開發(fā)者更大的靈活性,開發(fā)者在程序的開發(fā)移植上更為方便且不需要考慮廠商端內(nèi)容審核等問題,終端廠商則可以按需深度定制系統(tǒng)開發(fā)本地化應(yīng)用環(huán)境,在終端廠商、電信運(yùn)營商和第三方應(yīng)用開發(fā)商的推動(dòng)下,用戶可選擇的應(yīng)用資源將會(huì)進(jìn)一步豐富。各大Android應(yīng)用商店呈現(xiàn)百花齊放的態(tài)勢(shì)。帶給了應(yīng)用開發(fā)者更多的機(jī)遇和極具誘惑力的利潤分成,在各應(yīng)用商店間的移植改造成本也相對(duì)較低。隨著應(yīng)用商店的不斷發(fā)展和開發(fā)者的涌入,Android平臺(tái)的應(yīng)用資源優(yōu)勢(shì)正在逐步的擴(kuò)大[7]。而從用戶的角度考慮,Android良好發(fā)展前景主要源于優(yōu)秀的用戶體驗(yàn)和高性價(jià)比這兩個(gè)方面。從人才需求類型來看,目前對(duì)Android人才需求一類是偏向硬件驅(qū)動(dòng)的Android人才需求,一類是偏向軟件應(yīng)用的Android人才需求。從目前的招聘需求來看,后者的需求最大,包括手機(jī)游戲、手機(jī)終端應(yīng)用軟件和其他手機(jī)應(yīng)用軟件的開發(fā)[8]。職業(yè)專家分析說,由于目前Android技術(shù)較新,具有開拓空間,無論是相關(guān)書籍、培訓(xùn)還是大學(xué)教育,都處于初級(jí)階段,因此Android人才短期將供不應(yīng)求。從長期來看,隨著各種移動(dòng)應(yīng)用和手機(jī)游戲等內(nèi)容需求日益增加,也將激勵(lì)大中小型手機(jī)應(yīng)用開發(fā)商加大對(duì)Android應(yīng)用的開發(fā)力度,因此Android人才前景也被看好。生活在信息高速發(fā)展的今天,智能手機(jī)的普及己經(jīng)是不可改變的趨勢(shì)。而作為手機(jī)各個(gè)功能中最為基本的通訊錄也成為人們生活中必不可少的一部分了[9]。在這個(gè)人與人關(guān)系愈加密切的時(shí)代,“通訊”成了生活中的必需品。通過手機(jī)通訊錄記錄下對(duì)方的聯(lián)系方式,既減輕了大腦的負(fù)擔(dān),又不在受各種條件的約束,做到便捷隨身管理相關(guān)的聯(lián)系信息,擺脫了傳統(tǒng)電話簿,名片的累贅。另外,不同于微博,社交網(wǎng)站,手機(jī)通訊錄是完全屬于用戶的,而不隸屬于某個(gè)特定公司或是服務(wù),只要獲得用戶的認(rèn)可,即使不是大公司也可以借此迅速建立起一個(gè)巨大的關(guān)系網(wǎng)絡(luò)[10]。Frost&Sullivan的王煜全也曾多次強(qiáng)調(diào)過手機(jī)通訊錄是一塊顛覆性創(chuàng)新的金礦,是創(chuàng)業(yè)者們創(chuàng)新的絕佳平臺(tái)。從長遠(yuǎn)利益來看,可是意義重大的環(huán)保便民之舉。根據(jù)市場(chǎng)需求,手機(jī)通訊錄管理系統(tǒng)所記錄的信息一般分為個(gè)人、商業(yè)、辦公三類。清晰了機(jī)主的聯(lián)系方向。針對(duì)性的分門別類,使系統(tǒng)具有了方便了機(jī)主的存儲(chǔ)和快速查閱優(yōu)勢(shì)功能,大大減少了在電話簿,名片上機(jī)械翻閱查找過程的時(shí)間。于此同時(shí)又根據(jù)手機(jī)隨身攜帶的特殊性,在一定程度上比一般的制作文件方便親民。又其次,因?yàn)槭謾C(jī)是隨身攜帶的通訊工具,這與記事本相比將在一定程度上保障了聯(lián)系人信息的安全性,相對(duì)避免了個(gè)人隱私信息外泄從而帶來的損失[11]。綜上所述,手機(jī)通訊錄管理系統(tǒng)是一個(gè)高效、實(shí)時(shí)、綠色環(huán)保的管理系統(tǒng)。然而現(xiàn)在很多通訊錄一味追求外觀花哨,功能繁雜,對(duì)于大多數(shù)用戶,許多功能用不上,形同虛設(shè)。針對(duì)以上各種弊端,開發(fā)了此種通訊錄,將各種性能優(yōu)化,繼承通訊錄的常用功能,滿足一般用戶存儲(chǔ),查找,刪除,查看的需求,此外還支持發(fā)信息,打電話,發(fā)郵件,備份SD卡等功能[12]。1.3主要工作本設(shè)計(jì)主要是采用Android的View框架編寫,部分框架運(yùn)用Android中的其他組件。當(dāng)進(jìn)入通訊錄的增加界面時(shí),調(diào)用的是一個(gè)用相對(duì)布局RelativeLayout的XML布局文件。其中包括了2個(gè)Button,分別實(shí)現(xiàn)了不同的功能。第一個(gè)Button是保存內(nèi)容,當(dāng)輸入聯(lián)系人姓名和號(hào)碼是點(diǎn)擊保存實(shí)現(xiàn)此功能。說到保存,不得不說得是保存信息涉及添加新聯(lián)系人的頭像,姓名,手機(jī)號(hào)碼,辦公室電話,家庭電話,職務(wù)職稱,單位名稱,地址,郵政編碼,Email,其他聯(lián)系方式,備注這些信息。第二個(gè)Button是返回,顧名思義就是從增加界面返回前一界面。響應(yīng)menu鍵的觸發(fā)事件,設(shè)置底部菜單是否可見,并通過對(duì)底部菜單選項(xiàng)的監(jiān)聽實(shí)現(xiàn)底部菜單中的增加、查找、刪除、菜單、退出等功能,其中菜單包括顯示所有、刪除所有、號(hào)碼備份功能。在聯(lián)系人信息界面時(shí)通過點(diǎn)擊menu鍵,會(huì)彈出通信功能框,通過與發(fā)信息、打電話、發(fā)郵件功能接口的套用來實(shí)現(xiàn)。

2Android技術(shù)與理論2.1Android系統(tǒng)開發(fā)簡(jiǎn)介2.1.1Android技術(shù)簡(jiǎn)介Android一詞的本義指“機(jī)器人”同時(shí)也是Google。于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。它采用軟件堆層(SoftwareStack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語言開發(fā),只提供基本功能;中間層包括函數(shù)庫Library和虛擬機(jī)VirtualMachine,由C++開發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分,不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。Google通過與軟、硬件開發(fā)商、設(shè)備制造商、電信運(yùn)營商等其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式的生態(tài)系統(tǒng)[13]。對(duì)于設(shè)備制造商來說,Android是一個(gè)免費(fèi)的平臺(tái)。對(duì)硬體開發(fā)廠商來說,Android是個(gè)開放的平臺(tái)。只要廠商有能力,可以在這個(gè)平臺(tái)上自由加入特有的裝置或功能,不受手機(jī)作業(yè)系統(tǒng)廠商的限制。對(duì)于手持裝置的開發(fā)者來說,Android是個(gè)先進(jìn)的平臺(tái)。平臺(tái)上的應(yīng)用程式可相容于各種型號(hào)的Android手機(jī),免去為各種不同手機(jī)機(jī)型開發(fā)的困擾。Android平臺(tái)支援各種先進(jìn)的網(wǎng)絡(luò)、繪圖、3D處理能力,可以用來提供更好的使用者體驗(yàn)。Android它的開放性就優(yōu)于其它封閉式的手機(jī)系統(tǒng),因此,任何人都可能根據(jù)自己的喜好將手機(jī)系統(tǒng)中的所有功能重新編寫。這使得越來越多的人關(guān)注這個(gè)操作系統(tǒng)[14]。Android軟件平臺(tái)主要由五部分構(gòu)成,它們分別是:關(guān)鍵應(yīng)用程序、應(yīng)用程序框架和組件、C/C++函數(shù)庫、Java程序運(yùn)行環(huán)境、優(yōu)化了的Linux內(nèi)核[15]。關(guān)鍵應(yīng)用程序:Android平臺(tái)內(nèi)包含一些關(guān)鍵應(yīng)用程序,如郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷、網(wǎng)頁瀏覽器等,而更多有特色的Android應(yīng)用程序還有待于廣大開發(fā)者共同參與開發(fā)。應(yīng)用程序框架及組件:Android應(yīng)用程序開發(fā)基于框架和組件。Android本身已在其框架中提供了許多組件供應(yīng)用程序調(diào)用,開發(fā)者也可在開發(fā)應(yīng)用程序時(shí)順帶開發(fā)新的組件,并將該組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。C/C++函數(shù)庫:Android應(yīng)用程序框架之下是一套C/C++函數(shù)庫,它們服務(wù)于Android應(yīng)用程序組件,其功能通過組件間接提供給開發(fā)者。這些函數(shù)庫包括:標(biāo)準(zhǔn)C函數(shù)庫、媒體功能庫、瀏覽器引擎、2D和3D圖形庫等[16]。Java程序運(yùn)行環(huán)境:Android的Java程序運(yùn)行環(huán)境包含一組Java核心函數(shù)庫及Dalvik虛擬機(jī),它們有效地優(yōu)化了Java程序的運(yùn)行過程。Linux內(nèi)核:Android系統(tǒng)平臺(tái)基于優(yōu)化了的Linux內(nèi)核,它提供諸如內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動(dòng)等服務(wù),同時(shí)也是手機(jī)軟硬件的連接層[17]。Android應(yīng)用程序以各種組件(API)為基礎(chǔ),API是Android軟件平臺(tái)的重要組成部分,也是開發(fā)Android應(yīng)用的關(guān)鍵所在。當(dāng)前活動(dòng)程序Activity:作為最常用的應(yīng)用程序組件,幾乎所有Activity都會(huì)通過創(chuàng)建UI窗口與用戶進(jìn)行交流。Activity具有生命周期,它包含運(yùn)行、暫停、停止等幾個(gè)狀態(tài),狀態(tài)間的轉(zhuǎn)換可通過調(diào)用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestory()等方法來實(shí)現(xiàn)。要開啟新的activity,可以調(diào)用startActivity(Intent),或調(diào)用startSubActivity(Intent,int),后者通常和onActivityResult(int,int,String,Bundle)聯(lián)合使用,以從一個(gè)activity獲取某結(jié)果并返回給打開它的activity[18]。圖像顯示View:View是最基本的UI構(gòu)件,它在屏幕中占據(jù)一個(gè)矩形區(qū)域可用來顯示文本、圖像等內(nèi)容,還可完成圖像事件處理。常用的View方法有:inflate()(由XML文件生成View)、onDraw(Canvas)(對(duì)View進(jìn)行填充)、onMeasure(int,int)(測(cè)量View的高度和寬度)、onLayout()(完成View的布局)、onKeyDown(int,KeyEvent)(View中有按鍵操作時(shí)被調(diào)用)、onFocusChanged(boolean,int)(當(dāng)View得到或失去關(guān)注時(shí)被調(diào)用)、setOnClilckListener()(設(shè)置View點(diǎn)擊事件監(jiān)聽器)。View也包含一些子類,如:TextView(布局文件中的文本顯示)、EditText(布局文件中的文本編輯)、Button(按鈕)、ListView(顯示列表)[19]。事件Intent:Intent抽象描述了想要執(zhí)行的某種操作,它與startActivity一起使用可以開啟新的activity,與startService一起使用可以開啟后臺(tái)服務(wù)。Intent最重要的作用還是加載activity,它是不同activity間的橋梁。Intent也可以被認(rèn)為是一種概括操作行為的數(shù)據(jù)結(jié)構(gòu),它主要包括action(動(dòng)作)和data(數(shù)據(jù))兩部分,此外它還具有一些附加屬性如category(intent種類)、type(數(shù)據(jù)類型)等。常用的Intent方法有intent()(構(gòu)造intent)、addcategory()(添加intent類型)、getAction()(獲取intent動(dòng)作)、getData()(獲取intent數(shù)據(jù))等。數(shù)據(jù)存取與共享機(jī)制ContentProvider:ContentProvider為應(yīng)用程序提供一些訪問方法,包括:Query(Uri,String[],String,String[],String,String,String)(數(shù)據(jù)信息的查詢),insert(Uri,Contentvalues)(在Contentprovider中添加新數(shù)據(jù)),updata(Uri,Contentvalues,String,String[])(更新Conntprovider中的數(shù)據(jù)),delect(Uri,String,String[])(刪除數(shù)據(jù)),Gettype(Uri)(獲取數(shù)據(jù)類型)。其中,Uri標(biāo)明了ContentProvider存儲(chǔ)的數(shù)據(jù)類型,在執(zhí)行訪問方法時(shí)都需依據(jù)Uri作為路徑標(biāo)識(shí)來確定要訪問哪個(gè)ContentProvider[20]。后臺(tái)服務(wù)Service:Service是運(yùn)行在后臺(tái)的應(yīng)用程序組件,不直接與用戶交互。當(dāng)前活動(dòng)程序可以使用Context.StartService()開啟一項(xiàng)后臺(tái)服務(wù),還可以通過Context.bindService()與后臺(tái)服務(wù)通信。Android的架構(gòu)是Linux內(nèi)核、C/C++函數(shù)庫、Dalvik虛擬機(jī)、應(yīng)用框架以及關(guān)鍵應(yīng)用程序構(gòu)成的,如圖2-1。通過編譯基于框架的應(yīng)用程序可以降低開發(fā)負(fù)荷。應(yīng)用軟件原則上是在DalvikVM上運(yùn)行的。圖2-1Android架構(gòu)圖2.1.2關(guān)鍵應(yīng)用程序Android平臺(tái)內(nèi)包含一些關(guān)鍵應(yīng)用程序,如郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷和網(wǎng)頁瀏覽器等,開發(fā)者可以在其平臺(tái)上開發(fā)更多有特色的應(yīng)用程序,所用開發(fā)語言是Java。2.1.3應(yīng)用程序框架Android應(yīng)用程序的開發(fā)基于框架和組件。Android本身已在其框架中提高了許多的組件供應(yīng)用程序調(diào)用,當(dāng)然開發(fā)者也開放新的組件,并將組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。2.1.4函數(shù)庫Android應(yīng)用程序框架之下是一套C/C++函數(shù)庫,它們服務(wù)于Android應(yīng)用程序組件,其功能通過組件間接提供給開發(fā)者。這些函數(shù)庫包括:標(biāo)準(zhǔn)C函數(shù)庫、媒體功能庫、瀏覽器引擎、2D和3D圖形庫、基于WEB應(yīng)用的的安全協(xié)議SSL、用于點(diǎn)陣和矢量字體渲染的FreeType以及SQLite引擎等。Android的Java程序運(yùn)行環(huán)境包含一組Java核心函數(shù)庫及Dalvik虛擬機(jī),它們有效地優(yōu)化了Java程序的運(yùn)行過程。所有的Android應(yīng)用都運(yùn)行在它自己的進(jìn)程里,該進(jìn)程是一個(gè)Dalvik虛擬機(jī)的實(shí)例,Dalvik被設(shè)計(jì)成能在一臺(tái)設(shè)備上高效的運(yùn)行多個(gè)虛擬機(jī)實(shí)例。Dalvik虛擬機(jī)的可執(zhí)行文件被封裝成Dalvik可執(zhí)行格式(.dex)。這是被優(yōu)化過的最小內(nèi)存依賴的格式。Java編譯器(dx工具)將注冊(cè)了的和運(yùn)行時(shí)用到的類編譯成.dex格式。Dalvik虛擬機(jī)依賴于底層Linux內(nèi)核提供的功能,如線程機(jī)制,和內(nèi)存管理機(jī)制等。2.1.5Linux內(nèi)核Android系統(tǒng)平臺(tái)是基于優(yōu)化了的Linux內(nèi)核,是其系統(tǒng)平臺(tái)的核心。它提供諸如內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動(dòng)等服務(wù),同時(shí)也是手機(jī)軟硬件的連接層,提供了一個(gè)屏蔽層用于屏蔽硬件和上層軟件。2.2Android應(yīng)用的構(gòu)成和工作機(jī)制對(duì)于一個(gè)Android應(yīng)用程序來說,是由Activity、IntentReceiver、Service、ContentProvider四部分組成,但并不是每一個(gè)Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件AndroidMainfest.xml中進(jìn)行配置。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。2.2.1ActivityActivity是構(gòu)成應(yīng)用程序中最重要的構(gòu)造塊,在Android應(yīng)用程序中,幾乎都是通過Activity來與用戶進(jìn)行交互,所以Activity主要負(fù)責(zé)的就是創(chuàng)建與用戶進(jìn)行交互的顯示窗口,你可以在這些窗口里通過調(diào)用setContentView(View)方法來顯示你自己的用戶界面?;顒?dòng)(Activity)在系統(tǒng)中以活動(dòng)棧的形式進(jìn)行管理。當(dāng)一個(gè)新的活動(dòng)啟動(dòng)后,被放到了棧頂,成為了運(yùn)行活動(dòng),而新活動(dòng)之前的活動(dòng)在活動(dòng)棧里總位于新活動(dòng)之下,直到新的活動(dòng)退出才重新回到前臺(tái)。從圖2-2可以看出,Activity有三個(gè)關(guān)鍵的循環(huán):(1)活動(dòng)的整個(gè)生命期:從首次調(diào)用onCreate(Bundle)開始,到最終調(diào)用onDestroyO結(jié)束。在onCreate()中進(jìn)行所有初始化,在onDestroyO時(shí)進(jìn)行清理工作,釋放資源。(2)活動(dòng)的可見生命期:從調(diào)用onStart()開始,到onStop()被調(diào)用為止。在這段時(shí)間內(nèi),即使活動(dòng)不與用戶進(jìn)行交互,用戶也可以在屏幕上看到它。在這兩個(gè)方法調(diào)用之間,可以維護(hù)活動(dòng)顯示給用戶的資源。onStart()和onStop()方法可以多次調(diào)用,因?yàn)榛顒?dòng)隨時(shí)可以在可見和隱藏之間進(jìn)行轉(zhuǎn)換。(3)活動(dòng)的后臺(tái)生命期:從調(diào)用onResume()開始,到onPause()被調(diào)用為止。這段時(shí)間內(nèi)活動(dòng)處于其它所有活動(dòng)之前,并與用戶進(jìn)行交互。一個(gè)活動(dòng)可以不斷在resumed狀態(tài)和paused狀態(tài)之間變換。Android使用了Intent類來實(shí)現(xiàn)活動(dòng)之間的切換工作。Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及的數(shù)據(jù)和附加數(shù)據(jù)進(jìn)行描述。根據(jù)Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件并完成組件的調(diào)用。因此,Intent起著一種媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。在應(yīng)用中,我們可以以兩種形式來使用Intent:直接Intent,指定了component屬性的Intent,通過指定具體的組件類,通知應(yīng)用啟動(dòng)對(duì)應(yīng)的組件。間接Intent,沒有指定component屬性的Intent,則需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在所有的可用組件中,確定滿足此Intent的組件。2.2.2IntentReceiverIntentReceiver是用于對(duì)外部事件的響應(yīng),當(dāng)外部事件發(fā)生時(shí),會(huì)使用NotificationManager通知用戶。當(dāng)一個(gè)IntentReceiver被觸發(fā)時(shí),系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)對(duì)應(yīng)的應(yīng)用程序。如在本系統(tǒng)中,當(dāng)用戶正在其它界面進(jìn)行操作時(shí),有好友發(fā)送消息過來,就會(huì)以通知的形式發(fā)送到當(dāng)前界面的正上方來通知用戶。各種應(yīng)用還可以通過使用Context.BroadcastIntent()將它們的IntentReceiver廣播給其它的應(yīng)用程序,實(shí)現(xiàn)應(yīng)用之間的通訊。2.2.3ServiceService是提供連續(xù)信息的應(yīng)用程序。它是運(yùn)行于應(yīng)用程序后臺(tái)的服務(wù),在用戶進(jìn)行其它活動(dòng)的時(shí)候,這個(gè)服務(wù)將一直運(yùn)行在基于Android平臺(tái)的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)后臺(tái),直到用戶停止該服務(wù)或服務(wù)運(yùn)行結(jié)束。本系統(tǒng)客戶端擴(kuò)展功能就是采用Service來進(jìn)行設(shè)計(jì)和開發(fā)的。2.2.4ContentProviderContentProvider應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQL數(shù)據(jù)庫和其它的存儲(chǔ)設(shè)備中。當(dāng)應(yīng)用程序需要使用存儲(chǔ)設(shè)備中的數(shù)據(jù)時(shí),可以使用ContentProvider來完成。使用ContentProvider能夠靈活的替換底層使用的存儲(chǔ)設(shè)備,從而使應(yīng)用系統(tǒng)具有良好的數(shù)據(jù)。

3需求分析3.1功能需求分析根據(jù)用戶需求總結(jié)出來的反映了用戶需求的系統(tǒng)邏輯模型轉(zhuǎn)換成可以實(shí)施的物理模型,把整個(gè)設(shè)計(jì)劃分成單元,主要解決如何去做的問題,要想創(chuàng)建整個(gè)通訊錄首先要通過增加聯(lián)系人信息來創(chuàng)建通訊錄。整個(gè)應(yīng)用程序應(yīng)劃分為4個(gè)模塊,分別是程序啟動(dòng)、用戶界面、后臺(tái)服務(wù)和數(shù)據(jù)庫適配器,各模塊之間的關(guān)系如圖3-1所示:Appwidget啟動(dòng)Appwidget啟動(dòng)Appwidgetprovider啟動(dòng)服務(wù)后臺(tái)服務(wù)數(shù)據(jù)獲取模塊用戶界面設(shè)置相關(guān)信息信息Startservice(newintent())啟動(dòng)服務(wù)聯(lián)系人列表服務(wù)數(shù)據(jù)庫獲取模塊SQLite圖3-1各模塊關(guān)系圖從上圖中不難看出,后臺(tái)服務(wù)是整個(gè)應(yīng)用程序的核心,主要是“數(shù)據(jù)獲取模塊”,負(fù)責(zé)周期性的從用戶輸入的內(nèi)容中獲取信息。后臺(tái)服務(wù)在程序啟動(dòng)時(shí)就由AppWidgetProvider啟動(dòng),也可由用戶界面通過startService()進(jìn)行啟動(dòng),啟動(dòng)后的后臺(tái)服務(wù)將一直保持運(yùn)行狀態(tài)。同時(shí)用戶界面從數(shù)據(jù)庫中獲取文本信息。一方面可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng);另一方面,后臺(tái)服務(wù)可以及時(shí)更新數(shù)據(jù),以保證數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)庫適配器封裝了所有對(duì)SQLite數(shù)據(jù)庫操作的方法,用戶界面和后臺(tái)服務(wù)會(huì)調(diào)用它來實(shí)現(xiàn)數(shù)據(jù)庫操作。在完成用戶界面設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)和模塊設(shè)計(jì)后,至此程序設(shè)計(jì)階段基本完成。文本編輯器中不同功能界面之間的切換,用戶可以通過點(diǎn)擊menu鍵來切換到不同的功能界面,不同功能界面的切換如圖3-2。CClient詳細(xì)信息增加查找刪除菜單退出通信功能顯示所有刪除所有返回刪除修改圖3-2不同功能界面切換3.2性能需求分析手機(jī)軟件要有良好的用戶體驗(yàn),良好的用戶體驗(yàn)體現(xiàn)在以下幾個(gè)方面:(1)界面友好用戶界面要簡(jiǎn)潔直觀,設(shè)計(jì)合理,方便用戶操作,讓用戶操作起來比較舒服,并且UI視覺效應(yīng)好。(2)快速響應(yīng)快速處理用戶的輸入或請(qǐng)求,對(duì)于需要長時(shí)間處理的部分,在其處理時(shí)可以給用戶一個(gè)提示,告知用戶該軟件正在運(yùn)行。(3)無縫性一個(gè)常見的無縫問題就是一個(gè)應(yīng)用的后臺(tái)進(jìn)程(如service或broadcastreceiver)對(duì)某事件作出響應(yīng)而彈出對(duì)話框,這看起來并無大礙,特別是當(dāng)我在模擬器上單獨(dú)地構(gòu)建和測(cè)試系統(tǒng)時(shí)。然而,當(dāng)我的應(yīng)用在真正的設(shè)備上運(yùn)行,后臺(tái)線程顯示對(duì)話框時(shí),我的應(yīng)用當(dāng)時(shí)可能沒有獲得用戶焦點(diǎn)。這就會(huì)出現(xiàn)我的應(yīng)用會(huì)在活動(dòng)的應(yīng)用后面顯示對(duì)話框,或者從當(dāng)前應(yīng)用中獲得焦點(diǎn)并顯示對(duì)話框的情況,而管論當(dāng)時(shí)用戶正在做什么(如正在打電話等)。那樣的行為可能對(duì)我的應(yīng)用或用戶不起作用。為了避免這些問題,我的應(yīng)用應(yīng)該利用適當(dāng)?shù)南到y(tǒng)資源——Notification類來通知用戶。利用通知,我的應(yīng)用可以通過在狀態(tài)條上顯示一個(gè)圖標(biāo)來通知用戶事件已經(jīng)發(fā)生,而非獲得焦點(diǎn)和打斷用戶。3.3數(shù)據(jù)庫需求分析數(shù)據(jù)結(jié)構(gòu)組織和數(shù)據(jù)庫文件設(shè)計(jì)要根據(jù)不同用途使用要求等,來決定數(shù)據(jù)的整體組織形式等。數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。只不過這個(gè)倉庫是在計(jì)算機(jī)存儲(chǔ)設(shè)備上,而且數(shù)據(jù)是按一定的格式存放的。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲(chǔ),具有較小的重復(fù)度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并且可以被在一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫的軟件開發(fā)中,需要根據(jù)有待解決的問題性質(zhì)、規(guī)模,以及所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫類型選擇,用戶數(shù)據(jù)庫是基于SQLite建立。SQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如Tcl、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款世界著名開源的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。這也是android的性能優(yōu)勢(shì)。該系統(tǒng)數(shù)據(jù)庫的建立是完全在Android平臺(tái)上執(zhí)行Java代碼,通過DVM編譯來建立的,沒有什么輔助工具,由于整個(gè)SQLite數(shù)據(jù)庫是非可視化操作,所有對(duì)數(shù)據(jù)庫的操作都是通過執(zhí)行Java代碼實(shí)現(xiàn),在完成其查詢功能的時(shí)候沒有使用數(shù)據(jù)庫高級(jí)編程,較為麻煩的關(guān)節(jié)是在如何有機(jī)的將客戶端數(shù)據(jù)庫整體結(jié)構(gòu)實(shí)現(xiàn)出來,實(shí)現(xiàn)過程是無可視界面,也沒有數(shù)據(jù)庫輔助工具情況下,整個(gè)過程很抽象。3.4安全需求Android安全中的一個(gè)重要的設(shè)計(jì)點(diǎn)是在默認(rèn)的情況下應(yīng)用沒有權(quán)限執(zhí)行對(duì)其他應(yīng)用程序,操作系統(tǒng)或用戶的有害操作。這些操作包括讀取用戶的隱私數(shù)據(jù),訪問網(wǎng)絡(luò),保持設(shè)備活動(dòng)等等,應(yīng)用程序的進(jìn)程是一個(gè)安全的黑盒子,在沒有給它權(quán)限的時(shí)候它不能干擾其他應(yīng)用程序。

4功能設(shè)計(jì)4.1總體設(shè)計(jì)一個(gè)好的系統(tǒng)設(shè)計(jì)的步驟決定了程序是否能按照設(shè)計(jì)者的目的按時(shí)完成,是否能在規(guī)定的時(shí)間內(nèi)按照設(shè)計(jì)者的要求高質(zhì)量的完成程序必要的功能。并且按照標(biāo)準(zhǔn)的設(shè)計(jì)步驟對(duì)程序進(jìn)行調(diào)試,測(cè)試,以及后期的優(yōu)化完善,使程序更加具有健壯性和可用性。通過對(duì)通訊錄功能、系統(tǒng)模塊、用戶需求方面進(jìn)行全方位的分析制定開發(fā)流程,開發(fā)流程如圖4-1所示。調(diào)查研究確定功能調(diào)查研究確定功能編寫程序調(diào)試程序運(yùn)行測(cè)試優(yōu)化完善圖4-1開發(fā)流程圖采用標(biāo)準(zhǔn)的開發(fā)流程確定系統(tǒng)具有用戶管理功能,聯(lián)系人增刪改功能,通訊功能,查找功能,備份等功能。系統(tǒng)的功能圖如4-2所示。增加增加查找刪除菜單詳細(xì)信息修改聯(lián)系人列表退出刪除顯示所有刪除所有備份返回圖4-2系統(tǒng)功能圖通過對(duì)系統(tǒng)的功能結(jié)構(gòu)的分析,設(shè)計(jì)后系統(tǒng)運(yùn)行流程是系統(tǒng)運(yùn)行后用戶將進(jìn)入通訊錄主界面,可以看到聯(lián)系人列表。通過點(diǎn)擊MENU界面的增加功能選項(xiàng)可以新增聯(lián)系人,通過查找按鈕可以對(duì)聯(lián)系人進(jìn)行姓名、號(hào)碼的操作,通過選擇聯(lián)系人并點(diǎn)擊刪除鍵可以對(duì)聯(lián)系人進(jìn)行刪除操作,通過菜單功能可以顯示所有聯(lián)系人、刪除所有聯(lián)系人、并備份SD卡功能。在聯(lián)系人詳細(xì)信息界面點(diǎn)擊MENU鍵彈出通訊功能框選擇撥打電話按鈕或者發(fā)信息發(fā)郵件按鍵,系統(tǒng)的運(yùn)行流程圖如4-3所示。開始開始初始化顯示聯(lián)系人列表通過menu鍵進(jìn)行操作不同的選項(xiàng)操作具體的操作操作是否結(jié)束返回手機(jī)功能界面結(jié)束YesNo圖4-3系統(tǒng)運(yùn)行流程4.2系統(tǒng)功能設(shè)計(jì)根據(jù)手機(jī)功能調(diào)查顯示,近十成消費(fèi)者都會(huì)使用手機(jī)通訊錄功能,隨著手機(jī)通訊錄功能的不斷加強(qiáng)與完善,手機(jī)通訊錄的意義,已不僅僅像電話薄一樣顯示電話號(hào)碼,而是向著個(gè)性化、人性化的方向發(fā)展。通訊錄從無到有,從英文到中文,經(jīng)歷了十幾年的發(fā)展歷程,今后的發(fā)展趨勢(shì)就是從通訊錄發(fā)展為名片夾,也就是在一個(gè)聯(lián)系人之下有手機(jī)號(hào)碼、固話號(hào)碼、公司、住址、郵箱、備注等內(nèi)容。手機(jī)通訊錄扮演著與用戶直接交互并且提供服務(wù)的重要角色,它需要提供良好的用戶體驗(yàn),方便用戶操作,接收用戶的操作并把這些操作轉(zhuǎn)換成相應(yīng)的命令,采用用戶活動(dòng)的方式完成各個(gè)服務(wù)的邏輯流程。其功能主要包括以下幾方面內(nèi)容。1、增加、刪除、編輯聯(lián)系人點(diǎn)擊通信錄界面中的增加按鈕,進(jìn)入增加聯(lián)系人界面。輸入聯(lián)系人的基本信息,并可根據(jù)用戶需求增加個(gè)性化信息如頭像、姓名、手機(jī)號(hào)碼、辦公室電話、家庭電話、職務(wù)職稱、單位名稱、地址、郵政編碼、Email、其他聯(lián)系方式、備注這些信息,單擊確認(rèn)返回主界面。點(diǎn)擊通信錄中一個(gè)已存在的聯(lián)系人,進(jìn)入聯(lián)系人編輯界面,可修改聯(lián)系人的資料或進(jìn)行刪除聯(lián)系人操作,完成后退回到主界面。對(duì)列表中聯(lián)系人的標(biāo)記,點(diǎn)擊menu鍵彈出功能界面上的刪除按鍵也可進(jìn)行刪除。還可以在菜單上選擇刪除全部聯(lián)系人來清空通訊錄。在刪除聯(lián)系人的過程中,系統(tǒng)將提示用戶是否繼續(xù)操作,若放棄操作,則聯(lián)系人信息將繼續(xù)保存。2、查找聯(lián)系人用戶點(diǎn)擊menu鍵打開底部菜單框,底部菜單框?yàn)椴樵兟?lián)系人提供入口,進(jìn)入通訊錄的缺省頁面為聯(lián)系人列表,在列表中看到所有聯(lián)系人的姓名、電話信息排列,用戶點(diǎn)擊查找按鍵輸入聯(lián)系人基本信息,通訊錄顯示所有符合查詢條件的聯(lián)系人列表,用戶選擇一個(gè)聯(lián)系人進(jìn)入聯(lián)系人基本信息頁面進(jìn)行其他操作;查詢完成,用戶按返回鍵返回主界面。3、通訊功能用戶在通訊錄選擇聯(lián)系人進(jìn)入聯(lián)系人詳細(xì)信息界面,這時(shí)點(diǎn)擊menu鍵打開通信功能框,選擇打電話、發(fā)信息還是發(fā)郵件的功能進(jìn)行操作。4、菜單功能通過對(duì)menu按鍵的點(diǎn)擊,顯示底部菜單框,包含有增加、查找、刪除、菜單、返回功能,菜單按鍵則包含顯示所有、刪除所有、備份SD卡等實(shí)用功能。4.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)該程序數(shù)據(jù)庫是在Android平臺(tái)上執(zhí)行Java代碼,通過DVM編譯來建立的,由于整個(gè)SQLite數(shù)據(jù)庫是非可視化操作,因此所有對(duì)數(shù)據(jù)庫的操作都是通過執(zhí)行Java代碼實(shí)現(xiàn)。且表的設(shè)計(jì)也盡量優(yōu)化,沒有錯(cuò)綜復(fù)雜的關(guān)系,每張表都是獨(dú)立的,不存在任何約束,因此數(shù)據(jù)庫也是獨(dú)立數(shù)據(jù)庫。本系統(tǒng)為了實(shí)現(xiàn)文本管理功能,需要建立文本信息表database,文本信息表database中需要包含的屬性有id,name,mobilephone,officephone,familyphone,address,emial,company,remark,imageid,文本信息表database如表4-1所示:字段名類型是否可為空是否為主鍵描述NumString否是學(xué)號(hào)NameString是否姓名QQnumString是否QQ號(hào)TelString是否聯(lián)系電話EmailString是否電子郵箱AddressString是否家庭住址MajorString是否專業(yè)名稱ClassesString是否班級(jí)表4-4文本信息表database

5通訊錄實(shí)現(xiàn)5.1Android開發(fā)平臺(tái)搭建Android的上層應(yīng)用程序是用Java語言開發(fā),同時(shí)還需要基于Dalvik虛擬機(jī),所以,Google公司推薦使用主流的Java繼承開發(fā)環(huán)境Eclipse。只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語言進(jìn)行開發(fā),還應(yīng)該有由SUN公司提供的JavaSDK(其中包括JRE:JavaRuntimeEnvironment)。此外,Android的應(yīng)用程序開發(fā)和Java開發(fā)有較大區(qū)別的,所以還需要有Google提供的AndroidSDK。同時(shí),還需要在Eclipse安裝ADT,為Android開發(fā)提供開發(fā)工具的升級(jí)或者變更,是Eclipse下開發(fā)工具的升級(jí)下載的工具。簡(jiǎn)言之,需要以下軟件,才能搭建Android開發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開發(fā)。(1)JavaSDK(2)Eclipse(3)AndroidSDK(4)ADTAndroid開發(fā)平臺(tái)搭建步驟:(1)首先到/downloads/下載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載JavaEE集成版本。去/javase/downloads/inde

x.jsp站點(diǎn)下載SDK后安裝,下載/android/android-sdk-windows

-1.5_r1.zip,AndroidSDK1.5后解壓。第一步下載工序就結(jié)束了。

(2)雙擊Eclipse解壓后目錄中的eclipse.exe然后啟動(dòng),選擇Eclipse菜單中的Help->InstallNewSoftware->AvailableSoftware,點(diǎn)擊右側(cè)的“Add”輸入/android/eclipse/后確定,然后在“Workwith”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會(huì)就會(huì)出現(xiàn)一個(gè)DeveloperTools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android開發(fā)工具插件,然后要到AndroidDDMS和AndroidDevelopmentTools,選中這兩個(gè)點(diǎn)擊Finish,Eclipse就會(huì)自動(dòng)下載并安裝Android插件了,最后會(huì)提示重啟Eclipse。(3)重啟后選擇Eclipse菜單中的Windows->Preferences在左側(cè)的Android項(xiàng)目中SDKLocation中填入AndroidSDK解壓后的目錄,然后點(diǎn)擊Apply。(4)在WindowsXP的系統(tǒng)變量中的path變量中添加一個(gè)值,該值指向解壓后的AndroidSDK目錄下的tools文件夾。5.2具體功能實(shí)現(xiàn)5.2.1界面布局首先從布局上來說其主要由TextView、EditText、Button組成,TextView用來標(biāo)示文本框含義,EditText用來顯示獲取輸入內(nèi)容,Button用來相應(yīng)用戶的點(diǎn)擊事件,該模塊的流程圖為圖5-1:AActivity對(duì)控件進(jìn)行聲明Oncreate()函數(shù)Button的onClicklistener()函數(shù)通過shareperferrence獲取參數(shù)用來判斷是不是第一次使用通過findviewbyid()函數(shù)定義控件是否第一次安裝使用利用intent()跳轉(zhuǎn)到注冊(cè)頁面是利用EditText的getText() 的tostring()方法獲取文本框內(nèi)容比較輸入的用戶名和密碼是否正確跳轉(zhuǎn)到本地通訊錄頁面是利用Toast()函數(shù)輸出提示錯(cuò)誤信息否圖5-1界面布局流程圖5.2.2增加聯(lián)系人功能首先從布局上來看其主要是由TextView、EditText、Spinner、Button組成,其中TextViev起到標(biāo)簽的作用,EditText和Spinner用與用戶信息的選擇、輸入,Button用于相應(yīng)用于的單擊事件,該模塊的工作流程如下圖5-2:開始O開始Oncreate()函數(shù)通過findviewbyid()初始化控件通過arrrayadapter的createfromresource()函數(shù)構(gòu)建spinner通過spinner的setonitemselectedlistener()獲取spinner選擇內(nèi)容通過Button的onlongclicklistener()函數(shù)監(jiān)聽用戶的單擊事件注冊(cè)返回利用MAP<string,string>將信息封裝起來然后利用http協(xié)議和json數(shù)據(jù)解析將信息傳遞到服務(wù)器端并將信息利用sharepreference保存起來利用函數(shù)system.exit(0)返回到上級(jí)圖5-2增加聯(lián)系人流程圖5.2.3查找聯(lián)系人功能該頁面主要是由TextView、Button組成,其中textview用來顯示通訊信息,Button用來實(shí)現(xiàn)打電話、發(fā)短信等功能,其實(shí)現(xiàn)流程圖為下圖5-3:利用tel當(dāng)中的內(nèi)容實(shí)現(xiàn)打電話發(fā)短信利用tel當(dāng)中的內(nèi)容實(shí)現(xiàn)打電話發(fā)短信開始Oncreate()函數(shù)通過findviewbyid()初始化控件通過listview中item的onlongclicklistener()將選擇的item信息利用sharepreference存儲(chǔ)起來通過Button的onlongclicklistener()函數(shù)監(jiān)聽用戶的單擊事件打電話發(fā)短信返回將sharepreference內(nèi)的信息取出來顯示在textview當(dāng)中android自帶的打電話uri通過intent的setaction()和setdata()實(shí)現(xiàn)打電話通過android自帶的打電話uri通過intent的setaction()和setdata()實(shí)現(xiàn)發(fā)短信功能通過system.exit(0)返回上級(jí)圖5-3查找聯(lián)系人流程圖5.2.4數(shù)據(jù)庫操作實(shí)現(xiàn)為了實(shí)現(xiàn)聯(lián)系人在數(shù)據(jù)庫中的增加,刪除,查找等操作,使用操作數(shù)據(jù)庫的核心類android.database.sqlite.SQLiteDatabase。使用SQLiteOpenHelper的子類來完成創(chuàng)建、打開數(shù)據(jù)庫及各種對(duì)數(shù)據(jù)庫的操作。數(shù)據(jù)庫的類繼承函數(shù),顯示了數(shù)據(jù)庫類的繼承關(guān)系:classMyDBHelperextendsSQLiteOpenHelper{ publicMyDBHelper(Contextcontext,Stringname, intversion){//公共的MyDBHelper對(duì)象 super(context,name,null,version);//繼承上面的}我在數(shù)據(jù)庫中運(yùn)用了openDatabase的方法來打開數(shù)據(jù)庫。publicvoidopenDatabase(){ if(dbInstance==null){ myDBHelper=newMyDBHelper(context,DB_DBNAME,VERSION); dbInstance=myDBHelper.getWritableDatabase();}實(shí)現(xiàn)聯(lián)系人信息插入數(shù)據(jù)庫中我設(shè)置了一個(gè)新的ContentValues,通過user對(duì)象把聯(lián)系人信息存儲(chǔ)在values。 publiclonginsert(Useruser){ ContentValuesvalues=newContentValues();//設(shè)置一個(gè)新的容器的對(duì)象 values.put("name",user.username); values.put("mobilephone",user.mobilePhone); values.put("officephone",user.officePhone); values.put("familyphone",user.familyPhone); values.put("address",user.address); values.put("othercontact",user.otherContact); values.put("email",user.email); values.put("position",user.position); values.put("company",pany); values.put("remark",user.remark); values.put("imageid",user.imageId);//儲(chǔ)存用戶相關(guān)信息 returndbInstance.insert(DB_TABLENAME,null,values);//用戶插入數(shù)據(jù)表的信息}為了解決用戶菜單操作中刪除聯(lián)系人,我在數(shù)據(jù)庫中調(diào)用delete函數(shù)在DB_TABLENAME中進(jìn)行刪除:publicvoiddelete(int_id){//刪除聯(lián)系人 dbInstance.delete(DB_TABLENAME,"_id=?",newString[]{String.valueOf(_id)}); }當(dāng)用戶通過長點(diǎn)擊對(duì)要?jiǎng)h除的聯(lián)系人進(jìn)行標(biāo)記,然后對(duì)標(biāo)記的數(shù)據(jù)進(jìn)行徹底的刪除操作。我新建了一個(gè)StringBuffer,將刪除聯(lián)系人的id存儲(chǔ)進(jìn)去,并調(diào)用delete函數(shù)來刪除StringBuffer中所有數(shù)據(jù),具體代碼如下: publicvoiddeleteMarked(ArrayList<Integer>deleteId){//刪除標(biāo)記的用戶信息 StringBufferstrDeleteId=newStringBuffer();//新建一個(gè)緩沖對(duì)象 strDeleteId.append("_id=");//存儲(chǔ)要?jiǎng)h除聯(lián)系人的id for(inti=0;i<deleteId.size();i++){//設(shè)置for循環(huán)函數(shù) if(i!=deleteId.size()-1){//如果i為真 strDeleteId.append(deleteId.get(i)+"or_id=");//刪除聯(lián)系人 }else{ strDeleteId.append(deleteId.get(i));}} dbInstance.delete(DB_TABLENAME,strDeleteId.toString(),null);//在數(shù)據(jù)庫中刪除聯(lián)系人 System.out.println(strDeleteId.toString());//顯示刪除后的聯(lián)系人}文件的查找操作可以通過對(duì)數(shù)據(jù)庫的查找來實(shí)現(xiàn),從數(shù)據(jù)庫中查找到符合條件的聯(lián)系人返回到list,將整合好的adapter交給listview顯示出來,具體代碼如下: publicArrayListgetUsers(Stringcondition,booleanprivacy){ ArrayListlist=newArrayList(); StringstrSelection=""; Stringsql="select*from"+DB_TABLENAME+"where1=1and(namelike'%"+condition+"%'"+ "ormobilephonelike'%"+condition+"%'orfamilyphonelike'%"+condition+"%'"+ "orofficephonelike'%"+condition+"%')"+strSelection; Cursorcursor=dbInstance.rawQuery(sql,null); while(cursor.moveToNext()){ HashMapitem=newHashMap(); item.put("_id",cursor.getInt(cursor.getColumnIndex("_id"))); item.put("name",cursor.getString(cursor.getColumnIndex("name")));cursor.getInt(cursor.getColumnIndex("imageid"))); list.add(item);//放進(jìn)list里面}returnlist;5.3系統(tǒng)功能截圖(1)登陸頁面該頁面用于用戶輸入用戶名和密碼點(diǎn)擊登陸進(jìn)入到本地通訊錄頁面如果是第一次安裝使用該軟件則就會(huì)首先進(jìn)入注冊(cè)頁面,注冊(cè)完成后才可以跳轉(zhuǎn)到登陸頁面,其頁面如下圖5-4所示:圖5-4登錄頁面(2)本地通訊錄頁面該頁面用來顯示從服務(wù)器上面下載的其他人的通訊信息,點(diǎn)擊該頁面的menu包含兩個(gè)選項(xiàng)分別為注冊(cè)個(gè)人通訊信息、返回,當(dāng)長按listview的item時(shí)候會(huì)有兩個(gè)選項(xiàng)查看詳細(xì)通訊信息、刪除聯(lián)系人,其頁面如圖5-5:圖5-5本地通訊錄(3)查看聯(lián)系人頁面該頁面用來查看聯(lián)系人的詳細(xì)信息,并且可以通過聯(lián)系人的電話號(hào)碼來打電話發(fā)短信,其頁面如下圖5-6:圖5-6查看聯(lián)系人信息(4)查看服務(wù)器通訊信息該頁面用于在注冊(cè)個(gè)人通訊信息后顯示服務(wù)器端其他人的通訊信息并且可以下載到本地通訊錄,其頁面如下圖5-7所示:圖5-7下載界面

結(jié)束語在系統(tǒng)開發(fā)過程中,對(duì)Android的學(xué)習(xí)比想象的要困難的多,為了在短時(shí)間內(nèi)投入到開發(fā),完成系統(tǒng)。需要大量的時(shí)間去學(xué)習(xí),我在圖書館借閱了相關(guān)開發(fā)的書籍,照著上面去學(xué)習(xí),以最快的速度學(xué)習(xí)Android,掌握開發(fā)中的各種控件的使用。本文主要研究了Android平臺(tái)的架構(gòu)以及在Android平臺(tái)上手機(jī)通訊錄功能的實(shí)現(xiàn)。

本文在Android平臺(tái)以及在該平

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論