




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 畢業(yè)設(shè)計(論文) 題目:基于Android平臺記事本的設(shè)計與實現(xiàn)姓 名: 學(xué) 號: 系 (院):信息工程系 班 級: 指導(dǎo)教師: 職 稱: 講師 二O一四 年 五 月 二十 日淄博職業(yè)學(xué)院信息工程系畢業(yè)設(shè)計 目 錄第一章 引言31.1研究目的及意義31.2 國內(nèi)外研究現(xiàn)狀分析31.3 發(fā)展趨勢41.4 可行性分析51.5 基本內(nèi)容6第二章 開發(fā)環(huán)境的安裝和配置72.1開發(fā)包及其工具的介紹72.2 Android開發(fā)平臺搭建步驟:82.3硬件環(huán)境92.4軟件環(huán)境92.5 系統(tǒng)架構(gòu)92.6 工程主體架構(gòu)11第三章系統(tǒng)的設(shè)計133.1功能需求133.1.1用戶觸發(fā)事件133.1.2記事本基本需求控
2、制133.2系能需求143.2.1響應(yīng)時間143.2.2穩(wěn)定性143.2.3安全性14第四章程序的設(shè)計154.1 記事本組件的設(shè)計154.2 記事本邏輯設(shè)計154.3記事本存儲實現(xiàn)154.3.1數(shù)據(jù)存儲之sharedPreferences164.3.2數(shù)據(jù)存儲之files164.3.3數(shù)據(jù)存儲之network184.3.4數(shù)據(jù)存儲之SQLite194.3.5 數(shù)據(jù)存儲之ContentProviders22第五章程序的開發(fā)225.1主activity的設(shè)計225.2編輯內(nèi)容235.3刪除記事25第六章 系統(tǒng)的測試256.1 添加新記事256.2 查看記事296.3 刪除/修改/刪除記事30第七章
3、 總結(jié)31參考文獻(xiàn)32致 謝33 第一章 引言1.1研究目的及意義這次課題的目的是在Android系統(tǒng)的手機(jī)開發(fā)平臺之上,研究與開發(fā)一個記事本軟件,提供適用手機(jī)的記事本功能服務(wù)。首先,記事本的基本功能就是記事,手機(jī)用戶首先用到的就是文本記事,輸入事務(wù)信息以文本的形式展現(xiàn)出來,存儲起來。隨著用戶需求的增加,可能希望用圖形來代替文本來記事,用戶之間打開記事本,看到圖片就能聯(lián)系自己所記載的事務(wù)信息。這樣免去了輸入文字的麻煩,反而會更簡單。又或者是文本與圖片的交叉運(yùn)用,可以讓用戶自己選擇自己喜歡的記事方式,更加自由與便捷。所以此功能的意義是讓簡單的記事信息能以文本和圖形表達(dá),更加豐富多彩。其次,在支持
4、傳統(tǒng)的文字記事方式下,還要支持語音記事。因為用戶需要追求更加簡單的記事方式,不需要手動輸入文字,而是直接語音記事。語音直接保存,有利于下次用戶直接查看時點(diǎn)擊按鈕就可以播放相應(yīng)的錄音信息了。這對于某些眼睛不太好的,或者說更喜歡聽的用戶是很有吸引力的。再次,如果記事本的信息很多,而用戶又需要快速找到自己需要的記事信息,這時候內(nèi)容檢索就非常有用了。對于業(yè)務(wù)繁忙,或者是經(jīng)常寫備忘錄記事的群體,這個內(nèi)容檢索功能能帶給用戶很多的便利。讓他們更加高效的利用手機(jī),節(jié)約時間,高效工作與生活。最后,針對商務(wù)人士,或者是經(jīng)常使用郵箱的用戶來說,有時候希望通過查看郵箱的同時查看記事本的信息,一次性獲取全部。所以記事本
5、同步郵箱功能能夠為用戶帶來更多的功能與便利。1.2 國內(nèi)外研究現(xiàn)狀分析目前國內(nèi)外有4款比較火的記事本軟件。分別是Evernote,小米便簽,NoteEverything,麥庫記事。Evernote 在軟件界面方面界面清爽,需注冊登錄后才可使用,圖標(biāo)布局比較協(xié)調(diào);記事筆記方面可編寫內(nèi)容,添加標(biāo)簽,支持上傳圖片、音頻、視頻、文件等附件;特色功能方面具有搜索筆記和發(fā)送筆記、定位服務(wù)、同步等功能;資源占用方面內(nèi)存占最多,CPU占用適中。小米便簽在軟件界面方面界面功能簡單,可查看和新建便簽,菜單功能相對豐富;記事方面只支持文字內(nèi)容,可以選擇桌面Widget顏色、字體大小等;特色功能方面可以移進(jìn)文件夾和分
6、享、備份、還原和設(shè)置保護(hù)密碼;資源占用方面內(nèi)存占用較中,CPU占用最少。Note Everything界面簡潔,上方有新建記事和搜索等按鈕,菜單功能非常豐富;支持文本、繪圖、語音、圖片、清單、圖庫、視頻、條形碼等形式,可固定顯示記事;特色是單個記事加密,數(shù)據(jù)備份、還原、導(dǎo)入、到處,創(chuàng)建快捷方式;內(nèi)存占用最少,CPU占用較中。麥庫記事界面比較精美,菜單功能相對簡單;可選分類、加標(biāo)簽、附件,支持拍照和實時錄音。特色是筆記搜索和分類,網(wǎng)絡(luò)同步和筆記分享;內(nèi)存占用適中,CPU占用最多。1.3 發(fā)展趨勢隨著3G應(yīng)用的不斷開發(fā)推廣,用戶會越來越需要更加個性化、優(yōu)質(zhì)化的多媒體數(shù)據(jù)服務(wù),用戶希望能夠隨時、隨地
7、無縫利用3G網(wǎng)絡(luò)進(jìn)行辦公、網(wǎng)上交易、游戲娛樂、欣賞影視節(jié)目、收聽和下載音樂等。根據(jù)觀察,在不久的將來,移動手機(jī)終端將會在以下若干方面具有新的發(fā)展。 首先,提供智能提醒服務(wù),手機(jī)能夠與用戶實現(xiàn)密切配合,并監(jiān)控用戶的個性化設(shè)置(保持在本地或者云端),當(dāng)重要時間點(diǎn)或關(guān)鍵事物需要用戶注意時,手機(jī)會向用戶發(fā)出“提醒”服務(wù),服務(wù)包括日程提醒、交通狀況、最佳行車路線、最佳泊位、優(yōu)惠活動、實時新聞、體育賽事、天氣情況、股市行情、好友活動、親友生日等。 其次,提供虛擬現(xiàn)實體驗,手機(jī)可以借助傳感器、周邊設(shè)備了解到您的身邊環(huán)境,并根據(jù)收集到的信息,智能的為您提供有用的信息,如在網(wǎng)絡(luò)世界養(yǎng)的寵物,
8、可以借助音頻設(shè)備表達(dá)叫聲,借助馬達(dá)和位置傳感器等傳遞其跳、躍等行為信息;也可以在用戶購物時,提供相關(guān)的同類產(chǎn)品價格參考,提醒用戶附近的那個賣場更物美價廉;根據(jù)實際場景,為用戶及時提供正在操控的產(chǎn)品的使用方法提醒。 接著,發(fā)揮物聯(lián)網(wǎng)的優(yōu)勢,借助無處不在的傳感器,可以感知并分享到周圍世界的海量信息,這些信息將在“云端”得到整合,幫助用戶及時、準(zhǔn)確的獲得氣息信息、交通路況。另外借助物聯(lián)網(wǎng),用戶間可以方便、快速的分享資源,協(xié)助和交互。如進(jìn)行端到端的多人游戲、照片分享、書籍分享、音樂分享等。 然后,作為經(jīng)濟(jì)工具,在交通或者信息不發(fā)達(dá)的情況下,幫助用戶找到最佳的市場,獲得有價值的幫助信
9、息,幫助用戶從事的經(jīng)濟(jì)活動的收益率。 最后,更加智能、安全的設(shè)備,隨著智能手機(jī)的不斷普及和更加智能,手機(jī)軟件的更新、升級將會變得越發(fā)簡單,并會為用戶提供工具或信息,讓用戶有能力和權(quán)力決策那些內(nèi)容可以瀏覽、下載或分享。在安全性上也將更加出色,能夠十分有效的幫助用戶進(jìn)行獲取到的內(nèi)容的管理,保護(hù)用戶的個人隱私和基于手機(jī)的金融活動如電子錢包、在線支付、在線貿(mào)易等。1.4 可行性分析)技術(shù)可行性-本項目僅需要一臺裝有eclipse及配置好android開發(fā)環(huán)境的計算機(jī)即可,對計算機(jī)本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系統(tǒng)。 2) 經(jīng)濟(jì)可行
10、性-由于本軟件開發(fā)只有一個單個人,一臺電腦就行,基本不需要太大的成本。在經(jīng)濟(jì)上完全可行。3) 操作可行性-界面設(shè)計時充分考慮用戶的習(xí)慣以及手機(jī)方面的局限性,程序必須要很簡單;本程序只涉及到開發(fā)環(huán)境配置,安卓組件的熟悉,以及安卓平臺上的數(shù)據(jù)存儲。并沒有太大的難度,所以,該項目完全有可操作性。1.5 基本內(nèi)容基本內(nèi)容是在android手機(jī)平臺下,研究與開發(fā)記事本軟件。具體要設(shè)計與實現(xiàn)的功能是:(1) 設(shè)計實現(xiàn)”添加新記事”,”編輯內(nèi)容”,”刪除當(dāng)前記事”這三個主要的功能模塊。 (2) 分析并解決實現(xiàn)中的若干技術(shù)問題,像組件的選擇以及保存方式的選擇。 (3)進(jìn)行測試并分析結(jié)果。當(dāng)然記事本的基本功能,
11、建立新文件,修改現(xiàn)有文件,刪除文件,查看已建立文件等功能是首先必須完成的。可以編寫內(nèi)容,編輯及刪除,除了支持文字內(nèi)容的記事,還支持圖片等形式,讓記事的方式多樣化。事本軟件的界面設(shè)計力求簡潔,給人清爽的感覺,讓圖標(biāo)及按鈕以協(xié)調(diào)的布局呈現(xiàn)出了,菜單功能要相對簡單,讓用戶操作方便,不能復(fù)雜。對于記事本的特色功能實現(xiàn)是要支持語音記事,讓用戶有不同的記事體驗;同時還能夠搜索筆記,在紛繁復(fù)雜的記事文件中搜索出用戶想要獲取的文件,這樣給用戶的備忘生活帶來了高效,從而讓用戶體會到此款軟件的實用。并且能夠?qū)嵙?xí)同步郵箱功能,讓用戶在電腦上或手機(jī)上查收郵件能夠看到記事信息,這是功能的多方便利。記事本軟件要內(nèi)存占用適
12、中,CPU占用也是適中,這樣讓軟件運(yùn)行順暢。第二章 開發(fā)環(huán)境的安裝和配置2.1開發(fā)包及其工具的介紹Android以java作為開發(fā)語言,jdk是進(jìn)行java開發(fā)時必需的開發(fā)包。eclipse是一款非常優(yōu)秀的開源IDE,在大量插件的”配合”下,完全可以滿足從企業(yè)級java應(yīng)用到手機(jī)終端java游戲的開發(fā)。Google官方也提供了基于Eclipse的android開發(fā)插件ADT,所以本軟件開發(fā)選擇Eclipse作為開發(fā)IDE。Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由谷歌公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)
13、較多人使用“安卓”或“安智”Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視,數(shù)碼相機(jī),游戲機(jī)等。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺手機(jī)的全球市場
14、份額已經(jīng)達(dá)到78.1%。2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺。JDK包含的基本組件包括:javac 編譯器,將源程序轉(zhuǎn)成字節(jié)碼jar 打包工具,將相關(guān)的類文件打包成一個文件javadoc 文檔生成器,從源碼注釋中提取文檔jdb debugger,查錯工具java 運(yùn)行編譯后的java程序(.class后綴的)appletviewer:小程序瀏覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。Javah:產(chǎn)生可以調(diào)用Java過程的C過程,或建立能被Java程序調(diào)用的C過程的頭文件。Javap:Java反匯
15、編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時顯示字節(jié)代碼含義。Jconsole: Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具Eclipse是一個開放源代碼的軟件開發(fā)項目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術(shù)項目三個項目組成,具體包括四個部分組成Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴(kuò)展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)。Ec
16、lipse Platform允許工具建造者獨(dú)立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結(jié)束,而另一個工具功能在哪里開始。2.2 Android開發(fā)平臺搭建步驟: 首先到/downloads/下載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載Java EE 集成版本,可以為平臺的搭建省下不少工作。接著再去/javase/downloads/index。jsp 站點(diǎn)下載SDK后安裝,下載/android/android-sdk-windows-1。5_r1。zip
17、,Android SDK1。5后解壓。第一步下載工序就結(jié)束了。雙擊Eclipse解壓后目錄中的eclipse。exe然后啟動,選擇Eclipse菜單中的Help-> Install New Software-> 選項卡上的Available Software,點(diǎn)擊右側(cè)的“Add”輸入/android/eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個Developer Tools選項,勾上以后點(diǎn)擊Next以后Eclipse會自動網(wǎng)上查找Android 開發(fā)工具插件,然后找到Android
18、 DDMS和Android Development Tools,選中這兩個點(diǎn)擊Finish,Eclipse就會自動下載并安裝Android插件了,最后會提示重啟Eclipse。重啟后選擇Eclipse菜單中的Windows-> Preferences 在左側(cè)的Android項目中SDK Location中填入Android SDK解壓后的目錄,然后點(diǎn)擊Apply。 在WindowsXP的系統(tǒng)變量中的path變量中添加一個值,該值指向解壓后的Android SDK目錄下的tools文件夾。2.3硬件環(huán)境1. Android設(shè)備,如Android手機(jī)或平板電腦:主頻在1Ghz及以上,內(nèi)存為5
19、12MB以上,系統(tǒng)版本為Android2.1及以上。2.在eclipse平臺下安卓了安卓android SDK 插件的電腦:Window 系統(tǒng) P4 1.8主頻以上電腦2.4軟件環(huán)境1.操作系統(tǒng):Windows7 2.IDE:Eclipse8.03.Android SDK集成環(huán)境2.5 系統(tǒng)架構(gòu)Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用分層的架構(gòu)如下圖:圖2.5-Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)分層的架構(gòu)從架構(gòu)圖看,Android分為四個層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層。應(yīng)用程序Android會同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包
20、包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語言編寫的。應(yīng)用程序框架開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計簡化了組件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便的替換程序組件。隱藏在每個應(yīng)用后面的是一系列的服務(wù)和系統(tǒng), 其中包括;豐富而又可擴(kuò)展的視圖(Views),可以用來構(gòu)建應(yīng)用程序, 它包括列表(Lists),網(wǎng)格(Grids),文本框(Text boxes),按鈕(Buttons),
21、甚至可嵌入的web瀏覽器。內(nèi)容提供器(Content Providers)使得應(yīng)用程序可以訪問另一個應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫), 或者共享它們自己的數(shù)據(jù)資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layout files )。通知管理器 (Notification Manager) 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息?;顒庸芾砥鳎?Activity Manager) 用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。系統(tǒng)運(yùn)行庫Android 包含一些C/C+庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過 A
22、ndroid 應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫:(1)系統(tǒng) C 庫一個從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫 Libc ), 它是專門為基于Embedded linux的設(shè)備定制的。(2)媒體庫 基于PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。(3)Surface Manager 對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提 供了2D和3D圖層的無縫融合。(4)LibWebCore 一個最新的web瀏覽器引擎用,支持Android瀏覽器和
23、一個可嵌入的web視圖。2.6 工程主體架構(gòu)工程主體架構(gòu)如下圖所示:1.str文件夾Str文件夾下com.samplenote包下Java為系統(tǒng)主要Activity類:AddActivity.java是增加功能的Activity,通過設(shè)置兩個按鈕的監(jiān)聽來實現(xiàn)對輸入文本的存儲或退出。DbAdapter.java是數(shù)據(jù)庫基本操作功能實現(xiàn)的Activity,類中主要的函數(shù)實現(xiàn)的功能是:打開、關(guān)閉數(shù)據(jù)庫,獲得時間,插入數(shù)據(jù),刪除輸入,獲得數(shù)據(jù),查詢數(shù)據(jù),更新數(shù)據(jù),根據(jù)內(nèi)容生成標(biāo)題,創(chuàng)建表和刪除表。NotepadCheckActivity.java是在系統(tǒng)界面中生成記事列表的Activity。通過onC
24、reate函數(shù)實現(xiàn)。NotPadActivity.java為系統(tǒng)主要功能實現(xiàn)的Activity。通過監(jiān)聽的方法來實現(xiàn)記事的刪除、編輯、搜索和短信發(fā)送功能。2.gen文件夾gen文件夾是項目自動生成的文件夾R.java是工程下各個資源的標(biāo)識符負(fù)責(zé)所有資源的索引。3.bin文件夾bin文件夾是編譯后的字節(jié)碼存放的目錄,編譯的過程首先是編譯成為android java虛擬機(jī)文件classes.dex,再打包成APK格式的包。4.res文件夾Res是資源目錄,res資源目錄,它包含項目中的資源文件并將其編譯進(jìn)應(yīng)用程序中,向此目錄添加資源時,會被R.java自動記錄。res目錄存放所有程序中用到的資源文
25、件?!百Y源文件”指的資料文件、圖片等。子目錄有:drawable、layout、values。 layout。屏幕布局目錄, main.xml是主界面的布局文件、add.xml是增加數(shù)據(jù)頁面的布局文件、check_notepad.xml是搜索功能時的布局文件、click.xml是幾個功能按鈕的布局文件、list.xml是顯示記事列表界面的布局文件、modtitle.xml是修改功能時所需文本框的布局文件。 values。參數(shù)值目錄,存放軟件所需要顯示的各種文字和一些數(shù)據(jù)。strings.xml存放各種文字,還可以存放不同類型的數(shù)據(jù)。style.xml負(fù)責(zé)存放界面顏色、文本框大小等信息。5.An
26、droidManifest.xmlAndroidManifest.xml描述了package中暴露的組件(activities, services, 等等),他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。 除了能聲明程序中的Activities, ContentProviders, Services, 和Intent Receivers。第三章系統(tǒng)的設(shè)計3.1功能需求3.1.1用戶觸發(fā)事件用戶通過點(diǎn)擊屏幕來實現(xiàn)與數(shù)據(jù)的交互。記事本上的相關(guān)按鈕是操作請求的輸入設(shè)備,屏幕是用于向用戶輸出信息的輸出設(shè)備。事件是來自人操作的重要的消息,觸發(fā)時間如下表所示記事本系統(tǒng)中可能發(fā)生的所有事件響應(yīng)及其執(zhí)行結(jié)果
27、。事件系統(tǒng)響應(yīng)執(zhí)行結(jié)果1從手機(jī)屏幕點(diǎn)擊軟件系統(tǒng)調(diào)用函數(shù)入口,啟動系統(tǒng),進(jìn)入該軟件進(jìn)入該軟件,顯示記事列表2點(diǎn)擊Menu,選擇添加記事調(diào)用添加函數(shù)進(jìn)入添加界面3點(diǎn)擊其中一個記事調(diào)用查看記事函數(shù)進(jìn)入詳細(xì)界面4在記事詳細(xì)界面點(diǎn)擊Menu,可對記事進(jìn)行修改編輯調(diào)用修改函數(shù)進(jìn)入修改界面5在記事詳細(xì)界面點(diǎn)擊Menu,可對記事進(jìn)行刪除調(diào)用刪除函數(shù)刪除記事6在記事列表界面點(diǎn)擊Menu,選擇退出調(diào)用退出函數(shù)退出軟件3.1.2記事本基本需求控制系統(tǒng)用例圖描述的是用戶眼中的系統(tǒng),即用戶希望系統(tǒng)有哪些功能和通過哪些操作完成這些功能。一個用例代表用戶與系統(tǒng)交互的一種方式。正如前面介紹過的,識別用例的最好方法是從參與者的
28、角度分析系統(tǒng)。在Android記事本中,首先的參與者是用戶。系統(tǒng)E-R圖如下圖所示,它從用戶角度描述了該系統(tǒng)應(yīng)該具有何種功能。3.2系能需求3.2.1響應(yīng)時間一般來說,基于Android開發(fā)出來的應(yīng)用程序響應(yīng)時間很大程度上依賴于安卓設(shè)備的硬件配置和系統(tǒng)版本。因此,用戶的安卓設(shè)備的硬件配置和系統(tǒng)版本都會對應(yīng)用程序的響應(yīng)時間又一定的影響。3.2.2穩(wěn)定性應(yīng)用程序為本地應(yīng)用,用戶只需通過自己的硬件就可以使用應(yīng)用。3.2.3安全性Android為開源系統(tǒng)本身比較穩(wěn)定,同時應(yīng)用程序無需連接網(wǎng)絡(luò)因此不存在信息網(wǎng)絡(luò)泄露的風(fēng)險。第四章程序的設(shè)計4.1 記事本組件的設(shè)計本項目涉及到以下組件:TextView:“
29、記事本”,“新建記事”,“編輯記事”等標(biāo)題EditView:“記事本的標(biāo)題”,“內(nèi)容”等Button:“確定”按鈕Menu:“添加新記事”,“編譯內(nèi)容”,“刪除當(dāng)前記事”等 4.2 記事本邏輯設(shè)計 1.首先是添加新記事:如果當(dāng)前沒有記事,點(diǎn)擊”menu”后只有一個菜單選項”添加新記事”,寫完記事之后,點(diǎn)擊”確定”進(jìn)行保存2.”編輯內(nèi)容”: 選中要編輯的那一個記事,然后點(diǎn)擊”menu”菜單,會出現(xiàn)三個選項”新建記事”,” 編輯內(nèi)容”,”刪除當(dāng)前記事”,點(diǎn)擊”編輯內(nèi)容”對被選中的記事進(jìn)行編輯,然后點(diǎn)擊”確定”加以保存.3.”刪除記事”點(diǎn)擊上下鍵,選中要刪除的記事,然后點(diǎn)擊”menu”菜單,然后點(diǎn)擊
30、”刪除當(dāng)前記事”,對選中的記事加以刪除. 4.3記事本存儲實現(xiàn)Android 中一共提供了5種數(shù)據(jù)存儲方式,但是由于存儲的這些數(shù)據(jù)都是其應(yīng)用程序私有的,所以如果需要在其他應(yīng)用程序中使用這些數(shù)據(jù).就要使用android提供的ContentProviders. ContentProviders:Android提供的一個特殊的存儲數(shù)據(jù)的類型,它提供了一套標(biāo)準(zhǔn)的接口來獲取,操作數(shù)據(jù). Shared Preference:用來存儲”key-value paires”格式的數(shù)據(jù),它是一個輕量級的鍵值存儲機(jī)制,只可以存儲基本數(shù)據(jù)類型.Files:它通過FileInputStream 和 FileOutput
31、Stream對文件進(jìn)行操作.但是在Android中,文件是一個應(yīng)用程序私有的,一個應(yīng)用程序無法讀寫其他應(yīng)用程序的文件SQLite:android提供的一個標(biāo)準(zhǔn)的數(shù)據(jù)庫,支持SQL語句Network:通過網(wǎng)絡(luò)來存儲和獲得數(shù)據(jù) 4.3.1數(shù)據(jù)存儲之sharedPreferences通過getpreferences()方法來獲得Preference對象,通過”SharePreferences.Editor editor=uiState.edit;”取得編輯對象,然后通過”editor.put()”方法添加數(shù)據(jù),最后通過commit()方法來保存數(shù)據(jù). 4.3.2數(shù)據(jù)存儲之files我們可以通過自定義
32、的save()方法來保存數(shù)據(jù),同時也可以通過load()方法來獲取文件中的數(shù)據(jù).boolean save()Properties properties = new Properties();/* 將數(shù)據(jù)打包成Properties */properties.put("bmusic", String.valueOf(mbMusic);tryFileOutputStream stream = this.openFileOutput("music.cfg", Context.MODE_WORLD_WRITEABLE);/* 將打包好的數(shù)據(jù)寫入文件中 */prop
33、erties.store(stream, "");catch (FileNotFoundException e)return false;catch (IOException e)return false;return true;/* 裝載、讀取數(shù)據(jù) */void load()/* 構(gòu)建Properties對對象 */Properties properties = new Properties();try/* 開發(fā)文件 */FileInputStream stream = this.openFileInput("music.cfg");/* 讀取文件內(nèi)容
34、 */properties.load(stream);catch (FileNotFoundException e)return;catch (IOException e)return;/* 取得數(shù)據(jù) */mbMusic = Boolean.valueOf(properties.get("bmusic").toString();4.3.3數(shù)據(jù)存儲之network通過網(wǎng)絡(luò)來獲取和保存數(shù)據(jù)資源,將數(shù)據(jù)存儲到網(wǎng)絡(luò)上的方法很多,比如將要保存的數(shù)據(jù)以文件的方式上傳到服務(wù)器,發(fā)送郵件等.下面我們看下如何實現(xiàn)讀取網(wǎng)絡(luò)文件.String myString = null;try/* 定義我們
35、要訪問的地址url */URL uri = new URL("10:8080/android.txt");/* 打開這個url連接 */URLConnection ucon = uri.openConnection();/* 從上面的鏈接中取得InputStream */InputStream is = ucon.getInputStream();BufferedInputStream bis = new BufferedInputStream(is);ByteArrayBuffer baf = new ByteArrayBuffer(10
36、0);int current = 0;/* 一直讀到文件結(jié)束 */while (current = bis.read() != -1)baf.append(byte) current);myString = new String(baf.toByteArray();catch (Exception e) myString = e.getMessage();另外由于在程序中訪問了外部網(wǎng)絡(luò),我們需要在AndroidManifest.xml文件中給予權(quán)限,代碼如下<uses-permissiion android:name=”android.permission.INTERNET”/>4
37、.3.4數(shù)據(jù)存儲之SQLite這個方法在數(shù)據(jù)保存中非常常用.只是它只會被一個程序讀取數(shù)據(jù),不能在不同程序間共享數(shù)據(jù)./*創(chuàng)建和打開數(shù)據(jù)庫*/mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);/*創(chuàng)建表*/mSQLiteDatabase.execSQL(CREATE_TABLE);/* 刪除數(shù)據(jù)庫 */public void DeleteDataBase()this.deleteDatabase(DATABASE_NAME);this.finish();/* 刪除一個表 */public
38、void DeleteTable()mSQLiteDatabase.execSQL("DROP TABLE " + TABLE_NAME);this.finish();/* 更新一條數(shù)據(jù) */public void UpData()ContentValues cv = new ContentValues();cv.put(TABLE_NUM, miCount);cv.put(TABLE_DATA, "修改后的數(shù)據(jù)" + miCount);/* 更新數(shù)據(jù) */mSQLiteDatabase.update(TABLE_NAME, cv, TABLE_NUM
39、+ "=" + Integer.toString(miCount - 1), null);UpdataAdapter();/* 向表中添加一條數(shù)據(jù) */public void AddData()ContentValues cv = new ContentValues();cv.put(TABLE_NUM, miCount);cv.put(TABLE_DATA, "測試數(shù)據(jù)庫數(shù)據(jù)" + miCount);/* 插入數(shù)據(jù) */mSQLiteDatabase.insert(TABLE_NAME, null, cv);miCount+;UpdataAdapter
40、();/* 從表中刪除指定的一條數(shù)據(jù) */public void DeleteData()/* 刪除數(shù)據(jù) */mSQLiteDatabase.execSQL("DELETE FROM " + TABLE_NAME + " WHERE _id=" + Integer.toString(miCount);miCount-;if (miCount < 0)miCount = 0;UpdataAdapter();/* 更行試圖顯示 */public void UpdataAdapter()/ 獲取數(shù)據(jù)庫Phones的CursorCursor cur = m
41、SQLiteDatabase.query(TABLE_NAME, new String TABLE_ID, TABLE_NUM, TABLE_DATA , null, null, null, null, null);miCount = cur.getCount();if (cur != null && cur.getCount() >= 0)/ ListAdapter是ListView和后臺數(shù)據(jù)的橋梁ListAdapter adapter = new SimpleCursorAdapter(this,/ 定義List中每一行的顯示模板/ 表示每一行包含兩個數(shù)據(jù)項andro
42、id.R.layout.simple_list_item_2,/ 數(shù)據(jù)庫的Cursor對象cur,/ 從數(shù)據(jù)庫的TABLE_NUM和TABLE_DATA兩列中取數(shù)據(jù)new String TABLE_NUM, TABLE_DATA ,/ 與NAME和NUMBER對應(yīng)的Viewsnew int android.R.id.text1, android.R.id.text2 );/* 將adapter添加到m_ListView中 */m_ListView.setAdapter(adapter);4.3.5 數(shù)據(jù)存儲之ContentProviders ContentProviders: Android提
43、供的一個特殊的存儲數(shù)據(jù)的類型,它提供了一套標(biāo)準(zhǔn)的接口來獲取,操作數(shù)據(jù).查詢數(shù)據(jù):可以使用ContentProvider.query()或者Activity.managedQuery()方法修改數(shù)據(jù):通過ContentResolver.update()方法可以用來修改數(shù)據(jù)添加數(shù)據(jù):通過ContentResolver.insert()方法來增加一條數(shù)據(jù)刪除數(shù)據(jù):通過ContentResolver.delete()方法來刪除一條記錄 第五章程序的開發(fā) 5.1主activity的設(shè)計 當(dāng)選擇”新建記事本”,”編輯內(nèi)容”,”刪除當(dāng)前記事”等菜單選項時對應(yīng)的操作public boolean onOptio
44、nsItemSelected(MenuItem item) switch (item.getItemId() / 插入一條數(shù)據(jù)case MENU_ITEM_INSERT:Intent intent0 = new Intent(this, ActivityDiaryEditor.class);intent0.setAction(ActivityDiaryEditor.INSERT_DIARY_ACTION);intent0.setData(getIntent().getData();startActivity(intent0);return true;/ 編輯當(dāng)前數(shù)據(jù)內(nèi)容case MENU_IT
45、EM_EDIT:Intent intent = new Intent(this, ActivityDiaryEditor.class);intent.setData(item.getIntent().getData();intent.setAction(ActivityDiaryEditor.EDIT_DIARY_ACTION);startActivity(intent);return true;/ 刪除當(dāng)前數(shù)據(jù)case MENU_ITEM_DELETE:Uri uri = ContentUris.withAppendedId(getIntent().getData(),getListView
46、().getSelectedItemId();getContentResolver().delete(uri, null, null);renderListView();return super.onOptionsItemSelected(item); 5.2編輯內(nèi)容 protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/setTheme(android.R.style.Theme_Black);final Intent intent = getIntent();final
47、String action = intent.getAction();setContentView(R.layout.diary_edit);mTitleText = (EditText) findViewById(R.id.title);mBodyText = (EditText) findViewById(R.id.body);/確定按鈕confirmButton = (Button) findViewById(R.id.confirm);if (EDIT_DIARY_ACTION.equals(action) / 編輯記事本mState = STATE_EDIT;mUri = inten
48、t.getData();mCursor = managedQuery(mUri, PROJECTION, null, null, null);mCursor.moveToFirst();String title = mCursor.getString(1);mTitleText.setTextKeepState(title);String body = mCursor.getString(2);mBodyText.setTextKeepState(body);setResult(RESULT_OK, (new Intent().setAction(mUri.toString();setTitl
49、e("編輯記事"); else if (INSERT_DIARY_ACTION.equals(action) / 新建日記mState = STATE_INSERT;setTitle("新建記事"); else Log.e(TAG, "no such action error");finish();rgetContentResolver().insert(Diary.DiaryColumns.CONTENT_URI, values);private void updateDiary() String title = mTitleTex
50、t.getText().toString();String body = mBodyText.getText().toString();ContentValues values = new ContentValues();values.put(Diary.DiaryColumns.CREATED, DiaryContentProvider.getFormateCreatedDate();values.put(Diary.DiaryColumns.TITLE, title);values.put(Diary.DiaryColumns.BODY, body);getContentResolver(
51、).update(mUri, values,null, null); 5.3刪除記事 private void renderListView() Cursor cursor = managedQuery(getIntent().getData(), PROJECTION, null,null, DiaryColumns.DEFAULT_SORT_ORDER);SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.diary_row, cursor, new String DiaryColumns.TITLE,DiaryColumns.CREATED , new int R.id.text1,R.id.cr
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合資企業(yè)合同范本
- saas代理合同范本
- 南山鋁業(yè)合同范本
- 專業(yè)閥體采購合同范本
- 單位購柴油合同范例
- 和孩子簽合同范本
- 包裝禮盒合同范本
- 合同范例法院起訴
- 農(nóng)村木炭出售合同范本
- 變更購房合同范本
- S7-200SMART系統(tǒng)手冊(中文)
- 2024-2025學(xué)年廣東省部分學(xué)校高一(上)第一次聯(lián)合考試物理試卷(含答案)
- 心源性休克護(hù)理
- 法律盡職調(diào)查
- 跨境車輛代購協(xié)議書
- 2024年山東省公務(wù)員考試《行測》真題及答案解析
- 凝固點(diǎn)降低獲獎?wù)n件
- DB41T2689-2024水利工程施工圖設(shè)計文件編制規(guī)范
- 化工原理Ⅱ?qū)W習(xí)通超星期末考試答案章節(jié)答案2024年
- 責(zé)任護(hù)理組長競選
- 管護(hù)員考勤管理制度
評論
0/150
提交評論