【正文】
return (menu)。 MenuItem item2 = (+1)。 MenuItem item1 = ()。 //為每一個 Item設(shè)置圖標(biāo) MenuItem item = ()。 (0, +1, 2, 發(fā)短信 )。 首先定義了 menu鍵,在 menu功能中制定了三個 menu鍵。 } public void onNothingSelected(AdapterView? arg0) { }})。 (new OnItemSelectedListener(){ public void onItemSelected(AdapterView? arg0, View arg1, int arg2, long arg3) { 滁州學(xué)院 畢業(yè)論文 24 // TODO Autogenerated method stub currentImagePosition = arg2 % 。 is = (ImageSwitcher)()。 (new ImageAdapter(this))。 imageChooseView = (, null)。 } } 通過選擇圖像后將會將選擇后的圖像載入到聯(lián)系人中,具體是功能實現(xiàn)需要如下代碼來實現(xiàn),通過用戶的不同的選擇將代碼載入到聯(lián)系人中。 } })。 (images[currentImagePosition%])。 (請選擇圖像 ) .setView(imageChooseView).setPositiveButton(確定 , new () { public void onClick(DialogInterface dialog, int which) { imageChanged = true。如下為用戶的圖像的載入操作,通過選擇可以載入不同的圖像。 } } return (keyCode, event)。 } ()。amp。 public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == ) { loadBottomMenu()。 int[] bottom_menu_itemSource = { , , , , , }。 String[] bottom_menu_itemName = { 增加 , 查找 , 刪除 , 菜單 ,退出 }。 String[] main_menu_itemName = { 顯示所有 , 刪除所有 }。 數(shù) 據(jù)庫設(shè)計和模塊設(shè)計后,至此程序設(shè)計階段基本完成 。之所以這么簡單,一方面可以避免因網(wǎng)絡(luò)通信不暢造成界面失去響應(yīng);另一方面,后臺服務(wù)可以及時更新數(shù)據(jù),以保證數(shù)據(jù)的準(zhǔn)確性。后臺服務(wù)在程序啟動時就由 AppWidgetProvider 啟動,也可由用戶界面通過startService()進行啟動,啟動后的后臺服務(wù)將一直保持運行狀態(tài)。 } 通過對數(shù)據(jù)庫的詳細描述,我們知道了一個數(shù)據(jù)庫的建立,和查找,刪除,列表,標(biāo)記等操作的實現(xiàn)。 } else { return false。 } else { file = new File(SDPATH + zpContact/+fileName + .bk)。 File file = null。 } } BufferedReader br = new BufferedReader(new FileReader(file))。 } 為了將用戶的數(shù)據(jù)存儲到 文件 中我們進行了如下的操作: private void saveDataToFile(String strData,boolean privacy) { } 這條命令的含義就是將用戶的數(shù)據(jù)存儲到 文件 中。 } } (DB_TABLENAME, (), null)。i++) { if(i!=()1) { 滁州學(xué)院 畢業(yè)論文 20 ((i) + or _id=)。 for(int i=0。 public void deleteMarked(ArrayListInteger deleteId) { StringBuffer strDeleteId = new StringBuffer()。 } public void deleteAll(int privacy) { (DB_TABLENAME,privacy=?,new String[]{(privacy)})。 return (DB_TABLENAME, null, values)。 (imageid, )。 (zipcode, )。 (position, )。 (othercontact, )。 (familyphone, )。 (mobilephone, )。 對應(yīng)于數(shù)據(jù)庫的操作我首先定義了各個值: public long insert(User user) { ContentValues values = new ContentValues()。應(yīng)用程序在不同的進程中運行,因此,數(shù)據(jù)和文件在不同的應(yīng)用程序之間是不能夠直接進行訪問的。 AndroidContact工程源代碼的結(jié)構(gòu)如圖 410所示。 Android自帶一個 ContentProvider封閉類 專門來存儲信息,存放媒體信息如 TITLE(標(biāo)題 )、 BODY(詳細內(nèi)容)、 SIZE(大小 ),字段說明如表 49。 圖 48 數(shù)據(jù)庫體系結(jié)構(gòu) 滁州學(xué)院 畢業(yè)論文 18 Database 主要是保存文本的名字、類型、內(nèi)容。 且 表的設(shè)計應(yīng)盡量簡單,不要有錯綜復(fù)雜的關(guān)系,每張表都是獨立的,不存在任何約束,數(shù)據(jù)庫也是獨立數(shù)據(jù)庫,不采用 Android特有的可共享數(shù)據(jù)庫 。它能夠支持 Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、 PHP、 Java 等,還有 ODBC 接口,同樣比起 Mysql、 PostgreSQL 這兩款世界著名開源的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快 [23]。 Android 數(shù)據(jù)庫使用的是 SQLiteDatabase,我們來簡單的介紹下 Android 平 臺上的SQLiteDatabase 。數(shù)據(jù)庫中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲,具有較小的重復(fù)度、較高的數(shù)據(jù)獨立性和易擴展性,并且可以被在一定范圍內(nèi)的各種用戶共享。 數(shù)據(jù)庫,顧名思義,是存放數(shù)據(jù)的倉庫。要考慮到不同手機屏幕大小可能不一樣,應(yīng)盡量兼容大多數(shù)手機屏幕尺寸,使之顯示無障礙。 其他功 能 : 手機通訊錄不光 可以 存儲查找刪除等功能還要可以打電話、發(fā)信息、發(fā)郵件 , 通訊錄的基本控制圖如下 42所示: 滁州學(xué)院 畢業(yè)論文 14 圖 42 通訊錄基本控制圖 系統(tǒng)模塊劃分 系統(tǒng)設(shè)計階段的主要任務(wù)是將需求分析階段所總結(jié)出來的反映了用戶需求的系統(tǒng)邏輯模型轉(zhuǎn)換成可以實施的物理模型,主要解決如何去做的問題 ,如圖 43所示 : 圖 43 系統(tǒng)模塊劃分圖 系統(tǒng)界面 繪制 通訊錄 創(chuàng)建通訊錄 通訊錄管理 通訊錄查詢 添加信息 修改信息 刪除信息 顯示記錄 姓名查詢 號碼查詢 信息存入文件 手機 添加聯(lián)系人 查找聯(lián)系人 修改聯(lián)系人 刪除聯(lián)系人 打電話 發(fā)信息 發(fā)郵件 滁州學(xué)院 畢業(yè)論文 15 通訊錄界面要求布局合 理,簡約,顏色舒適,控制按鈕簡單明了,能讓用戶一眼就能看出各個按鈕的作用及操作方法。 修改聯(lián)系人 : 可以根據(jù)需要修改聯(lián)系人的所有信息。 查找聯(lián)系人 : 可以輸入聯(lián)系人名字或者手機來查找聯(lián)系人的信息,方便用戶快速找到聯(lián)系人,查詢結(jié)果顯示在當(dāng)前頁。 優(yōu)化完善: 對解決同一問題的幾個不同的程序 ,進行比較、修改、調(diào)整或重新編寫程序,把一般程序變換為語句最少、占用內(nèi)存量少、處理速度最快、外部設(shè)備分時使用效率最高的最優(yōu)程序 。 運行測試: 利用測試工具按照測試方案和流程對產(chǎn)品進行功能和性能測試,根據(jù)需要編寫不同的測試工具,設(shè)計和維護測試系統(tǒng),對測試方案可能出現(xiàn)的問題進行分析和評估。是保證計算機信息系統(tǒng)能正確運行的不可少的步驟。 調(diào)試程序: 將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤。概要設(shè)計需要對軟件系統(tǒng)的設(shè)計 進滁州學(xué)院 畢業(yè)論文 13 行考慮,包括系統(tǒng)的基本處理流 程、系統(tǒng)的組織結(jié)構(gòu)、模塊劃分、功能分配、接口設(shè)計、 運行設(shè)計、數(shù)據(jù)結(jié)構(gòu)設(shè)計和出錯處理設(shè)計等,為軟件的詳細設(shè)計提供基礎(chǔ)。這次的文檔會清楚利用系統(tǒng)大致的大功能模塊,大功能模塊有哪些小功能模塊,并且還列出相關(guān)的界面和界面功能。 圖 41 開發(fā)流程圖 調(diào)查研究 : 相關(guān)系統(tǒng)分析員初步了解需求,然后用 WORD列出要開發(fā)的系統(tǒng)的大功能模塊,每個大功能模塊有哪些小功能模塊,對于有些需求比較明確相關(guān)的界面時,在這一步里面可以初步定義好少量的界面。這些操作包括讀取用戶的隱私數(shù)據(jù),訪問網(wǎng)絡(luò),保持設(shè)備活動等等,應(yīng)用程序的進程是一個安全的黑盒子,在沒有給它權(quán)限的時候它不能干擾其他應(yīng)用程序 [17]。利用通知,你的應(yīng) 用可以通過在狀態(tài)條上顯示一個圖標(biāo)來通知用戶事件已經(jīng)發(fā)生,而非獲得焦點和打斷用戶。那樣的行為可能對你的應(yīng)用或用戶不起作用。然而,當(dāng)你的應(yīng)用在真正的設(shè)備上運行,后臺線程顯示對話框時,你的應(yīng)用當(dāng)時可能沒有獲得用戶焦點。 (2)快速響應(yīng) 快速處理用戶的輸入或請求,對于需要長時間處理的部分,在其處理時可以給用戶一個提示,告知用戶該軟件正在運行。其功能需求主要包括以下幾方面內(nèi)容,業(yè)務(wù)流程如圖 31所示: 圖 31 業(yè)務(wù)流程圖 不同 View之間的切換功能 , 用戶通過手指的 左右滑動來切換不同的視圖,方便用戶在不同視圖中查看信息和行操作。 ④在 Windows XP 的系統(tǒng)變量中的 path變量中添加一個值,該值指向解壓后的 Android SDK 目錄下的 tools文件夾。過一會就會出現(xiàn)一個 Developer Tools選項,勾上以后點擊 Next以后 Eclipse會自動網(wǎng)上查找 Android 開發(fā)工具插件,然后要到 Android DDMS和 Android Development Tools,選中這兩個點擊 Finish, Eclipse就會自動下載并安裝 Android插件了,最后會提示重啟 Eclipse[21]。第一步下載工序就結(jié)束了 [20]。 (1) Java SDK (2) Eclipse (3) Android SDK (4) ADT Android開發(fā)平臺搭建步驟: ①首先到 Eclipse 集成開發(fā)環(huán)境并且解壓,這里推薦下載 Java EE 集 成 版 本 , 可 以 為 平 臺 的 搭 建 省 下 不 少 工 作 。同時,還需要在 Eclipse 安裝 ADT,為 Android開發(fā)提供開發(fā)工具的升級或者變更,是 Eclipse 下開發(fā)工具的升級下載的工具 [19]。只有 Eclipse 還不夠,因為是使用 Java 語言進行開發(fā),還應(yīng)該有由 SUN公司提供的 Java SDK(其中包括 JRE: Java Runtime Environment)。當(dāng)應(yīng)用程序需要使用存儲設(shè)備中的數(shù)據(jù)時,可以使用 Content Provider 來完成。本系統(tǒng)客戶端擴展功能的 文本編輯器就是采用 Service 來進行設(shè)計和開發(fā)的。 Service Service 是提供連續(xù)信息的應(yīng)用程序。如在本系統(tǒng)中,當(dāng)用戶 正在其它界面進行操作時,有好友發(fā)送消息過來,就會以通知的形式發(fā)送到當(dāng)前界面的正上方來通知用戶。 A c t i v i t y S t a r t so n C r e a t e ( )o n S t a r t ( )N e w A c t i v i t y i s s t a r t e do n R e s u m e ( )A c t i v i t y i s r u n n i n go n S t o p ( )Y o u r A c t i v i t y i s n o l o n g v i s i b l eo n P a u s e ( )o n D e s t r o y ( )A c t i v i t y i s s h u t d o w nU s e r n a v i g a t e s b a c k t o y o u r A c t i v i t yP r o c e s s i s k i l l e dO t h