基于Android的個(gè)人通訊錄設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Android的個(gè)人通訊錄設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Android的個(gè)人通訊錄設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Android的個(gè)人通訊錄設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Android的個(gè)人通訊錄設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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的個(gè)人通訊錄設(shè)計(jì)與實(shí)現(xiàn)摘要:智能手機(jī)終端能夠支持用戶添加更多內(nèi)容豐富的應(yīng)用功能,從而贏得了絕大部分手機(jī)用戶的青睞、占據(jù)了手機(jī)市場(chǎng)的最大比例。手機(jī)通訊錄作為手機(jī)最基礎(chǔ)最常用的軟件也隨著手機(jī)科技的飛速發(fā)展變得強(qiáng)大起來(lái),由于Android的開(kāi)源性、智能性等優(yōu)勢(shì),基于Android的通訊錄也開(kāi)始風(fēng)靡世界。本文設(shè)計(jì)實(shí)現(xiàn)的通訊錄迎合市場(chǎng)的需求,充分運(yùn)用了免費(fèi)的Android開(kāi)發(fā)平臺(tái),通過(guò)需求分析確定開(kāi)發(fā)功能,以eclipse為開(kāi)發(fā)環(huán)境,搭建Android平臺(tái),再進(jìn)行代碼編寫(xiě)、程序調(diào)試,在實(shí)現(xiàn)通訊錄基本功能瀏覽、添加、修改、刪除、標(biāo)記、發(fā)短信、打電話、發(fā)郵件等的基礎(chǔ)上,添加了通訊錄加密、添加圖像、更改頭像等功能,并優(yōu)化了查找功能,使通訊錄功能更友善。關(guān)鍵詞:智能手機(jī),Android,通訊錄,eclipse

ThedesignandimplementationofpersonaladdressbookbasedonAndroidAbstract:intelligentmobilephoneterminalcansupportuserstoaddmorecontentrichapplications,whichwonthemajorityofmobilephoneusers,occupythelargestproportionofmobilephonemarket.Phonebookasthebasisofthephoneisthemostcommonlyusedsoftwarealsobecomestrongerwiththerapiddevelopmentofmobiletechnology,duetotheAndroidopensourceandintelligentadvantages,Androidbasedcommunicationbookalsobegansweepingtheworld.Thispaperpresentsthedesignandimplementationofthecommunicationbooktocatertothemarketdemand,tomakefulluseoffreeAndroiddevelopmentplatform,throughtheneedsanalysistodeterminethedevelopmentoffunction,theeclipsedevelopmentenvironment,tobuildtheAndroidplatform,andthencodewritinganddebuggingtheprograms,inthecontactstoachievebasicskillswillbeabletobrowse,add,modify,delete,mark,sendtextmessages,phone,emailandother,addthecontactsencrypted,addfeaturessuchastheimage,changethepicture,andoptimizethesearchfunction,theaddressbookfunctionmorefriendly.Keywords:intelligentmobilephone,Android,maillist,eclipse

2.Android系統(tǒng)開(kāi)發(fā)簡(jiǎn)介2.1Android技術(shù)簡(jiǎn)介Google與2005年并購(gòu)了成立22個(gè)月的高科技企業(yè)Android,展開(kāi)了短信、手機(jī)檢索、定位燈的業(yè)務(wù),同時(shí)基于Linux的Android平臺(tái)也進(jìn)入了開(kāi)發(fā)階段。Google在2007年11月5日發(fā)不了Android的第一個(gè)版本,在剛發(fā)布之初,Android并沒(méi)有引起界內(nèi)太多的關(guān)注。但隨著Google組件的開(kāi)放手機(jī)聯(lián)盟不斷有新生力量的加入,Android這個(gè)初出茅廬的小子已成為為iPhone分庭抗禮的生力軍[4]。Android采用軟件堆層(SoftwareStack,又名軟件疊層)的架構(gòu),主要分為三部分。底層以Linux內(nèi)核工作為基礎(chǔ),由C語(yǔ)言開(kāi)發(fā),只提供基本功能;中間層包括函數(shù)庫(kù)Library和虛擬機(jī)VirtualMachine,由C++開(kāi)發(fā)。最上層是各種應(yīng)用軟件,包括通話程序,短信程序等,應(yīng)用軟件則由各公司自行開(kāi)發(fā),以Java作為編寫(xiě)程序的一部分,不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙[5]。Android平臺(tái)支援各種先進(jìn)的網(wǎng)絡(luò)、繪圖、3D處理能力,可以用來(lái)提供更好的使用者體驗(yàn),任何人都可能根據(jù)自己的喜好將手機(jī)系統(tǒng)中的所有功能重新編寫(xiě)[6]。圖SEQ圖\*ARABIC1Android的架構(gòu)在Android操作系統(tǒng)中,將體系結(jié)構(gòu)劃分為4層:應(yīng)用層(Application)、應(yīng)用框架層(ApplicationFramework)、系統(tǒng)運(yùn)行庫(kù)層(Libraries)以及Linux內(nèi)核層(LinuxKernel)[7],如圖1所示。應(yīng)用層(Application):運(yùn)行層是使用Java語(yǔ)言進(jìn)行開(kāi)發(fā)的一些應(yīng)用層序,如地圖軟件、郵件客戶端層序、瀏覽器的連接等都是運(yùn)行在應(yīng)用層上。應(yīng)用框架層(ApplicationFramework):應(yīng)用層序框架,主要是Google公司發(fā)布的一些操作支持的類庫(kù)(API框架)。應(yīng)用程序中包含眾多組件,開(kāi)發(fā)者也開(kāi)放新的組件,將組件放入應(yīng)用程序框架中,可以進(jìn)行供自己和其它應(yīng)用程序調(diào)用。系統(tǒng)運(yùn)行庫(kù)層(Libraries):當(dāng)使用Android框架進(jìn)行開(kāi)發(fā)時(shí),為了更好地為程序服務(wù),Android操作系統(tǒng)會(huì)自動(dòng)調(diào)用一些C/C++的庫(kù)文件夾來(lái)支持所使用的各個(gè)組件。Linux內(nèi)核層(LinuxKernel):Android操作系統(tǒng)主要是基于Linux2.6內(nèi)核,程序的安全性、驅(qū)動(dòng)程序、進(jìn)程管理等都由Linux內(nèi)核所提供。2.2Android應(yīng)用程序框架基于Android軟件開(kāi)發(fā)接觸到最多的部分就是應(yīng)用程序框架,開(kāi)發(fā)者都是通過(guò)應(yīng)用程序框架來(lái)與Android地層進(jìn)行交互。整個(gè)應(yīng)用程序框架中有4個(gè)重要組件:Activities、Intent、Services和ContentProvider。Activities:一個(gè)Activities表示一個(gè)程序的顯示界面,一個(gè)應(yīng)用程序課包含多個(gè)Activities組件,每個(gè)Activities組件都有各自的周期。Intent:Intent用來(lái)完成多個(gè)程序之間的跳轉(zhuǎn),另外還可以用Intent來(lái)調(diào)用Android本身所提供的應(yīng)用程序,例如打電話、發(fā)短信、發(fā)郵件等。Services:Services也是Activities程序,只是Services運(yùn)行在后臺(tái),并沒(méi)有界面顯示。ContentProvider:不同應(yīng)用程序之間需要對(duì)數(shù)據(jù)進(jìn)行共享時(shí)用到此組件。

3.軟件需求分析3.1軟件功能需求分析通過(guò)對(duì)用戶需求的市場(chǎng)調(diào)查的分析,確定反應(yīng)用戶需求的系統(tǒng)邏輯模型,把整個(gè)設(shè)計(jì)劃分成4個(gè)單元,分別是程序啟動(dòng)、用戶界面、后臺(tái)服務(wù)和數(shù)據(jù)庫(kù)適配器,各模塊之間的關(guān)系如圖2所示:圖SEQ圖\*ARABIC2系統(tǒng)邏輯模型在上圖中,后臺(tái)服務(wù)是整個(gè)軟件的核心,數(shù)據(jù)獲取模塊是其主要部分,負(fù)責(zé)周期性的從用戶輸入的內(nèi)容中獲取信息。后臺(tái)服務(wù)在程序啟動(dòng)時(shí)就由AppWidgetProvider啟動(dòng),也可由用戶界面通過(guò)startService()進(jìn)行啟動(dòng),啟動(dòng)后的后臺(tái)服務(wù)將一直保持運(yùn)行狀態(tài)。同時(shí)用戶界面從數(shù)據(jù)庫(kù)中獲取文本信息。一方面可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng);另一方面,后臺(tái)服務(wù)可以及時(shí)更新數(shù)據(jù),以保證數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)庫(kù)適配器封裝了所有對(duì)SQLite數(shù)據(jù)庫(kù)操作的方法,用戶界面和后臺(tái)服務(wù)會(huì)調(diào)用它來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。在完成用戶界面設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)和模塊設(shè)計(jì)后,至此程序設(shè)計(jì)階段基本完成。3.2軟件數(shù)據(jù)庫(kù)需求分析數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的組織形式和數(shù)據(jù)庫(kù)文件的形式不定,主要根據(jù)使用要求來(lái)確定,但數(shù)據(jù)中的數(shù)據(jù)都是按照一定模型組織、描述和存儲(chǔ)的,具有較小的重復(fù)度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性。用戶數(shù)據(jù)庫(kù)是基于SQLite建立。SQLite是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),包含在一個(gè)相對(duì)小的C庫(kù)中,能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如PHP、Java、C、C#等。SQLite引擎不是個(gè)程序與之通信的獨(dú)立進(jìn)程,而是連接到程序中成為它的一個(gè)主要部分。所以主要的通信協(xié)議是在編程語(yǔ)言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時(shí)間和整體簡(jiǎn)單性上有積極的作用。整個(gè)數(shù)據(jù)庫(kù)(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件中。SQLite是無(wú)類型的,這意味著我們可以保存任何類型的數(shù)據(jù)到所想保存的任何表的任何列中。SQLite數(shù)據(jù)庫(kù)的非可視化操作是其弊端所在,這就導(dǎo)致SQLite在實(shí)現(xiàn)客戶端數(shù)據(jù)整體結(jié)構(gòu)的過(guò)程無(wú)可視界面,整個(gè)過(guò)程都很抽象。3.3安全需求分析由于Android系統(tǒng)自身具備的開(kāi)放源碼的特征,它的安全性能成為信息安全領(lǐng)域研究的一個(gè)重要課題。Android的安全性能主要體現(xiàn)在兩個(gè)方面:Android的系統(tǒng)安全和數(shù)據(jù)安全。Android系統(tǒng)安全是指智能終端本身的安全,是對(duì)操作系統(tǒng)的保護(hù),防止未授權(quán)的訪問(wèn)及對(duì)授權(quán)用戶服務(wù)的拒絕或?qū)ξ词跈?quán)用戶服務(wù)的允許,包括行為檢測(cè)、記錄等措施。Android的數(shù)據(jù)安全指確保存儲(chǔ)數(shù)據(jù)完整性、合法性二個(gè)方面,要求做到系統(tǒng)正確地傳輸數(shù)據(jù),授權(quán)程序順利地讀取數(shù)據(jù)[8]。Android安全中的一個(gè)重要的設(shè)計(jì)點(diǎn)是在默認(rèn)的情況下應(yīng)用沒(méi)有權(quán)限執(zhí)行對(duì)其他應(yīng)用程序、操作系統(tǒng)或用戶的有害操作,這些操作包括讀取用戶的隱私數(shù)據(jù),訪問(wèn)網(wǎng)絡(luò),保持設(shè)備活動(dòng)等等,應(yīng)用程序的進(jìn)程是一個(gè)安全的黑盒子,在沒(méi)有給它權(quán)限的時(shí)候它不能干擾其他應(yīng)用程序。

4.功能設(shè)計(jì)4.1總體功能設(shè)計(jì)通過(guò)對(duì)通訊錄功能、系統(tǒng)模塊、用戶需求方面進(jìn)行全方位的分析制定開(kāi)發(fā)流程,開(kāi)發(fā)流程如圖3所示。圖SEQ圖\*ARABIC3軟件開(kāi)發(fā)流程4.2系統(tǒng)功能設(shè)計(jì)采用標(biāo)準(zhǔn)的開(kāi)發(fā)流程確定系統(tǒng)具有用戶管理功能,聯(lián)系人增刪改功能,通訊功能,查找功能,備份等功能。系統(tǒng)的功能圖如4所示。圖SEQ圖\*ARABIC4開(kāi)發(fā)流程圖通過(guò)對(duì)系統(tǒng)的功能結(jié)構(gòu)的分析,設(shè)計(jì)后系統(tǒng)運(yùn)行流程是首次使用將進(jìn)入密碼設(shè)置界面,此后每次進(jìn)入此程序?qū)⑹紫冗M(jìn)入密碼驗(yàn)證界面,密碼正確才進(jìn)入通訊錄主界面,可以看到聯(lián)系人列表,長(zhǎng)按聯(lián)系人實(shí)現(xiàn)標(biāo)記功能,點(diǎn)擊聯(lián)系人進(jìn)入聯(lián)系人詳細(xì)信息顯示界面,在此可以實(shí)現(xiàn)修改、刪除該聯(lián)系人信息及返回功能,此外通過(guò)MENU課選擇打電話、發(fā)短信、發(fā)郵件通信功能。在通信錄主顯示界面通過(guò)點(diǎn)擊MENU課選擇增加聯(lián)系人、刪除聯(lián)系人、查找聯(lián)系人、菜單及退出菜單,另外“菜單”選項(xiàng)又包括子菜單:顯示所有,刪除所有,備份,刷新,修改密碼,后退等。系統(tǒng)的運(yùn)行流程圖如圖5所示。圖SEQ圖\*ARABIC5運(yùn)行流程圖4.3系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)該程序數(shù)據(jù)庫(kù)是在Android平臺(tái)上執(zhí)行Java代碼,通過(guò)DVM編譯來(lái)建立的,由于整個(gè)SQLite數(shù)據(jù)庫(kù)是非可視化操作,因此所有對(duì)數(shù)據(jù)庫(kù)的操作都是通過(guò)執(zhí)行Java代碼實(shí)現(xiàn)。且表的設(shè)計(jì)也盡量?jī)?yōu)化,沒(méi)有錯(cuò)綜復(fù)雜的關(guān)系,每張表都是獨(dú)立的,不存在任何約束,因此數(shù)據(jù)庫(kù)也是獨(dú)立數(shù)據(jù)庫(kù)。本系統(tǒng)為了實(shí)現(xiàn)文本管理功能,需要建立文本信息表user,文本信息表user中需要包含的屬性有_id,username,username_py,mobilephone,officephone,familyphone,position,company,address,zipcode,emial,othercontact,remark,文本信息表user如表1所示:表SEQ表\*ARABIC1文本信息表user屬性數(shù)據(jù)類型說(shuō)明_idInteger自動(dòng)增加的主鍵usernameInteger姓名username_pyString[]姓名(拼音)mobilephoneString[]手機(jī)號(hào)officephoneString[]辦公室號(hào)familyphoneString[]家庭號(hào)碼positionString[]職位companyString[]公司地址addressString[]地址zipcodeString[]郵編emailString[]郵箱othercontactString[]備注remarkInteger標(biāo)記

5通訊錄的實(shí)現(xiàn)5.1Android開(kāi)發(fā)平臺(tái)搭建搭建Android開(kāi)發(fā)環(huán)境需要Eclipse、JavaSDK、AndroidSDK、ADT。Eclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。JavaSDK就是JDK,JDK是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(JavaRuntimeEnvirnment)。AndroidSDK(SoftwareDevelopmentKit)軟件開(kāi)發(fā)工具包。ADT(AndroidDevelopmentTools)Android開(kāi)發(fā)工具。Android開(kāi)發(fā)平臺(tái)搭建步驟如下:(1)首先到/downloads/下載Eclipse集成開(kāi)發(fā)環(huán)境并且解壓(推薦下載JavaEE集成版本)。去/javase/downloads/index.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”輸入http://dl-ssl.google.com/android/eclipse/后確定,然后在“Workwith“下拉菜單中選擇剛才輸入的網(wǎng)址。過(guò)一會(huì)就會(huì)出現(xiàn)一個(gè)DeveloperTools選項(xiàng),勾上以后點(diǎn)擊Next以后Eclipse會(huì)自動(dòng)網(wǎng)上查找Android開(kāi)發(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密碼設(shè)置及密碼驗(yàn)證程序運(yùn)行首先進(jìn)入密碼設(shè)置/輸入密碼界面,密碼設(shè)置/驗(yàn)證界面布局如圖6。圖SEQ圖\*ARABIC6密碼設(shè)置/驗(yàn)證界面布局界面整個(gè)為一個(gè)大的LinerLayout,包括三個(gè)EditText,和password_manage,new_password,repeat_password,密碼通過(guò)SharedPreferences存儲(chǔ)類保存,通過(guò)判斷密碼是否為空進(jìn)行控制三個(gè)EditText的顯示:密碼為空,即第一次使用本系統(tǒng)時(shí),顯示new_password和repeat_password,為“確認(rèn)”按鈕添加事件監(jiān)聽(tīng),點(diǎn)擊“確認(rèn)”時(shí)比較新密碼及確認(rèn)密碼,兩密碼一致則進(jìn)入系統(tǒng)主顯示界面,否則提示“密碼不一致,然后返回;密碼不為空時(shí)只顯示password_manage,將用戶輸入的密碼和SharedPreferences存儲(chǔ)的密碼進(jìn)行比較,一致時(shí)進(jìn)入系統(tǒng)主顯示界面,否則提示“密碼輸入錯(cuò)誤”,然后返回。主要實(shí)現(xiàn)代碼如下:SharedPreferencespreferences=getSharedPreferences("password",MODE_PRIVATE);if(preferences.getString("value","0")==null||preferences.getString("value","0").equals("0")){text1.setVisibility(EditText.INVISIBLE);}else{text2.setVisibility(EditText.INVISIBLE);text3.setVisibility(EditText.INVISIBLE);view2.setVisibility(TextView.INVISIBLE);view3.setVisibility(TextView.INVISIBLE);}save.setOnClickListener(newOnClickListener(){//點(diǎn)擊事件@Override publicvoidonClick(Viewv){if(text1.getVisibility()==EditText.INVISIBLE)//通過(guò)密碼輸入框的可見(jiàn)性判斷當(dāng)前操作{if(!text2.getText().toString().equals(text3.getText().toString())){Toast.makeText(PassWord.this,"兩次輸入密碼不一致!",2000).show();}else{SharedPreferencespreferences=getSharedPreferences("password",MODE_PRIVATE);SharedPreferences.Editoreditor=preferences.edit();editor.putString("value",text2.getText().toString());mit();Intentit=newIntent(PassWord.this,Main.class);PassWord.this.startActivity(it);PassWord.this.finish();}}else{SharedPreferencespreferences=getSharedPreferences("password",MODE_PRIVATE);if(text1.getText().toString().equals(preferences.getString("value","0"))){Intentit=newIntent(PassWord.this,Main.class);PassWord.this.startActivity(it);PassWord.this.finish();}elseToast.makeText(PassWord.this,"密碼輸入錯(cuò)誤!",2000).show();}}});5.2.2主顯示界面密碼設(shè)置/輸入成功后程序進(jìn)入主顯示界面(Main.Activity),Main中進(jìn)行新建DBHelper,打開(kāi)數(shù)據(jù)庫(kù),通過(guò)adapter獲得所有聯(lián)系人的ListView,如沒(méi)有聯(lián)系人信息則設(shè)置Title為“沒(méi)有查到任何數(shù)據(jù)”,否則將所有信息顯示。長(zhǎng)按一聯(lián)系人時(shí)通過(guò)添加ListView的setOnItemLongClickListener實(shí)現(xiàn)標(biāo)記操作,單擊已聯(lián)系人時(shí)通過(guò)添加setOnItemClickListener實(shí)現(xiàn)Main到聯(lián)系人詳細(xì)信息UserDetail的跳轉(zhuǎn)。聯(lián)系人詳細(xì)界面中有修改、刪除和返回按鈕,在選擇修改功能后,聯(lián)系人的所有信息處于可編輯狀態(tài),修改完后點(diǎn)擊確定按鍵,觸發(fā)確定按鍵點(diǎn)擊監(jiān)聽(tīng)事件,從而對(duì)數(shù)據(jù)庫(kù)中該聯(lián)系人信息進(jìn)行更改,然后自動(dòng)返回系統(tǒng)主顯示界面。在聯(lián)系人列表中選擇某個(gè)聯(lián)系人點(diǎn)擊查看聯(lián)系人詳細(xì)信息,聯(lián)系人詳細(xì)信息一覽無(wú)余,同時(shí)在聯(lián)系人詳細(xì)信息界面下面添加通訊能鍵,這時(shí)的聯(lián)系人信息不可編輯,如果想要對(duì)聯(lián)系人進(jìn)行修改點(diǎn)擊修改功能鍵對(duì)聯(lián)系信息進(jìn)行修改。增加界面的布局文件整體為一個(gè)LinerLayout,具體布局如圖7所示。圖SEQ圖\*ARABIC7增加聯(lián)系人界面布局5.2.3刪除聯(lián)系人功能 刪除聯(lián)系人可有兩種不同的操作:=1\*GB2⑴使用聯(lián)系人詳細(xì)信息(UserDetail)界面下的“刪除”按鈕;=2\*GB2⑵選擇主界面底部Menu內(nèi)的“刪除”功能。在查看聯(lián)系人詳細(xì)信息時(shí),位置標(biāo)記常量在本聯(lián)系人位置,進(jìn)行刪除操作時(shí)連接數(shù)據(jù)庫(kù),根據(jù)位置常量的值完成刪除聯(lián)系人的操作。使用MENU菜單的“刪除”首先需要進(jìn)行聯(lián)系人的標(biāo)記,可一次標(biāo)記多條,然后根據(jù)數(shù)據(jù)庫(kù)里標(biāo)記常量的值對(duì)聯(lián)系人信息進(jìn)行刪除,若沒(méi)有標(biāo)記需刪除的聯(lián)系人,則通過(guò)一個(gè)Toast提示“沒(méi)有標(biāo)記任何記錄,長(zhǎng)按一條記錄可實(shí)現(xiàn)標(biāo)記”。5.2.4Menu功能Menu菜單位于主顯示界面的底部,當(dāng)選擇手機(jī)Menu鍵時(shí)菜單才可見(jiàn),為每個(gè)菜單選項(xiàng)綁定了一個(gè)圖標(biāo),并添加事件監(jiān)聽(tīng)實(shí)現(xiàn)其對(duì)應(yīng)功能,菜單具體內(nèi)容如圖8所示(為了試圖效果,功能測(cè)試圖片有使用Photoshop處理)。圖SEQ圖\*ARABIC8底部Menu菜單Menu的添加功能:添加聯(lián)系人是通訊錄中最基本的功能操作,在聯(lián)系人增加界面中點(diǎn)擊保存按鈕實(shí)現(xiàn)對(duì)聯(lián)系人信息的保存。后臺(tái)操作流程:首先在user類中定義一個(gè)user函數(shù)從表單中獲取數(shù)據(jù),建立數(shù)據(jù)庫(kù)幫助類,打開(kāi)數(shù)據(jù)庫(kù)并將user保存到數(shù)據(jù)庫(kù)中。增加界面如上文圖7所示。另外,對(duì)頭像的ImageButton添加事件監(jiān)聽(tīng),創(chuàng)建了一個(gè)Gallery,通過(guò)點(diǎn)擊頭像可實(shí)現(xiàn)頭像圖片的選擇。主要實(shí)現(xiàn)代碼如下:btn_save.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){//判斷姓名是否為空Stringname=et_name.getText().toString();if(name.trim().equals("")){Toast.makeText(AddNew.this,"姓名不能為空",Toast.LENGTH_LONG).show();return;}//從表單上獲取數(shù)據(jù)Useruser=newUser();user.username=name;user.address=et_address.getText().toString();pany=et_company.getText().toString();user.email=et_email.getText().toString();user.familyPhone=et_familyPhone.getText().toString();user.mobilePhone=et_mobilePhone.getText().toString();user.officePhone=et_officePhone.getText().toString();user.otherContact=et_otherContact.getText().toString();user.position=et_position.getText().toString();user.remark=et_remark.getText().toString();user.zipCode=et_zipCode.getText().toString();//判斷頭像是否改變,若改變,則用當(dāng)前的位置,若沒(méi)有改變,則用前一回的位置if(imageChanged){user.imageId=images[currentImagePosition%images.length];}else{user.imageId=images[previousImagePosition%images.length];}user.privacy=privacy;//創(chuàng)建數(shù)據(jù)庫(kù)幫助類DBHelperhelper=newDBHelper(AddNew.this);helper.openDatabase();//打開(kāi)數(shù)據(jù)庫(kù)longresult=helper.insert(user);//把user存儲(chǔ)到數(shù)據(jù)庫(kù)里//通過(guò)結(jié)果來(lái)判斷是否插入成功,若為-1,則表示插入數(shù)據(jù)失敗if(result==-1){Toast.makeText(AddNew.this,"添加失敗",Toast.LENGTH_LONG);}setTitle("用戶添加成功!");setResult(3);finish();}});btn_return.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){finish();}});imageButton.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){loadImage();//為gallery裝載圖片initImageChooseDialog();//初始化imageChooseDialogimageChooseDialog.show();}});}Menu的查找功能:在查找功能實(shí)現(xiàn)的過(guò)程中,先將搜索框中的內(nèi)容轉(zhuǎn)化為字符串形式,使用模糊查詢方法將字符串與數(shù)據(jù)庫(kù)中的每個(gè)user的username、username_py、phone、officephone、familyphone字符串進(jìn)行比較,其中username_py不是添加聯(lián)系人輸入的信息,是由username生成對(duì)應(yīng)的username_py,這需要向eclipse添加一個(gè)外jar包,通過(guò)調(diào)用此jar包提供的方法來(lái)實(shí)現(xiàn),同樣username_py不在聯(lián)系人詳細(xì)信息界面顯示,它的存在時(shí)查詢功能更加方便。在查詢search_edit中,如果輸入為空就設(shè)置顯示所有聯(lián)系人的列表,否則就建立一個(gè)數(shù)據(jù)庫(kù)幫且類,在數(shù)據(jù)庫(kù)中進(jìn)行查找匹配,返回到list列表中,將整合的adapter和listview結(jié)合展現(xiàn)出來(lái),并統(tǒng)計(jì)查找到的條數(shù)動(dòng)態(tài)的展現(xiàn)給用戶。查找功能主要實(shí)現(xiàn)代碼如下:if(searchLinearout==null){searchLinearout=(LinearLayout)findViewById(R.id.ll_search);et_search=(EditText)findViewById(R.id.et_search);search_btn=(Button)findViewById(R.id.search_btn);InputFilterinputFilter=newInputFilter(){publicCharSequencefilter(CharSequencesource,intstart,intend,Spanneddest,intdstart,intdend){try{intdestLen=dest.toString().getBytes("GB18030").length;intsourceLen=source.toString().getBytes("GB18030").length;Log.e("filter",String.valueOf(destLen+sourceLen));Stringcondition=source.toString();if(condition.equals("")){lv.setAdapter(adapter);}DBHelperhelper=newDBHelper(Main.this);list=helper.getUsers(condition,privacy);SimpleAdaptersearchAdapter=newSimpleAdapter(Main.this,list,R.layout.listitem,newString[]{"imageid","name","mobilephone"},newint[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone});lv.setAdapter(searchAdapter);//將整合好的adapter交給listview,顯示給用戶看if(list.size()==0){Drawablenodata_bg=getResources().getDrawable(R.drawable.nodata_bg);mainLinearLayout.setBackgroundDrawable(nodata_bg);setTitle("沒(méi)有查到任何數(shù)據(jù)");}else{setTitle("共查到"+list.size()+"條記錄");mainLinearLayout.setBackgroundDrawable(null);}returnsource;}catch(UnsupportedEncodingExceptione){e.printStackTrace();return"";}}};et_search.setFilters(newInputFilter[]{inputFilter});漢字轉(zhuǎn)拼音字符串實(shí)現(xiàn)的主要代碼如下:publicstaticStringgetPinYin(Stringsrc){6.2.5通訊功能測(cè)試在聯(lián)系人詳細(xì)信息界面,點(diǎn)擊menu鍵打開(kāi)通信功能菜單,然后選擇打電話、發(fā)信息、發(fā)郵件的功能通過(guò)接口套用識(shí)別號(hào)碼跳轉(zhuǎn)到相應(yīng)的功能。測(cè)試結(jié)果如圖18、圖19、圖20所示。由于模擬機(jī)沒(méi)有安裝gmail,功能測(cè)試時(shí)模擬機(jī)顯示“米有應(yīng)用程序可執(zhí)行此操作”。char[]t1=null;t1=src.toCharArray();String[]t2=newString[t1.length];//設(shè)置漢字拼音輸出的格式HanyuPinyinOutputFormatt3=newHanyuPinyinOutputFormat();t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);t3.setVCharType(HanyuPinyinVCharType.WITH_V);Stringt4="";intt0=t1.length;try{for(inti=0;i<t0;i++){//判斷能否為漢字字符if(Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")){t2=PinyinHelper.toHanyuPinyinStringArray(t1[i],t3);//將漢字的幾種全拼都存到t2數(shù)組中t4+=t2[0]+"";//取出該漢字全拼的第一種讀音并連接到字符串t4后}else{//如果不是漢字字符,間接取出字符并連接到字符串t4后t4+=Character.toString(t1[i]);}}}catch(BadHanyuPinyinOutputFormatCombinatione){e.printStackTrace();}returnt4;Menu的刪除功能:MENU的刪除功能及我們?cè)?.2.3中提到的第二種刪除操作方法。主界面底部Menu內(nèi)的“刪除”菜單功能為刪除標(biāo)記的聯(lián)系人信息,所以選擇此菜單時(shí)要先判斷是否有標(biāo)記信息,然后將標(biāo)記的聯(lián)系人進(jìn)行批量刪除。5.2.5MENU的菜單功能MENU的菜單功能包括顯示所有、刪除所有、備份數(shù)據(jù)、還原數(shù)據(jù)、修改密碼、更新和后退功能。具體布局如圖9所示。圖SEQ圖\*ARABIC9MENU菜單布局顯示所有:顯示所有與聯(lián)系人列表界面的思路一致,創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)幫助類從數(shù)據(jù)庫(kù)中獲得所有用戶的信息放到list,通過(guò)setAdapter將listview與adapter相結(jié)合展示出來(lái)。刪除所有:刪除所有是數(shù)據(jù)庫(kù)中deleteAll這個(gè)方法將數(shù)據(jù)全部刪除。備份數(shù)據(jù):備份文件時(shí)先AlertDialog.Builder來(lái)提示是否需要備份記錄到SD卡,如果點(diǎn)擊確定就通過(guò)helper.backupData(privacy);在數(shù)據(jù)庫(kù)中執(zhí)行備份的方法。還原數(shù)據(jù):通過(guò)指定備份文件的地址進(jìn)行數(shù)據(jù)還原。修改密碼:修改進(jìn)入系統(tǒng)密碼。修改密碼需輸入新密碼和確認(rèn)密碼,通過(guò)判斷新密碼和確認(rèn)密碼一致時(shí)完成密碼修改,并通過(guò)SharePreferences進(jìn)行保存。更新:更新contact版本。本系統(tǒng)若更新版本,用戶可通過(guò)此操作更新系統(tǒng)。后退:系統(tǒng)后退,返回MENU。5.2.6通訊功能通訊功能包括撥打電話、發(fā)送短信和發(fā)送郵件三個(gè)功能。為UserDetail添加一個(gè)底部菜單,如圖10所示。然后為每一個(gè)MenuItem添加事件監(jiān)聽(tīng)(調(diào)用Android系統(tǒng)的ACTION_CALL、ACTION_SENDTO和ACTION_SEND方法)實(shí)現(xiàn)其對(duì)應(yīng)通訊功能,其中發(fā)送郵件的功能在發(fā)送時(shí)需要調(diào)用gmail程序完成用戶的登錄才能完成發(fā)送郵件的操作,這就要求用戶在使用此軟件時(shí)必須安裝一個(gè)gmail才能使用該功能。圖SEQ圖\*ARABIC10UserDetail底部menu

6系統(tǒng)測(cè)試6.1系統(tǒng)測(cè)試實(shí)例系統(tǒng)測(cè)試就是利用測(cè)試工具按照測(cè)試方案和流程對(duì)系統(tǒng)進(jìn)行功能和性能測(cè)試,根據(jù)需要編寫(xiě)不同的測(cè)試工具,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),對(duì)測(cè)試方案可能出現(xiàn)的問(wèn)題進(jìn)行分析。根據(jù)功能需求和性能需求制定以下測(cè)試用例,測(cè)試用例如表2所示。表SEQ表\*ARABIC2測(cè)試用例ID用例描述操作步驟預(yù)期結(jié)果實(shí)際結(jié)果1聯(lián)系人增加功能1、選擇聯(lián)系人頭像2、輸入聯(lián)系人相關(guān)信息3、跳轉(zhuǎn)聯(lián)系人列表界面能實(shí)現(xiàn)聯(lián)系人增加功能符合預(yù)期2聯(lián)系人刪除功能1、聯(lián)系人詳細(xì)信息界面刪除2、通過(guò)底部菜單刪除鍵刪除3、對(duì)聯(lián)系人進(jìn)行標(biāo)記4、刪除全部聯(lián)系人聯(lián)系人信息成功刪除符合預(yù)期3聯(lián)系人查找功能1、輸入要查找聯(lián)系人的相關(guān)信息進(jìn)行查找成功查找出符合條件的聯(lián)系人符合預(yù)期4通訊功能1、聯(lián)系人詳細(xì)信息界面點(diǎn)擊menu彈出通訊功能界面2、通過(guò)對(duì)號(hào)碼和郵箱的識(shí)別進(jìn)行相應(yīng)的操作成功實(shí)現(xiàn)聯(lián)系人打電話、發(fā)信息、發(fā)郵件功能符合預(yù)期5通訊錄底部菜單功能增加聯(lián)系人查找聯(lián)系人刪除聯(lián)系人菜單退出功能鍵實(shí)現(xiàn)符合預(yù)期6菜單功能顯示全部刪除所有備份數(shù)據(jù)還原數(shù)據(jù)修改密碼更新后退顯示全部聯(lián)系人,成功,刪除所有成功,備份數(shù)據(jù)成功,還原數(shù)據(jù)成功,修改密碼成功。符合預(yù)期6.2系統(tǒng)測(cè)試結(jié)果6.2.1系統(tǒng)測(cè)試方法測(cè)試過(guò)程按4個(gè)步驟進(jìn)行,即單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試及發(fā)版測(cè)試。開(kāi)始是單元測(cè)試,集中對(duì)用源代碼實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測(cè)試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。集成測(cè)試把已測(cè)試過(guò)的模塊組裝起來(lái),主要對(duì)與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測(cè)試。確認(rèn)測(cè)試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說(shuō)明中確定了的各種需求,以及軟件配置是否完全正確。系統(tǒng)測(cè)試把已經(jīng)經(jīng)過(guò)確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測(cè)試。6.2.2密碼設(shè)置/驗(yàn)證功能測(cè)試密碼設(shè)置/驗(yàn)證功能分為密碼設(shè)置和密碼驗(yàn)證兩部分進(jìn)行功能測(cè)試,測(cè)試結(jié)果如圖11和圖12所示。圖SEQ圖\*ARABIC11密碼設(shè)置功能測(cè)試圖SEQ圖\*ARABIC12密碼驗(yàn)證功能測(cè)試(錯(cuò)誤)圖SEQ圖\*ARABIC13編輯聯(lián)系人功能測(cè)試圖SEQ圖\*ARABIC14查詢測(cè)試結(jié)果圖SEQ圖\*ARABIC15編輯聯(lián)系人中刪除聯(lián)系人6.2.3對(duì)聯(lián)系人的編輯、查找及刪除功能測(cè)試編輯聯(lián)系人功能測(cè)試:針對(duì)程序設(shè)計(jì)的功能設(shè)計(jì)進(jìn)行編輯聯(lián)系人的測(cè)試,測(cè)試結(jié)果如圖13編輯聯(lián)系人界面。查找聯(lián)系人功能測(cè)試:在聯(lián)系人列表顯示中,輸入姓名或者數(shù)字對(duì)聯(lián)系人進(jìn)行查找,程序自動(dòng)篩選符合條件的聯(lián)系人并將復(fù)核條件的聯(lián)系人動(dòng)態(tài)的顯示出來(lái),如果沒(méi)有符合條件的聯(lián)系人則不顯示。測(cè)試結(jié)構(gòu)如圖14、圖15所示。刪除聯(lián)系人功能測(cè)試:如圖16刪除界面在系統(tǒng)測(cè)試中對(duì)聯(lián)系人進(jìn)行刪除操作時(shí),可以通過(guò)對(duì)底部菜單框中刪除按鍵的點(diǎn)擊,或者聯(lián)系人詳細(xì)信息界面中刪除按鍵點(diǎn)擊,出現(xiàn)提示框詢問(wèn)“是否要?jiǎng)h除”。6.2.4備份數(shù)據(jù)功能測(cè)試當(dāng)點(diǎn)擊備份數(shù)據(jù)功能時(shí),會(huì)出現(xiàn)提示功能框“是否需要備份記錄到SD卡?”如圖16所示。按照提示選擇確定或者取消,選擇確定,備份成功并統(tǒng)計(jì)備份條數(shù),備份完成點(diǎn)擊“OK”返回主界面底部MENU顯示界面,如圖17所示。 圖SEQ圖\*ARABIC16備份數(shù)據(jù)提示圖SEQ圖\*ARABIC17備份功能完成圖SEQ圖\*ARABIC18打電話功能測(cè)試圖SEQ圖\*ARABIC19發(fā)短信功能測(cè)試圖SEQ圖\*ARABIC20發(fā)郵件功能測(cè)試6.2.5通訊功能測(cè)試在聯(lián)系人詳細(xì)信

溫馨提示

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