版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計(論文)</b></p><p> 題目:基于Android平臺記事本的設計與實現(xiàn)</p><p> 姓 名: 學 號: </p><p> 系 (院):信息工程系 班 級: </p><p>
2、; 指導教師: 職 稱: 講師 </p><p> 二O一四 年 五 月 二十 日</p><p><b> 目 錄</b></p><p><b> 第一章 引言3</b></p><p> 1.1研究目的及意義3</p>&l
3、t;p> 1.2 國內(nèi)外研究現(xiàn)狀分析3</p><p> 1.3 發(fā)展趨勢4</p><p> 1.4 可行性分析5</p><p> 1.5 基本內(nèi)容6</p><p> 第二章 開發(fā)環(huán)境的安裝和配置7</p><p> 2.1開發(fā)包及其工具的介紹7</p><p&
4、gt; 2.2 Android開發(fā)平臺搭建步驟:8</p><p><b> 2.3硬件環(huán)境9</b></p><p><b> 2.4軟件環(huán)境9</b></p><p> 2.5 系統(tǒng)架構9</p><p> 2.6 工程主體架構11</p><p>
5、 第三章 系統(tǒng)的設計13</p><p> 3.1功能需求13</p><p> 3.1.1用戶觸發(fā)事件13</p><p> 3.1.2記事本基本需求控制13</p><p> 3.2系能需求14</p><p> 3.2.1響應時間14</p><p> 3.2.2穩(wěn)
6、定性14</p><p> 3.2.3安全性14</p><p> 第四章 程序的設計15</p><p> 4.1 記事本組件的設計15</p><p> 4.2 記事本邏輯設計15</p><p> 4.3記事本存儲實現(xiàn)15</p><p> 4.3.1數(shù)據(jù)存儲之sh
7、aredPreferences16</p><p> 4.3.2數(shù)據(jù)存儲之files16</p><p> 4.3.3數(shù)據(jù)存儲之network18</p><p> 4.3.4數(shù)據(jù)存儲之SQLite19</p><p> 4.3.5 數(shù)據(jù)存儲之ContentProviders22</p><p>
8、第五章 程序的開發(fā)22</p><p> 5.1主activity的設計22</p><p> 5.2編輯內(nèi)容23</p><p> 5.3刪除記事25</p><p> 第六章 系統(tǒng)的測試25</p><p> 6.1 添加新記事25</p><p> 6.2 查看記事
9、29</p><p> 6.3 刪除/修改/刪除記事30</p><p><b> 第七章 總結31</b></p><p><b> 參考文獻32</b></p><p><b> 致 謝33</b></p><p><b
10、> 第一章 引言</b></p><p> 1.1研究目的及意義</p><p> 這次課題的目的是在Android系統(tǒng)的手機開發(fā)平臺之上,研究與開發(fā)一個記事本軟件,提供適用手機的記事本功能服務。</p><p> 首先,記事本的基本功能就是記事,手機用戶首先用到的就是文本記事,輸入事務信息以文本的形式展現(xiàn)出來,存儲起來。隨著用戶需求的增加
11、,可能希望用圖形來代替文本來記事,用戶之間打開記事本,看到圖片就能聯(lián)系自己所記載的事務信息。這樣免去了輸入文字的麻煩,反而會更簡單。又或者是文本與圖片的交叉運用,可以讓用戶自己選擇自己喜歡的記事方式,更加自由與便捷。所以此功能的意義是讓簡單的記事信息能以文本和圖形表達,更加豐富多彩。</p><p> 其次,在支持傳統(tǒng)的文字記事方式下,還要支持語音記事。因為用戶需要追求更加簡單的記事方式,不需要手動輸入文字,而
12、是直接語音記事。語音直接保存,有利于下次用戶直接查看時點擊按鈕就可以播放相應的錄音信息了。這對于某些眼睛不太好的,或者說更喜歡聽的用戶是很有吸引力的。</p><p> 再次,如果記事本的信息很多,而用戶又需要快速找到自己需要的記事信息,這時候內(nèi)容檢索就非常有用了。對于業(yè)務繁忙,或者是經(jīng)常寫備忘錄記事的群體,</p><p> 這個內(nèi)容檢索功能能帶給用戶很多的便利。讓他們更加高效的利用
13、手機,節(jié)約時間,高效工作與生活。</p><p> 最后,針對商務人士,或者是經(jīng)常使用郵箱的用戶來說,有時候希望通過查看郵箱的同時查看記事本的信息,一次性獲取全部。所以記事本同步郵箱功能能夠為用戶帶來更多的功能與便利。</p><p> 1.2 國內(nèi)外研究現(xiàn)狀分析</p><p> 目前國內(nèi)外有4款比較火的記事本軟件。分別是Evernote,小米便簽,Note
14、Everything,麥庫記事。</p><p> Evernote 在軟件界面方面界面清爽,需注冊登錄后才可使用,圖標布局比較協(xié)調;記事筆記方面可編寫內(nèi)容,添加標簽,支持上傳圖片、音頻、視頻、文件等附件;特色功能方面具有搜索筆記和發(fā)送筆記、定位服務、同步等功能;資源占用方面內(nèi)存占最多,CPU占用適中。</p><p> 小米便簽在軟件界面方面界面功能簡單,可查看和新建便簽,菜單功能相
15、對豐富;記事方面只支持文字內(nèi)容,可以選擇桌面Widget顏色、字體大小等;特色功能方面可以移進文件夾和分享、備份、還原和設置保護密碼;資源占用方面內(nèi)存占用較中,CPU占用最少。</p><p> Note Everything界面簡潔,上方有新建記事和搜索等按鈕,菜單功能非常豐富;支持文本、繪圖、語音、圖片、清單、圖庫、視頻、條形碼等形式,可固定顯示記事;特色是單個記事加密,數(shù)據(jù)備份、還原、導入、到處,創(chuàng)建快捷
16、方式;內(nèi)存占用最少,CPU占用較中。</p><p> 麥庫記事界面比較精美,菜單功能相對簡單;可選分類、加標簽、附件,支持拍照和實時錄音。特色是筆記搜索和分類,網(wǎng)絡同步和筆記分享;內(nèi)存占用適中,CPU占用最多。</p><p><b> 1.3 發(fā)展趨勢</b></p><p> 隨著3G應用的不斷開發(fā)推廣,用戶會越來越需要更加個性化、
17、優(yōu)質化的多媒體數(shù)據(jù)服務,用戶希望能夠隨時、隨地無縫利用3G網(wǎng)絡進行辦公、網(wǎng)上交易、游戲娛樂、欣賞影視節(jié)目、收聽和下載音樂等。根據(jù)觀察,在不久的將來,移動手機終端將會在以下若干方面具有新的發(fā)展。 </p><p> 首先,提供智能提醒服務,手機能夠與用戶實現(xiàn)密切配合,并監(jiān)控用戶的個性化設置(保持在本地或者云端),當重要時間點或關鍵事物需要用戶注意時,手機會向用戶發(fā)出“提醒”服務,服務包括日程提醒、交通狀
18、況、最佳行車路線、最佳泊位、優(yōu)惠活動、實時新聞、體育賽事、天氣情況、股市行情、好友活動、親友生日等。 </p><p> 其次,提供虛擬現(xiàn)實體驗,手機可以借助傳感器、周邊設備了解到您的身邊環(huán)境,并根據(jù)收集到的信息,智能的為您提供有用的信息,如在網(wǎng)絡世界養(yǎng)的寵物,可以借助音頻設備表達叫聲,借助馬達和位置傳感器等傳遞其跳、躍等行為信息;也可以在用戶購物時,提供相關的同類產(chǎn)品價格參考,提醒用戶附近的那個賣場
19、更物美價廉;根據(jù)實際場景,為用戶及時提供正在操控的產(chǎn)品的使用方法提醒。 </p><p> 接著,發(fā)揮物聯(lián)網(wǎng)的優(yōu)勢,借助無處不在的傳感器,可以感知并分享到周圍世界的海量信息,這些信息將在“云端”得到整合,幫助用戶及時、準確的獲得氣息信息、交通路況。另外借助物聯(lián)網(wǎng),用戶間可以方便、快速的分享資源,協(xié)助和交互。如進行端到端的多人游戲、照片分享、書籍分享、音樂分享等。 </p>&l
20、t;p> 然后,作為經(jīng)濟工具,在交通或者信息不發(fā)達的情況下,幫助用戶找到最佳的市場,獲得有價值的幫助信息,幫助用戶從事的經(jīng)濟活動的收益率。 </p><p> 最后,更加智能、安全的設備,隨著智能手機的不斷普及和更加智能,手機軟件的更新、升級將會變得越發(fā)簡單,并會為用戶提供工具或信息,讓用戶有能力和權力決策那些內(nèi)容可以瀏覽、下載或分享。在安全性上也將更加出色,能夠十分有效的幫助用戶進行獲取到的
21、內(nèi)容的管理,保護用戶的個人隱私和基于手機的金融活動如電子錢包、在線支付、在線貿(mào)易等。</p><p><b> 1.4 可行性分析</b></p><p> ?。保┘夹g可行性-----本項目僅需要一臺裝有eclipse及配置好android開發(fā)環(huán)境的計算機即可,對計算機本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系統(tǒng)。
22、</p><p> 2) 經(jīng)濟可行性-----由于本軟件開發(fā)只有一個單個人,一臺電腦就行,基本不需要太大的成本。在經(jīng)濟上完全可行。</p><p> 3) 操作可行性-----界面設計時充分考慮用戶的習慣以及手機方面的局限性,程序必須要很簡單;本程序只涉及到開發(fā)環(huán)境配置,安卓組件的熟悉,以及安卓平臺上的數(shù)據(jù)存儲。并沒有太大的難度,所以,該項目完全有可操作性。</p>&l
23、t;p><b> 1.5 基本內(nèi)容</b></p><p> 基本內(nèi)容是在android手機平臺下,研究與開發(fā)記事本軟件。具體要設計與實現(xiàn)的功能是:</p><p> (1) 設計實現(xiàn)”添加新記事”,”編輯內(nèi)容”,”刪除當前記事”這三個主要的功能模塊。 (2) 分析并解決實現(xiàn)中的若干技術問題,像組件的選擇以及保存方式的選擇。 </p>
24、<p> (3)進行測試并分析結果。</p><p> 當然記事本的基本功能,建立新文件,修改現(xiàn)有文件,刪除文件,查看已建立文件等功能是首先必須完成的??梢跃帉憙?nèi)容,編輯及刪除,除了支持文字內(nèi)容的記事,還支持圖片等形式,讓記事的方式多樣化。</p><p> 事本軟件的界面設計力求簡潔,給人清爽的感覺,讓圖標及按鈕以協(xié)調的布局呈現(xiàn)出了,菜單功能要相對簡單,讓用戶操作方便
25、,不能復雜。對于記事本的特色功能實現(xiàn)是要支持語音記事,讓用戶有不同的記事體驗;同時還能夠搜索筆記,在紛繁復雜的記事文件中搜索出用戶想要獲取的文件,這樣給用戶的備忘生活帶來了高效,從而讓用戶體會到此款軟件的實用。并且能夠實習同步郵箱功能,讓用戶在電腦上或手機上查收郵件能夠看到記事信息,這是功能的多方便利。</p><p> 記事本軟件要內(nèi)存占用適中,CPU占用也是適中,這樣讓軟件運行順暢。</p>
26、<p> 第二章 開發(fā)環(huán)境的安裝和配置</p><p> 2.1開發(fā)包及其工具的介紹</p><p> Android以java作為開發(fā)語言,jdk是進行java開發(fā)時必需的開發(fā)包。eclipse是一款非常優(yōu)秀的開源IDE,在大量插件的”配合”下,完全可以滿足從企業(yè)級java應用到手機終端java游戲的開發(fā)。Google官方也提供了基于Eclipse的android開發(fā)插
27、件ADT,所以本軟件開發(fā)選擇Eclipse作為開發(fā)IDE。</p><p> Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,由谷歌公司和開放手機聯(lián)盟領導及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安智”Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Googl
28、e與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權方式,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月。Android逐漸擴展到平板電腦及其他領域上,如電視,數(shù)碼相機,游戲機等。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺手機的全球市場份
29、額已經(jīng)達到78.1%。2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設備數(shù)量已經(jīng)達到10億臺。</p><p> JDK包含的基本組件包括:</p><p> javac – 編譯器,將源程序轉成字節(jié)碼</p><p> jar – 打包工具,將相關的類文件打包成一個文件</p><p>
30、 javadoc – 文檔生成器,從源碼注釋中提取文檔</p><p> jdb – debugger,查錯工具</p><p> java – 運行編譯后的java程序(.class后綴的)</p><p> appletviewer:小程序瀏覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。</p><p> Java
31、h:產(chǎn)生可以調用Java過程的C過程,或建立能被Java程序調用的C過程的頭文件。</p><p> Javap:Java反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時顯示字節(jié)代碼含義。</p><p> Jconsole: Java進行系統(tǒng)調試和監(jiān)控的工具</p><p> Eclipse是一個開放源代碼的軟件開發(fā)項目,專注于為高度集成的工具開發(fā)提供一個
32、全功能的、具有商業(yè)品質的工業(yè)平臺。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術項目三個項目組成,具體包括四個部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構造并運行集成軟件開發(fā)工具的基礎。Eclipse Platform允許
33、工具建造者獨立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。</p><p> 2.2 Android開發(fā)平臺搭建步驟:</p><p> 首先到http://www。eclipse。org/downloads/下載Eclipse集成開發(fā)環(huán)境并且解壓,這里推薦下載Java EE 集成版本,可以為平臺的搭建省下不少工作。接著再去http://
34、java。sun。com/javase/downloads/index。jsp 站點下載SDK后安裝,下載http://dl。google。com/android/android-sdk-windows-1。5_r1。zip,Android SDK1。5后解壓。第一步下載工序就結束了。</p><p> ②雙擊Eclipse解壓后目錄中的eclipse。exe然后啟動,選擇Eclipse菜單中的Help->
35、; Install New Software-> 選項卡上的Available Software,點擊右側的“Add”輸入http://dl-ssl。google。com/android/eclipse/后確定,然后在“Work with”下拉菜單中選擇剛才輸入的網(wǎng)址。過一會就會出現(xiàn)一個Developer Tools選項,勾上以后點擊Next以后Eclipse會自動網(wǎng)上查找Android 開發(fā)工具插件,然后找到Android DD
36、MS和Android Development Tools,選中這兩個點擊Finish,Eclipse就會自動下載并安裝Android插件了,最后會提示重啟Eclipse。</p><p> ?、壑貑⒑筮x擇Eclipse菜單中的Windows-> Preferences 在左側的Android項目中SDK Location中填入Android SDK解壓后的目錄,然后點擊Apply。</p>&
37、lt;p> ?、茉赪indowsXP的系統(tǒng)變量中的path變量中添加一個值,該值指向解壓后的Android SDK目錄下的tools文件夾。</p><p><b> 2.3硬件環(huán)境</b></p><p> 1. Android設備,如Android手機或平板電腦:主頻在1Ghz及以上,內(nèi)存為512MB以上,系統(tǒng)版本為Android2.1及以上。</
38、p><p> 2.在eclipse平臺下安卓了安卓android SDK 插件的電腦:Window 系統(tǒng) P4 1.8主頻以上電腦</p><p><b> 2.4軟件環(huán)境</b></p><p> 1.操作系統(tǒng):Windows7 </p><p> 2.IDE:Eclipse8.0</p><p
39、> 3.Android SDK集成環(huán)境</p><p><b> 2.5 系統(tǒng)架構</b></p><p> Android的系統(tǒng)架構和其操作系統(tǒng)一樣,采用分層的架構如下圖:</p><p> 圖2.5-Android的系統(tǒng)架構和其操作系統(tǒng)分層的架構</p><p> 從架構圖看,Android分為四個
40、層,從高層到低層分別是應用程序層、應用程序框架層、系統(tǒng)運行庫層和Linux內(nèi)核層。</p><p><b> 應用程序</b></p><p> Android會同一系列核心應用程序包一起發(fā)布,該應用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。</p><p><
41、b> 應用程序框架</b></p><p> 開發(fā)人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發(fā)布它的功能塊并且任何其它的應用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。</p><p> 隱藏在每個應用后面的是一系列的服務和系統(tǒng),
42、 其中包括;</p><p> 豐富而又可擴展的視圖(Views),可以用來構建應用程序, 它包括列表(Lists),網(wǎng)格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。</p><p> 內(nèi)容提供器(Content Providers)使得應用程序可以訪問另一個應用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫), 或者共享它們自己的數(shù)據(jù)</p&
43、gt;<p> 資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layout files )。</p><p> 通知管理器 (Notification Manager) 使得應用程序可以在狀態(tài)欄中顯示自定義的提示信息。</p><p> 活動管理器( Activity Manager) 用來管理應用程序生命周期并提
44、供常用的導航回退功能。</p><p><b> 系統(tǒng)運行庫</b></p><p> Android 包含一些C/C++庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應用程序框架為開發(fā)者提供服務。以下是一些核心庫:</p><p> ?。?)系統(tǒng) C 庫一個從BSD繼承來的標準C系統(tǒng)函數(shù)庫 Libc ),
45、它是專門為基于Embedded linux的設備定制的。</p><p> ?。?)媒體庫 基于PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。</p><p> ?。?)Surface Manager 對顯示子系統(tǒng)的管理,并且為多個應用
46、程序提 供了2D和3D圖層的無縫融合。</p><p> ?。?)LibWebCore 一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖。</p><p> 2.6 工程主體架構</p><p> 工程主體架構如下圖所示:</p><p><b> 1.str文件夾</b></
47、p><p> Str文件夾下com.samplenote包下Java為系統(tǒng)主要Activity類:</p><p> AddActivity.java是增加功能的Activity,通過設置兩個按鈕的監(jiān)聽來實現(xiàn)對輸入文本的存儲或退出。DbAdapter.java是數(shù)據(jù)庫基本操作功能實現(xiàn)的Activity,類中主要的函數(shù)實現(xiàn)的功能是:打開、關閉數(shù)據(jù)庫,獲得時間,插入數(shù)據(jù),刪除輸入,獲得數(shù)據(jù),查
48、詢數(shù)據(jù),更新數(shù)據(jù),根據(jù)內(nèi)容生成標題,創(chuàng)建表和刪除表。NotepadCheckActivity.java是在系統(tǒng)界面中生成記事列表的Activity。通過onCreate函數(shù)實現(xiàn)。NotPadActivity.java為系統(tǒng)主要功能實現(xiàn)的Activity。通過監(jiān)聽的方法來實現(xiàn)記事的刪除、編輯、搜索和短信發(fā)送功能。</p><p><b> 2.gen文件夾</b></p>&l
49、t;p> gen文件夾是項目自動生成的文件夾R.java是工程下各個資源的標識符負責所有資源的索引。</p><p><b> 3.bin文件夾</b></p><p> bin文件夾是編譯后的字節(jié)碼存放的目錄,編譯的過程首先是編譯成為android java虛擬機文件classes.dex,再打包成APK格式的包。</p><p>
50、;<b> 4.res文件夾</b></p><p> Res是資源目錄,res資源目錄,它包含項目中的資源文件并將其編譯進應用程序中,向此目錄添加資源時,會被R.java自動記錄。res目錄存放所有程序中用到的資源文件?!百Y源文件”指的資料文件、圖片等。子目錄有:drawable、layout、values。 </p><p> layout。屏幕布局目錄,
51、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負責存放界
52、面顏色、文本框大小等信息。</p><p> 5.AndroidManifest.xml</p><p> AndroidManifest.xml描述了package中暴露的組件(activities, services, 等等),他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。 除了能聲明程序中的Activities, ContentProviders, Services, 和Int
53、ent Receivers。</p><p><b> 第三章 系統(tǒng)的設計</b></p><p><b> 3.1功能需求</b></p><p> 3.1.1用戶觸發(fā)事件</p><p> 用戶通過點擊屏幕來實現(xiàn)與數(shù)據(jù)的交互。記事本上的相關按鈕是操作請求的輸入設備,屏幕是用于向用戶輸出信
54、息的輸出設備。</p><p> 事件是來自人操作的重要的消息,觸發(fā)時間如下表所示記事本系統(tǒng)中可能發(fā)生的所有事件響應及其執(zhí)行結果。</p><p> 3.1.2記事本基本需求控制</p><p> 系統(tǒng)用例圖描述的是用戶眼中的系統(tǒng),即用戶希望系統(tǒng)有哪些功能和通過哪些操作完成這些功能。一個用例代表用戶與系統(tǒng)交互的一種方式。正如前面介紹過的,識別用例的最好方法是從
55、參與者的角度分析系統(tǒng)。在Android記事本中,首先的參與者是用戶。系統(tǒng)E-R圖如下圖所示,它從用戶角度描述了該系統(tǒng)應該具有何種功能。</p><p><b> 3.2系能需求</b></p><p><b> 3.2.1響應時間</b></p><p> 一般來說,基于Android開發(fā)出來的應用程序響應時間很大程
56、度上依賴于安卓設備的硬件配置和系統(tǒng)版本。因此,用戶的安卓設備的硬件配置和系統(tǒng)版本都會對應用程序的響應時間又一定的影響。</p><p><b> 3.2.2穩(wěn)定性</b></p><p> 應用程序為本地應用,用戶只需通過自己的硬件就可以使用應用。</p><p><b> 3.2.3安全性</b></p>
57、;<p> Android為開源系統(tǒng)本身比較穩(wěn)定,同時應用程序無需連接網(wǎng)絡因此不存在信息網(wǎng)絡泄露的風險。</p><p><b> 第四章 程序的設計</b></p><p> 4.1 記事本組件的設計</p><p> 本項目涉及到以下組件:</p><p> TextView:“記事本”,“新
58、建記事”,“編輯記事”等標題</p><p> EditView:“記事本的標題”,“內(nèi)容”等</p><p> Button:“確定”按鈕</p><p> Menu:“添加新記事”,“編譯內(nèi)容”,“刪除當前記事”等</p><p> 4.2 記事本邏輯設計</p><p> 1.首先是添加新記事:<
59、/p><p> 如果當前沒有記事,點擊”menu”后只有一個菜單選項”添加新記事”,寫完記事之后,點擊”確定”進行保存</p><p><b> 2.”編輯內(nèi)容”:</b></p><p> 選中要編輯的那一個記事,然后點擊”menu”菜單,會出現(xiàn)三個選項”新建記事”,” 編輯內(nèi)容”,”刪除當前記
60、事”,點擊”編輯內(nèi)容”對被選中的記事進行編輯,然后點擊”確定”加以保存.</p><p><b> 3.”刪除記事”</b></p><p> 點擊上下鍵,選中要刪除的記事,然后點擊”menu”菜單,然后點擊”刪除當前記事”,對選中的記事加以刪除.</p><p> 4.3記事本存儲實現(xiàn)</p><p> And
61、roid 中一共提供了5種數(shù)據(jù)存儲方式,但是由于存儲的這些數(shù)據(jù)都是其應用程序私有的,所以如果需要在其他應用程序中使用這些數(shù)據(jù).就要使用android提供的ContentProviders.</p><p> ContentProviders:Android提供的一個特殊的存儲數(shù)據(jù)的類型,它提供了一套標準的接口來獲取,操作數(shù)據(jù).</p><p> Shared Preference:用來
62、存儲”key-value paires”格式的數(shù)據(jù),它是一個輕量級的鍵值存儲機制,只可以存儲基本數(shù)據(jù)類型.</p><p> Files:它通過FileInputStream 和 FileOutputStream對文件進行操作.但是在Android中,文件是一個應用程序私有的,一個應用程序無法讀寫其他應用程序的文件</p><p> SQLite:android提供的一個標準的數(shù)據(jù)庫,
63、支持SQL語句</p><p> Network:通過網(wǎng)絡來存儲和獲得數(shù)據(jù)</p><p> 4.3.1數(shù)據(jù)存儲之sharedPreferences</p><p> 通過getpreferences()方法來獲得Preference對象,</p><p> 通過”SharePreferences.Editor editor=uiSt
64、ate.edit;”取得編輯對象,然后通過”editor.put……()”方法添加數(shù)據(jù),最后通過commit()方法來保存數(shù)據(jù).</p><p> 4.3.2數(shù)據(jù)存儲之files</p><p> 我們可以通過自定義的save()方法來保存數(shù)據(jù),同時也可以通過load()方法來獲取文件中的數(shù)據(jù).</p><p> boolean save()</p&g
65、t;<p><b> {</b></p><p> Properties properties = new Properties();</p><p> /* 將數(shù)據(jù)打包成Properties */</p><p> properties.put("bmusic", String.valueOf(mbM
66、usic));</p><p><b> try</b></p><p><b> {</b></p><p> FileOutputStream stream = this.openFileOutput("music.cfg", Context.MODE_WORLD_WRITEABLE);<
67、;/p><p> /* 將打包好的數(shù)據(jù)寫入文件中 */</p><p> properties.store(stream, "");</p><p><b> }</b></p><p> catch (FileNotFoundException e)</p><p>&l
68、t;b> {</b></p><p> return false;</p><p><b> }</b></p><p> catch (IOException e)</p><p><b> {</b></p><p> return fals
69、e;</p><p><b> }</b></p><p> return true;</p><p><b> }</b></p><p> /* 裝載、讀取數(shù)據(jù) */</p><p> void load()</p><p><b&
70、gt; {</b></p><p> /* 構建Properties對對象 */</p><p> Properties properties = new Properties();</p><p><b> try</b></p><p><b> {</b></p&g
71、t;<p> /* 開發(fā)文件 */</p><p> FileInputStream stream = this.openFileInput("music.cfg");</p><p> /* 讀取文件內(nèi)容 */</p><p> properties.load(stream);</p><p>&l
72、t;b> }</b></p><p> catch (FileNotFoundException e)</p><p><b> {</b></p><p><b> return;</b></p><p><b> }</b></p>
73、<p> catch (IOException e)</p><p><b> {</b></p><p><b> return;</b></p><p><b> }</b></p><p> /* 取得數(shù)據(jù) */</p><p&g
74、t; mbMusic = Boolean.valueOf(properties.get("bmusic").toString());</p><p><b> }</b></p><p> 4.3.3數(shù)據(jù)存儲之network</p><p> 通過網(wǎng)絡來獲取和保存數(shù)據(jù)資源,將數(shù)據(jù)存儲到網(wǎng)絡上的方法很多,比如將要保存的
75、數(shù)據(jù)以文件的方式上傳到服務器,發(fā)送郵件等.</p><p> 下面我們看下如何實現(xiàn)讀取網(wǎng)絡文件.</p><p> String myString = null;</p><p><b> try</b></p><p><b> {</b></p><p> /*
76、 定義我們要訪問的地址url */</p><p> URL uri = new URL("http://192.168.1.110:8080/android.txt");</p><p> /* 打開這個url連接 */</p><p> URLConnection ucon = uri.openConnection();</p&g
77、t;<p> /* 從上面的鏈接中取得InputStream */</p><p> InputStream is = ucon.getInputStream();</p><p> BufferedInputStream bis = new BufferedInputStream(is);</p><p> ByteArrayBuffer b
78、af = new ByteArrayBuffer(100);</p><p> int current = 0;</p><p> /* 一直讀到文件結束 */</p><p> while ((current = bis.read()) != -1)</p><p><b> {</b></p>
79、<p> baf.append((byte) current);</p><p><b> }</b></p><p> myString = new String(baf.toByteArray());</p><p><b> }</b></p><p> catch (Ex
80、ception e)</p><p><b> {</b></p><p> myString = e.getMessage();</p><p><b> }</b></p><p> 另外由于在程序中訪問了外部網(wǎng)絡,我們需要在AndroidManifest.xml文件中給予權限,代碼如下
81、</p><p> <uses-permissiion android:name=”android.permission.INTERNET”/></p><p> 4.3.4數(shù)據(jù)存儲之SQLite</p><p> 這個方法在數(shù)據(jù)保存中非常常用.只是它只會被一個程序讀取數(shù)據(jù),不能在不同程序間共享數(shù)據(jù).</p><p>
82、/*創(chuàng)建和打開數(shù)據(jù)庫*/</p><p> mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);</p><p><b> /*創(chuàng)建表*/</b></p><p> mSQLiteDatabase.execSQL(CREATE_TAB
83、LE);</p><p> /* 刪除數(shù)據(jù)庫 */</p><p> public void DeleteDataBase()</p><p><b> {</b></p><p> this.deleteDatabase(DATABASE_NAME);</p><p> this.fi
84、nish();</p><p><b> }</b></p><p> /* 刪除一個表 */</p><p> public void DeleteTable()</p><p><b> {</b></p><p> mSQLiteDatabase.execSQ
85、L("DROP TABLE " + TABLE_NAME);</p><p> this.finish();</p><p><b> }</b></p><p> /* 更新一條數(shù)據(jù) */</p><p> public void UpData()</p><p>&
86、lt;b> {</b></p><p> ContentValues cv = new ContentValues();</p><p> cv.put(TABLE_NUM, miCount);</p><p> cv.put(TABLE_DATA, "修改后的數(shù)據(jù)" + miCount);</p><
87、;p> /* 更新數(shù)據(jù) */</p><p> mSQLiteDatabase.update(TABLE_NAME, cv, TABLE_NUM + "=" + Integer.toString(miCount - 1), null);</p><p> UpdataAdapter();</p><p><b> }<
88、;/b></p><p> /* 向表中添加一條數(shù)據(jù) */</p><p> public void AddData()</p><p><b> {</b></p><p> ContentValues cv = new ContentValues();</p><p> cv.
89、put(TABLE_NUM, miCount);</p><p> cv.put(TABLE_DATA, "測試數(shù)據(jù)庫數(shù)據(jù)" + miCount);</p><p> /* 插入數(shù)據(jù) */</p><p> mSQLiteDatabase.insert(TABLE_NAME, null, cv);</p><p>
90、 miCount++;</p><p> UpdataAdapter();</p><p><b> }</b></p><p> /* 從表中刪除指定的一條數(shù)據(jù) */</p><p> public void DeleteData()</p><p><b> {</b
91、></p><p> /* 刪除數(shù)據(jù) */</p><p> mSQLiteDatabase.execSQL("DELETE FROM " + TABLE_NAME + " WHERE _id=" + Integer.toString(miCount));</p><p> miCount--;</p>
92、<p> if (miCount < 0)</p><p><b> {</b></p><p> miCount = 0;</p><p><b> }</b></p><p> UpdataAdapter();</p><p><b&g
93、t; }</b></p><p> /* 更行試圖顯示 */</p><p> public void UpdataAdapter()</p><p><b> {</b></p><p> // 獲取數(shù)據(jù)庫Phones的Cursor</p><p> Cursor cur
94、 = mSQLiteDatabase.query(TABLE_NAME, new String[] { TABLE_ID, TABLE_NUM, TABLE_DATA }, null, null, null, null, null);</p><p> miCount = cur.getCount();</p><p> if (cur != null && cur.g
95、etCount() >= 0)</p><p><b> {</b></p><p> // ListAdapter是ListView和后臺數(shù)據(jù)的橋梁</p><p> ListAdapter adapter = new SimpleCursorAdapter(this,</p><p> // 定義Lis
96、t中每一行的顯示模板</p><p> // 表示每一行包含兩個數(shù)據(jù)項</p><p> android.R.layout.simple_list_item_2,</p><p> // 數(shù)據(jù)庫的Cursor對象</p><p><b> cur,</b></p><p> // 從數(shù)據(jù)
97、庫的TABLE_NUM和TABLE_DATA兩列中取數(shù)據(jù)</p><p> new String[] { TABLE_NUM, TABLE_DATA },</p><p> // 與NAME和NUMBER對應的Views</p><p> new int[] { android.R.id.text1, android.R.id.text2 });</p&
98、gt;<p> /* 將adapter添加到m_ListView中 */</p><p> m_ListView.setAdapter(adapter);</p><p><b> }</b></p><p><b> }</b></p><p> 4.3.5 數(shù)據(jù)存儲之Co
99、ntentProviders</p><p> ContentProviders: Android提供的一個特殊的存儲數(shù)據(jù)的類型,它提供了一套標準的接口來獲取,操作數(shù)據(jù).</p><p> 查詢數(shù)據(jù):可以使用ContentProvider.query()或者Activity.managedQuery()方法 修改數(shù)據(jù):通過ContentResolver.update()方法可以用來
100、修改數(shù)據(jù) 添加數(shù)據(jù):通過ContentResolver.insert()方法來增加一條數(shù)據(jù) 刪除數(shù)據(jù):通過ContentResolver.delete()方法來刪除一條記錄</p><p><b> 第五章 程序的開發(fā)</b></p><p> 5.1主activity的設計</p><p> 當選擇”新建記事本”,”編輯內(nèi)容”
101、,”刪除當前記事”等菜單選項時對應的操作</p><p> public boolean onOptionsItemSelected(MenuItem item) {</p><p> switch (item.getItemId()) {</p><p><b> // 插入一條數(shù)據(jù)</b></p><p>
102、case MENU_ITEM_INSERT:</p><p> Intent intent0 = new Intent(this, ActivityDiaryEditor.class);</p><p> intent0.setAction(ActivityDiaryEditor.INSERT_DIARY_ACTION);</p><p> intent0.s
103、etData(getIntent().getData());</p><p> startActivity(intent0);</p><p> return true;</p><p> // 編輯當前數(shù)據(jù)內(nèi)容</p><p> case MENU_ITEM_EDIT:</p><p> Intent in
104、tent = new Intent(this, ActivityDiaryEditor.class);</p><p> intent.setData(item.getIntent().getData());</p><p> intent.setAction(ActivityDiaryEditor.EDIT_DIARY_ACTION);</p><p> s
105、tartActivity(intent);</p><p> return true;</p><p><b> // 刪除當前數(shù)據(jù)</b></p><p> case MENU_ITEM_DELETE:</p><p> Uri uri = ContentUris.withAppendedId(getInten
106、t().getData(),</p><p> getListView().getSelectedItemId());</p><p> getContentResolver().delete(uri, null, null);</p><p> renderListView();</p><p><b> }</b&
107、gt;</p><p> return super.onOptionsItemSelected(item);</p><p><b> }</b></p><p><b> 5.2編輯內(nèi)容</b></p><p> protected void onCreate(Bundle savedIn
108、stanceState) {</p><p> super.onCreate(savedInstanceState);//</p><p> setTheme(android.R.style.Theme_Black);</p><p> final Intent intent = getIntent();</p><p> final
109、 String action = intent.getAction();</p><p> setContentView(R.layout.diary_edit);</p><p> mTitleText = (EditText) findViewById(R.id.title);</p><p> mBodyText = (EditText) findVie
110、wById(R.id.body);</p><p><b> //確定按鈕</b></p><p> confirmButton = (Button) findViewById(R.id.confirm);</p><p> if (EDIT_DIARY_ACTION.equals(action)) {// 編輯記事本</p>
111、<p> mState = STATE_EDIT;</p><p> mUri = intent.getData();</p><p> mCursor = managedQuery(mUri, PROJECTION, null, null, null);</p><p> mCursor.moveToFirst();</p>&
112、lt;p> String title = mCursor.getString(1);</p><p> mTitleText.setTextKeepState(title);</p><p> String body = mCursor.getString(2);</p><p> mBodyText.setTextKeepState(body);&l
113、t;/p><p> setResult(RESULT_OK, (new Intent()).setAction(mUri.toString()));</p><p> setTitle("編輯記事");</p><p> } else if (INSERT_DIARY_ACTION.equals(action)) {// 新建日記</p&
114、gt;<p> mState = STATE_INSERT;</p><p> setTitle("新建記事");</p><p><b> } else {</b></p><p> Log.e(TAG, "no such action error");</p>&l
115、t;p><b> finish();</b></p><p><b> r</b></p><p> getContentResolver().insert(Diary.DiaryColumns.CONTENT_URI, values);</p><p> private void updateDiary()
116、 {</p><p> String title = mTitleText.getText().toString();</p><p> String body = mBodyText.getText().toString();</p><p> ContentValues values = new ContentValues();</p>&l
117、t;p> values.put(Diary.DiaryColumns.CREATED, DiaryContentProvider</p><p> .getFormateCreatedDate());</p><p> values.put(Diary.DiaryColumns.TITLE, title);</p><p> values.put(Di
118、ary.DiaryColumns.BODY, body);</p><p> getContentResolver().update(mUri, values,</p><p> null, null);</p><p><b> }</b></p><p><b> } </b>
119、</p><p><b> 5.3刪除記事</b></p><p> private void renderListView() {</p><p> Cursor cursor = managedQuery(getIntent().getData(), PROJECTION, null,</p><p> nu
120、ll, DiaryColumns.DEFAULT_SORT_ORDER);</p><p> SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,</p><p> R.layout.diary_row, cursor, new String[] { DiaryColumns.TITLE,</p><
121、p> DiaryColumns.CREATED }, new int[] { R.id.text1,</p><p> R.id.created });</p><p> setListAdapter(adapter);</p><p><b> 第六章 系統(tǒng)的測試</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安卓記事本畢業(yè)論文--基于android平臺記事本的設計與實現(xiàn)
- android記事本設計與實現(xiàn)【畢業(yè)論文】
- 基于安卓android手機平臺的記事本設計課程設計畢業(yè)論文
- 基于android平臺記事本的設計與實現(xiàn)
- 安卓記事本管理系統(tǒng)
- 基于android記事本開發(fā)論文
- 基于安卓系統(tǒng)的記事本.docx
- 【zs精品】【畢業(yè)論文】基于安卓系統(tǒng)的記事本(全套)
- android記事本開發(fā)論文.doc
- android記事本開發(fā)論文.doc
- 基于android的記事本軟件的設計與實現(xiàn)
- 基于android的記事本設計-職業(yè)學院畢業(yè)論文
- 簡單記事本的設計畢業(yè)論文
- 記事本.zip
- 基于安卓平臺的個人記事本管理軟件設計本科
- 基于android的加密記事本軟件的設計與實現(xiàn)
- 日歷記事本.txt
- 日歷記事本.txt
- 基于Android的加密記事本軟件的設計與實現(xiàn).doc
- 基于Android系統(tǒng)語音云記事本的設計與實現(xiàn).pdf
評論
0/150
提交評論