版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計(論文)</b></p><p> 題 目 名 稱基于Android的短信備份</p><p> 題 目 類 型畢業(yè)設計</p><p> 系 部信息系</p><p> 專 業(yè) 班 級</p><p> 學 生 姓 名</p>&l
2、t;p> 指 導 教 師</p><p> 輔 導 教 師</p><p> 時 間</p><p> 畢業(yè)設計(論文)任務書</p><p> 學院(系) 信息系 專業(yè) 班級 </p><p> 學生姓名 指導教師/職稱
3、 </p><p> 畢業(yè)設計(論文)題目:</p><p> 基于Android的短信備份</p><p> 畢業(yè)設計(論文)起止時間:</p><p> 2009年11月20日-2010年6月10日</p><p> 3.畢業(yè)設計(論文)所需資料及原始數(shù)據(jù)(指導教師選定部分)</p&g
4、t;<p> 1) 陳帆,和紅杰,周榮輝 ,《Java 2程序設計實用教程》,機械工業(yè)出版社,2006年</p><p> 2)崔群法,王詠梅,李有軍,《Eclipse 3.0從入門到精通》,電子工業(yè)出版社,2008年</p><p> 3)林建素,孟康健,《Eclipse開發(fā)學習筆記》,電子工業(yè)出版社,2008年</p><p> 4)范春梅
5、,王新剛,張衛(wèi)華,《XML基礎教程》,人民郵電出版社,2009年</p><p> 5)(美)Erik T.Ray,譯者: 卓小濤,《XML入門》,中國電力出版社,2001年</p><p> 6)梅爾斯T.,奈克莫夫斯基A.,王輝,《Java XML 編程指南》,電子工業(yè)出版社,2001年</p><p> 7)麥克勞林B.,孫兆林,汪東 ,《JAVA 與
6、XML》,中國電力出版社,2001年</p><p> 8)威爾頓,P.,科爾比,J.,敖富江,《SQL入門經(jīng)典》,清華大學出版社,2006年</p><p> 4.畢業(yè)設計(論文)應完成的主要內(nèi)容</p><p> 1)熟悉并掌握Android系統(tǒng)上程序開發(fā)的基本流程及方法。</p><p> 2)設計一個基于Android的短信備
7、份的軟件。實現(xiàn)的功能有:</p><p> a) 能在Android手機上的短信以文件的形式備份在手機上。</p><p> b) 能將短信以主題的形式備份。</p><p> c)能將短信備份到網(wǎng)絡上。</p><p><b> 3)調(diào)試程序</b></p><p> 4)撰寫畢業(yè)設
8、計論文</p><p> 5.畢業(yè)設計(論文)的目標及具體要求</p><p> 要求學生了解Android系統(tǒng)的短信存儲機制和Java 語言解析XML文件知識,熟悉Jave編程和Eclipse開發(fā)環(huán)境。</p><p> 通過Android的數(shù)據(jù)提供機制讀取手機上的短信,并根據(jù)用戶的選擇將短信備份到文件,郵件甚至備份到在線文檔中;同時要求提供主題備份及過濾備
9、份(指定備份與指定人間的短信)的功能和定時備份功能。</p><p> 在此過程中要求學生掌握Android系統(tǒng)的開發(fā)方法與流程,了解Android系統(tǒng)的結(jié)構(gòu),提高學生的編程能力和設計動手能力,提高實踐水平,撰寫畢業(yè)設計論文。</p><p> 6.完成畢業(yè)設計(論文)所需的條件及上機時數(shù)要求</p><p> 1)基于Android系統(tǒng)的手機一部(可選)&l
10、t;/p><p><b> 2)微型計算機一臺</b></p><p><b> 3)圖書館及網(wǎng)絡</b></p><p><b> 4)參考資料</b></p><p> 任務書批準日期 年 月 日 教研室(系)主任(簽字) &l
11、t;/p><p> 任務書下達日期 年 月 日 指導教師(簽字) </p><p> 完成任務日期 年 月 日 學生(簽名) </p><p> 基于Android系統(tǒng)的短信備份程序設計</p><p><b> 學生:
12、**,*</b></p><p> 指導老師:***, **</p><p> [摘要]社會信息化的普及,隨著現(xiàn)代社會的發(fā)展,手機作為通信的手段在人們?nèi)粘I钪衅鹪絹碓街匾淖饔?,而其中短信作為手機上的一種業(yè)務,讓本來具有語言傳遞功能的手機變成了電報式的解讀工具,讓耳朵閑置,讓文字彰顯更大的作用;短信作為用文字傳遞信息和溝通的一種方式,讓拇指靈敏發(fā)達起來,讓嘴巴休息,現(xiàn)代
13、電信的業(yè)務具有了技術(shù)和文化的雙重色彩。然而在這個商品經(jīng)濟社會中的人們,使用短信通信常常會遇到一些重要的短信需要保留,所以短信備份就成為了一個重要的問題。</p><p> 而就手機系統(tǒng)而言,Android 是開放手機聯(lián)盟開發(fā)的第一個完整、開放、免費的手機平臺。自發(fā)布來得到了廣泛關注和迅猛發(fā)展。而基于Android的短信備份,可以實現(xiàn)手機端、PC 端兩個平臺的資源交互共享,可與PC、手機進行信息導入導出,安全性顯
14、著提高,且您能將短信通過電子郵件直接群發(fā)給朋友、客戶,便捷迅速。本文根據(jù)實際的項目內(nèi)容,通過Android的數(shù)據(jù)提供機制設計程序,并在一款Android手機上獲得了實物成果。</p><p> 文中首先介紹了Google推出的新一代智能手機平臺Android以及手機短信備份的重要性,以及課題研究的意義與目的。</p><p> 隨后詳細分析了Android的構(gòu)架,詳細分析了Androi
15、d的組件模型。介紹了Android應用的構(gòu)成和工作機制,分別介紹了Activity、Intent Receiver、Service、Content Provider的作用,詳細分析了intent機制。</p><p> 接著詳細闡述了總體方案設計及開發(fā)步驟。</p><p> 論文最后文章指出了短信備份設計的結(jié)果與總結(jié)。</p><p> [關鍵詞]Andro
16、id、短信、短信備份、智能手機</p><p> SMS-based Android system backup program designed</p><p> Student: Zhang Kun,The engineering and technology college</p><p> Counselor: Shen Xiaoke,Electron
17、ics & information college</p><p> 【Abstract】With the popularity of social information,and the development of modern society, mobile phones as a means of communication play more and more important role i
18、n people's daily lives,so had passed with language functions phone into a cable-style interpretation tools to ear idle, so the text demonstrates a greater role; SMS text as the transmission of information and communi
19、cation with a way to thumb developed sensitivity up to his mouth closed, modern telecommunications business with the</p><p> The terms of the mobile phone system, Android is the Open Handset Alliance develo
20、ped the first complete, open, free mobile phone platform. Since the release to get the attention and rapid development. The Android-based SMS backup, you can achieve mobile terminal, PC terminal interaction of two platfo
21、rms share resources, with PC, mobile phone import and export of information, security, significantly improved, and you can e-mail direct bulk SMS to friends, customers, convenient and fast. This proj</p><p>
22、 The paper introduces a new generation Google Android smartphone platform as well as the importance of SMS backup, and the meaning and purpose of the research.</p><p> Followed by a detailed analysis of th
23、e Android framework, a detailed analysis of Android's component model. Android applications described the composition and working mechanism, introduced the Activity, Intent Receiver, Service, Content Provider role, d
24、etailed analysis of the intent mechanism.</p><p> Then elaborated on the overall program design and development process.</p><p> Finally the article points out the text and summarized the resu
25、lts of the backup design.</p><p> 【Key words】 Android ,SMS,SMS Backup,Smart Phones</p><p><b> 前言</b></p><p> Android平臺是Google推出的新一代智能手機平臺。Android是一套真正意義上的開放性移動設備綜合平臺,
26、它包括操作系統(tǒng)、中間件和一些關鍵的平臺應用。Android平臺的開放性等特點既能促進技術(shù)(包括平臺自身)的創(chuàng)新,又有助于降低開發(fā)成本,還可以使運營商能非常方便地制定特色化的產(chǎn)品,因此,它具有很大的市場發(fā)展?jié)摿Α?lt;/p><p> 通訊移動的發(fā)展,帶動了手機的發(fā)展,而手機的發(fā)展,帶動了手機軟件的發(fā)展,手機軟件的發(fā)展,最終形成了手機操作系統(tǒng)的誕生。Android的誕生不僅具有它固有的時代背景,更帶來了新的手機操作系
27、統(tǒng)的革命。Android不僅是一種操作系統(tǒng),它更是一個開源的平臺。</p><p> 隨著社會信息化的普及,隨著現(xiàn)代社會的發(fā)展,手機作為通信的手段在人們?nèi)粘I钪衅鹪絹碓街匾淖饔?,而其中短信作為手機上的一種業(yè)務,讓本來具有語言傳遞功能的手機變成了電報式的解讀工具,讓耳朵閑置,讓文字彰顯更大的作用;短信作為用文字傳遞信息和溝通的一種方式,讓拇指靈敏發(fā)達起來,讓嘴巴休息,現(xiàn)代電信的業(yè)務具有了技術(shù)和文化的雙重色彩。
28、然而在這個商品經(jīng)濟社會中的人們,使用短信通信常常會遇到一些重要的短信需要保留,所以短信備份就成為了一個重要的問題。</p><p> 基于Android的短息備份</p><p><b> 第一章 緒論</b></p><p><b> 1.1概述</b></p><p> Android是
29、一個開放、自由的移動終端平臺。Android平臺由操作系統(tǒng)、中間件、用戶界面、應用軟件組成。開發(fā)人員在該平臺開發(fā)的應用程序,是使用Java語言編寫的在Dalvik虛擬機上運行的。Android的底層以開放性的Linux kernel為其架構(gòu)。也可以理解為Android是Google推出的智能手機操作系統(tǒng)和相關軟件的總稱。因此,它和一般在說Symbian、WindowsMobile是相同概念的。Google與開放手機聯(lián)盟合作開發(fā)了 And
30、roid,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達電和 T-Mobile 在內(nèi)的 30 多家技術(shù)和無線應用的領軍企業(yè)組成,研發(fā)隊伍陣容相當強大。</p><p> 而Android平臺, Google集合30多家包括高通,摩托羅拉,三星,HTC等來自諸多領域的領先技術(shù)和無線公司組成"開放手機聯(lián)盟"(OHA),共同努力開發(fā)Android平臺。全球四大手機制造商中,已經(jīng)有三家為Android
31、提供硬件技術(shù)支持。在國內(nèi),中國移動已經(jīng)加入OHA,并有機會成為第一家在中國運營Android手機的公司。聯(lián)通也在今年的5月17日宣布加入OHA。中國的許多軟件公司已經(jīng)將目光投向了Android。首款基于Android平臺的智能手機在2008年下半年推出。另外華為也已證實正在研發(fā)基于Android平臺的手機,目前已經(jīng)制成樣機。在目前,由于Android平臺剛發(fā)布半年,系統(tǒng)還有許多需要充實的地方;但相信在未來幾年中,Google Andro
32、id將對移動產(chǎn)業(yè)帶來較大的影響,Android會變得更加的強壯和易用。</p><p> 1.2研究的目的及意義</p><p> 1992年,世界上第一條短信在英國沃達豐的網(wǎng)絡上通過電腦向手機發(fā)送成功,從而宣布手機短信誕生。至于中國的第一條短信誕生于何時何地已無從知曉,但據(jù)考證,中國的移動通信網(wǎng)絡早在1994年就具備了短信功能,只是那時有手機的人根本不需要它罷了。隨著手機的日益普及,
33、從1998年開始,移動、聯(lián)通先后大范圍拓展短信業(yè)務:2000年,中國手機短信息量突破10億條;2001</p><p> 年,達到189億條;2004年,其飛漲到900億條。于是短信理所應當?shù)爻蔀榱说谖宸N傳播工具;于是從1998年至今,管你愿意與否,短信已逐漸走入我們的生活,成為生活的一部分,我們的生活也因短信而改變著。</p><p> 短信作為手機上的一種業(yè)務,讓本來具有語言傳遞功
34、能的手機變成了電報式的解讀工具,讓耳朵閑置,讓文字彰顯更大的作用;短信作為用文字傳遞信息和溝通的一種方式,讓拇指靈敏發(fā)達起來,讓嘴巴休息,現(xiàn)代電信的業(yè)務具有了技術(shù)和文化的雙重色彩。盡管移動市場發(fā)展飛速,不過短信仍然是其最重要的一項附加價值服務。據(jù)此前IDC公司統(tǒng)計,文字短信仍是亞太地區(qū)手機用戶普及率最高的一項移動服務,即使在短信的發(fā)展中市場,例如西歐短信服務的使用率也達到了90%。而隨著科技的日益發(fā)展,信息時代的到來,在人們使用手機的信
35、息交流中,已漸漸離不開了短信,短信的重要性就越來越突出了。且在這個商品經(jīng)濟社會中人們常常會遇到一些重要的短信需要保留,所以短信備份就成為了一個重要的問題。 </p><p> Android 是開放手機聯(lián)盟開發(fā)的第一個完整、開放、免費的手機平臺。自發(fā)布來得到了廣泛關注和迅猛發(fā)展。而基于Android的短信備份,可以實現(xiàn)手機端、PC 端兩個平臺的資源交互共享,可與PC、手機進行信息導入導出,安全性顯著提高,且
36、您能將短信通過電子郵件直接群發(fā)給朋友、客戶,便捷迅速。如此一來,要是手機出現(xiàn)什么意外,你也不用擔心重要短信會丟失了。</p><p> 1.3本文主要研究的內(nèi)容</p><p> 本次畢業(yè)設計主要內(nèi)容有:了解Android系統(tǒng)的短信存儲機制和Java 語言解析XML文件知識,熟悉Java編程和Eclipse開發(fā)環(huán)境及其配置環(huán)境。</p><p> 通過Andr
37、oid的數(shù)據(jù)提供機制讀取手機上的短信,并根據(jù)用戶的選擇將短信備份到文件,郵件甚至備份到在線文檔中,同時要求提供主題備份及過濾備份(指定備份與指定人間的短信)的功能和定時備份功能。</p><p> 在此過程中掌握Android系統(tǒng)的開發(fā)方法與流程,了解Android系統(tǒng)的結(jié)構(gòu),提高學生的編程能力和設計動手能力,提高實踐水平。</p><p> 第二章 Android架構(gòu) </p&
38、gt;<p> 本章所要介紹的Android架構(gòu)內(nèi)容包括:Android平臺的架構(gòu),Android的內(nèi)核分析,Android應用的構(gòu)成與工作機制,Android中的Intent以及Eclipse。以下就是對其相關內(nèi)容的描述。</p><p> 2.1Android平臺的架構(gòu)</p><p> Android平臺自底向上由以下四個層次組成:Linux內(nèi)核層、Android
39、運行時庫和其他庫層、應用框架層、應用程序?qū)印H鐖D1所示圖1</p><p> Android平臺的結(jié)構(gòu)</p><p> (1) Linux內(nèi)核層:Android基于Linux核來開發(fā)的,主要是添加了一個名為Goldfish的虛擬CPU以及Android運行所需的特定驅(qū)動代碼。該層用來提供系統(tǒng)的底層服務,包括安全機制、內(nèi)存管理、進程管理、網(wǎng)絡堆棧及一系列的驅(qū)動模塊。作為一個虛擬的中間層
40、,該層位于硬件與其它的軟件層之間。需要注意的是,這個內(nèi)核操作系統(tǒng)并非類GNU/Linux的,所以其系統(tǒng)庫、系統(tǒng)初始化和編程接口都和標準的Linux系統(tǒng)有所不同的。它沒有采用虛擬內(nèi)存文件系統(tǒng),而是采用YAFFS2文件系統(tǒng)。</p><p> YAFFS(Yet Another Flash File System)文件系統(tǒng)是一個開源的,專門為NAND Flash設計的文件系統(tǒng),具有很好的可移植性,也是一種日志型文件
41、系統(tǒng),能夠在Linux,uCLinux,和Windows CE上運行。YAFFS目前有YAFFS和YAFFS2兩個版本,一般說來,YAFFS小頁面(528字節(jié)/頁)有很好的支持,而更大的頁面(2K+64字節(jié)/頁)就需要YAFFS2為新一代智能手機平臺,Android需要支持超大容量的NAND Flash,所以采用支持大頁面的YAFFS2文件系統(tǒng)。</p><p> (2)Android運行時庫和其他庫層:And
42、roid運行時庫包含一組核心庫(提供了Java語言核心庫內(nèi)的大部分功能)和Dalvik虛擬機。同時Android提供了豐富的庫類支持且大部分為開源代碼,如采用的數(shù)據(jù)庫為SQLite。Android選擇它作為移動終端的嵌入式數(shù)據(jù)庫有以下優(yōu)點,它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小只有250KB但支持數(shù)據(jù)庫大小至2KB,提供了對事務功能和并發(fā)處理的支持,而且比目前流行的大多數(shù)數(shù)據(jù)庫運行速度快。</p&g
43、t;<p> (3)應用框架層:在應用框架層Android開發(fā)人員可以跟那些核心應用一樣擁有訪問框架API的全部權(quán)限。應用的系結(jié)構(gòu)化設計簡化了各組件之間的重用,任何應用都可以分發(fā)自己的組件,任何應用也可以使用這些分發(fā)的組件(應用的使用方法需遵循框架的安全性約束)。</p><p> (4)應用程序?qū)樱篈ndroid本身會附帶一些核心的應用程序,包括e—mail客戶端、短信程序、日歷、地圖、瀏覽器
44、、通訊錄等等,目前所有的應用程序都是由Java語言開發(fā)的。</p><p> 2.2Android的內(nèi)核分析</p><p> ?。?)內(nèi)核在操作系統(tǒng)中的地位</p><p> Android基于Linux操作系統(tǒng),由硬件、系統(tǒng)內(nèi)核、系統(tǒng)服務和應用程序等四大部分組成。其中,內(nèi)核Kernel是最核心的部分,其主要作用在于與計算機硬件進行交互,實現(xiàn)對硬件的編程控制和
45、接口操作,調(diào)度訪問硬件資源,同時向應用程序提供一個高級的執(zhí)行環(huán)境和對硬件的虛擬接口。主要功能包括:中斷服務程序、進程調(diào)度程序、進程地址空間的內(nèi)存管理、進程間通信。</p><p> 內(nèi)核與普通應用程序不同,其擁有所有硬件設備的訪問權(quán)限以及啟動時即劃分的受保護的內(nèi)存空間同。</p><p> ?。?)Android內(nèi)核</p><p> 和標準的Linux內(nèi)核一樣
46、,Android內(nèi)核主要實現(xiàn)內(nèi)存管理、進程調(diào)度、進程間通信等功能。</p><p> Android內(nèi)核是在標準Linux內(nèi)核的基礎上修改而成。為了適應嵌入式硬件環(huán)境和移動應用程序的開發(fā)。Android對Linux內(nèi)核進行了一定的修改。Android內(nèi)核源碼樹根目錄結(jié)構(gòu)如表1所示。</p><p> 表2-2-1 內(nèi)核源碼樹目錄結(jié)構(gòu)</p><p> And
47、roid內(nèi)核與標準Linux內(nèi)核在文件系統(tǒng)、進程間通信機制、內(nèi)存管理、電源管理、驅(qū)動和其他方面存在不同。</p><p><b> 文件系統(tǒng)</b></p><p> 不同于桌面系統(tǒng)與服務器,移動設備大多采用的不是硬盤而是采用Flash作為存儲介質(zhì),因此,Android內(nèi)核中增加了標準Linux內(nèi)核中沒有采納的YAFFs2文件系統(tǒng)。YAFFS2(Yet Anoth
48、er flash File Sy-stem,2nd edition)是專用于flash的文件系統(tǒng),對NAND,F(xiàn)1ash芯片有著良好的支持。YAFFs2是日志結(jié)構(gòu)的文件系統(tǒng),提供了損耗平衡和掉電保護,可以有效地避免意外斷電對文件系統(tǒng)一致性和完整性的影響。YAFFS2按層次結(jié)構(gòu)設計,分為文件管理接口、內(nèi)部實現(xiàn)層和NAND,簡化了其本身與系統(tǒng)的接口設計能更方便地集成到系統(tǒng)當中。經(jīng)過測試證明YAFFs2性能比支持NOR型閃存的JFFS2文件系
49、統(tǒng)優(yōu)秀。</p><p><b> 程問通信機制</b></p><p> Android增加了一種進程間的通信機制IPC Binder在內(nèi)核源代碼中,驅(qū)動程序文件為coredroid/include/linux/binder.h和coredroid/drivers/android/binder.c。Binder通過守護進程Service Manager管理系統(tǒng)中
50、的服務,負責進程問的數(shù)據(jù)交換。各進程通過Binder訪問同一塊共享內(nèi)存,以達到數(shù)據(jù)通信的機制。從應用層的角度看.進程通過訪問數(shù)據(jù)守護進程獲取用于數(shù)據(jù)交換的程序框架接口,調(diào)用并通過接口共享數(shù)據(jù),而其他進程要訪問數(shù)據(jù),也只需與程序框架接口進行交互.方便了程序員開發(fā)需要交互數(shù)據(jù)的應用程序。</p><p><b> 存管理</b></p><p> 在內(nèi)存管理模塊,An
51、droid內(nèi)核采用了一種不用于標準Linux內(nèi)核的低內(nèi)存管理策略。在標準Linux內(nèi)核當中,使用一種叫做00M(0ut of Memorv)的低內(nèi)存管理策略:當內(nèi)存不足時,系統(tǒng)檢查所有的進程,并對進程進行限制評分.獲得最高分的進程將被關閉(內(nèi)核進程除外)。Android系統(tǒng)采用的則是一種叫作LMK(Low Memory Killer)的機制,這種機制將進程按照重要性進行分級、分組。內(nèi)存不足時,將處于最低級別組的進程關閉。例如.在移動設備
52、當中。UI界面處于最高級別。所以該進程永遠不會被中止,這樣,在終端用戶看來,系統(tǒng)是穩(wěn)定運行的。在Android內(nèi)核源碼中,LMK的位置是coredroid/drivers/misc/lowmemorykiller.c。</p><p> 與此同時,Android新增加了一種內(nèi)存共享的處理方式Ashmem(Anonvmous Shared Memory,匿名共享內(nèi)存)。通過Ashmem,進程間可以匿名自由共享具名
53、的內(nèi)存塊。這種共享方式在標準Linux當中不被支持。Ashmem分配和使用情況如下:</p><p> fd=ashhmem_create_region(“my-shm—region”,size);</p><p><b> if(fd<0)</b></p><p> return –l;</p><p>
54、 data=mmap(NUULL,size,PROT_READ︱PROT_WRITE,MAP_SHARED,fd,0);</p><p> if(data==MAP_FAILED)</p><p><b> goto out;</b></p><p> 但出于安全原因,其他進程無法訪問此名稱(my_shm—region)區(qū)域。文件描述符指
55、向該共享內(nèi)存區(qū)域,實際上是通過IPC綁定接口。</p><p> 在Android內(nèi)核源碼中,Ashmem的位置是coredroid/mm/ashmem.c。</p><p><b> 源管理</b></p><p> 由于Android主要用于移動設備,電源管理就顯得尤為重要,因此,在Android內(nèi)核當中。增加了一種新的電源管理策略。
56、目前,Android采用的是一種較為簡單的電源管理策略,通過開關屏幕、開關屏幕背光、開關鍵盤背光、開關按鈕背光和調(diào)整屏幕亮度來實現(xiàn)電源管理,并沒有實現(xiàn)休眠和待機功能。有三種途徑判斷調(diào)整電源管理策略:RPC調(diào)用、電池狀態(tài)改變和電源設置。它通過廣播Intent或直接調(diào)用API的方式來與其他模塊進行聯(lián)系。電源管理策略同時還有自動關機機制,當電力低于最低可接受程度時,系統(tǒng)將自動關機。Android的電源管理模塊還會根據(jù)用戶行為,自動調(diào)整屏幕亮度
57、。 </p><p><b> 驅(qū)動及其它</b></p><p> 相對于標準內(nèi)核,Android內(nèi)核還添加了字符輸出設備、圖像顯示設備、鍵盤輸入設備、RTC設備、USB Device設備等相關設備驅(qū)動。增加了日志(Logger)系統(tǒng),使應用程序可以訪問日志消息。</p><p> 2.3Android應用的構(gòu)成與工作機制</p&
58、gt;<p> 一個Android應用程序是由四種構(gòu)造塊組織而成的,這四種構(gòu)造塊分別是:</p><p><b> Activity</b></p><p> Intent Receiver</p><p><b> Service</b></p><p> Content
59、Provider</p><p> 并不是每一個Android應用程序都需要這四種構(gòu)造塊,這不是必須的,某些時候,只需要這四種中的幾種就可以組合成應用程序。除此以外,還需要在AndroidMainfest.xml中登記這些構(gòu)造塊的清單。這是一個XML配置文件,這個配置文件用于定義應用程序的組件、組件的功能及必要條件等。這個配置文件是每個Android應用必需的。而以下為其構(gòu)成與工作流程。</p>
60、<p> 圖2-3-1 Android的構(gòu)成與工作流程</p><p> 以下,對四種構(gòu)造塊做一些說明:</p><p><b> Activity</b></p><p> Activity是Android構(gòu)造塊中最基本的一種,在應用中,一個activity通常就是一個單獨的屏幕。每一個activity都被實現(xiàn)為一個獨立
61、的類,并且繼承于Activity這個基類。這個activity類將會顯示由幾個Views控件組成的用戶接口,并對事件做出響應。大部份的應用都會包含多個的屏幕。例如,一個通信應用程序?qū)幸粋€屏幕用于顯示聯(lián)系人列表,第二個屏幕用于寫信息,同時還會有用于瀏覽信息及進行系統(tǒng)設置的屏幕。每一個這樣的屏幕,就是一個activity。從一個屏幕可以方便的導航到另一個屏幕。在一些應用中,一個屏幕甚至會返回值給前一個屏幕。當一個新的屏幕打開后,前一個屏
62、幕將會暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個屏幕。當屏幕不再使用時,還可以從歷史堆棧中刪除。默認情況下,Android將會保留從主屏幕到每一個應用的運行屏幕。</p><p> Android使用了Intent這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。Intent類用于描述一個應用將會做什么事。在Intent的描述結(jié)構(gòu)中,有兩個最重要的部分:動作和動作對應的數(shù)據(jù)。典型的動作類型有:MAIN(ac
63、tivity的門戶)、VIEW、PICK、EDIT等。而動作對應的數(shù)據(jù)則以URI的形式進行表示。例如:要查看一個人的聯(lián)系方式,就需要創(chuàng)建一個動作類型為VIEW的intent,以及一個表示這個人的URI。與之有關系的一個類叫IntentFilter。相對于intent是一個有效的做某事的請求,一個intent filter則用于描述一個activity(或者Intent Receiver)能夠操作哪些intent。一個activity如果
64、要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter要知道怎么去處理VIEW動作和表示一個人的URI。IntentFilter需要在AndroidMainfest.xml中定義。通過解析各種intent,完成從一個屏幕導航到另一個屏幕。當向前導航時,activity將會調(diào)用startActivity(I</p><p> A、Activities可重復利用從其它組件中以I
65、ntent的形式產(chǎn)生的一個請求。</p><p> B、Activities可以在任何時候被一個具有相同IntentFilter的新的Activity取代。</p><p> Intent Receiver</p><p> 當需要對一個外部事件(如當電話呼入,或者數(shù)據(jù)網(wǎng)絡可用)做出響應時,可以使用一個Intent Receiver。</p>&
66、lt;p> Intent Receiver在外部事件發(fā)生時,會使用NotificationManager通知用戶,但它并不能生成一個UI。Intent Receiver在AndroidManifest.xml中注冊,也可以在代碼中使用Context.registerReceiver()進行注冊。當一個intent receiver被觸發(fā)時,系統(tǒng)會在需要的時候?qū)某绦颉8鞣N應用還可以通過使用Context.broadcastIn
67、tent()將它們的intent receiver廣播給其它應用程序。</p><p><b> Service</b></p><p> 一個Service是一段長生命周期的,沒有用戶界面的程序。例如,一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應用中,應該會有多個activity,讓用戶可以選擇歌曲并播放歌曲。然而,音樂重放這個功能并沒有對應的
68、activity,因為用戶會認為在導航到其它屏幕時音樂應該還在播放的。在這個例子中,媒體播放器這個activity會使用Context.startService()來啟動一個service,從而可以在后臺保持音樂的播放。同時,系統(tǒng)也將保持這個service一直執(zhí)行,直到這個service運行結(jié)束。另外,還可以通過使用Context.bindService()方法,連接到一個service上(如果這個service還沒有運行將啟動它)。當
69、連接到一個service之后,使用service提供的接口與它進行通訊。拿媒體播放器這個例子來說,還可以進行暫停、重播等操作。</p><p> Content Provider</p><p> 應用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件中、SQL數(shù)據(jù)庫中,甚至是任何有效的設備中。當需要將應用數(shù)據(jù)與其它的應用共享時,使用Content Provider來完成。一個Content Provid
70、er類實現(xiàn)了一組標準的方法,從而能夠讓其它的應用保存或讀取此Content Provider處理的各種數(shù)據(jù)類型。</p><p> 2.4Android中的Intent</p><p> 在一個Android應用中,主要是由四種組件組成的,這四種組件是獨立的,它們之間可以互相調(diào)用,協(xié)調(diào)工作,最終組成一個真正的Android應用。在這些組件之間的通訊中,主要是由Intent協(xié)助完成的。I
71、ntent負責對應用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android則根據(jù)此Intent的描述,負責找到對應的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。</p><p> 2.4.1抽象描述的內(nèi)容</p><p> 在Android參考文檔中,對
72、Intent的定義是執(zhí)行某操作的一個抽象描述。</p><p> 首先,是要執(zhí)行的動作(action)的一個簡要描述。</p><p> 其次,是執(zhí)行動作要操作的數(shù)據(jù)(data),Android中采用指向數(shù)據(jù)的一個URI來表示。</p><p> 另外,除了action和data這兩個重要屬性外,還有一些附加屬性:</p><p>
73、category(類別),被執(zhí)行動作的附加信息。</p><p> type(數(shù)據(jù)類型),顯式指定Intent的數(shù)據(jù)類型(MIME)。一般Intent的數(shù)據(jù)類型能夠根據(jù)數(shù)據(jù)本身進行判定,但是通過設置這個屬性,可以強制采用顯式指定的類型而不再進行推導。</p><p> component(組件),指定Intent的的目標組件的類名稱。通常Android會根據(jù)Intent中包含的其它屬性
74、的信息,比如action、data/type、category進行查找,最終找到一個與之匹配的目標組件。但是,如果component這個屬性有指定的話,將直接使用它指定的組件,而不再執(zhí)行上述查找過程。指定了這個屬性以后,Intent的其它所有屬性都是可選的。</p><p> extras(附加信息),是其它所有附加信息的集合。使用extras可以為組件提供擴展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個動作,可
75、以將電子郵件的標題、正文等保存在extras里,傳給電子郵件發(fā)送組件。</p><p> 總之,action、data/type、category和extras一起形成了一種語言。這種語言使系統(tǒng)能夠理解諸如“查看某聯(lián)系人的詳細信息”之類的短語。隨著應用不斷的加入到系統(tǒng)中,它們可以添加新的action、data/type、category來擴展這種語言。應用也可以提供自己的Activity來處理已經(jīng)存在的這樣的“
76、短語”,從而改變這些“短語”的行為。</p><p> 2.4.2 Android解析Intent的過程</p><p> 在應用中,我們可以以兩種形式來使用Intent:</p><p> A、直接Intent:</p><p> 指定了component屬性的Intent(調(diào)用setComponent(ComponentName)
77、或者setClass(Context,Class)來指定)。通過指定具體的組件類,通知應用啟動對應的組件。</p><p> B、間接Intent:</p><p> 沒有指定comonent屬性的Intent。這些Intent需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在在所有的可用組件中,確定滿足此Intent的組件。</p><p> 對于直接Inte
78、nt,Android不需要去做解析,因為目標組件已經(jīng)很明確,Android需要解析的是那些間接Intent,通過解析,將Intent映射給可以處理此Intent的Activity、IntentReceiver或Service。Intent解析機制主要是通過查找已注冊在AndroidManifest.xml中的所有IntentFilter及其中定義的Intent,最終找到匹配的Intent。在這個解析過程中,Android是通過Inten
79、t的action、type、category這三個屬性來進行判斷的,判斷方法如下:</p><p> ● 如果Intent指明定了action,則目標組件的IntentFilter的action列表中就必須包含有這個action,否則不能匹配;</p><p> ● 如果Intent沒有提供type,系統(tǒng)將從data中得到數(shù)據(jù)類型。和action一樣,目標組件的數(shù)據(jù)類型列表中必須包
80、含Intent的數(shù)據(jù)類型,否則不能匹配。</p><p> ● 如果Intent中的數(shù)據(jù)不是content:類型的URI,而且Intent也沒有明確指定它的type,將根據(jù)Intent中數(shù)據(jù)的scheme(比如http:或者mailto:)進行匹配。同上,Intent的scheme必須出現(xiàn)在目標組件的scheme列表中。</p><p> ● 如果Intent指定了一個或多個cat
81、egory,這些類別必須全部出現(xiàn)在組建的類別列表中。比如Intent中包含了兩個類別:LAUNCHER_CATEGORY和ALTERNATIVE_CATEGORY,解析得到的目標組件必須至少包含這兩個類別。</p><p> 2.5 Eclipse</p><p> Eclipse是一個集成開發(fā)環(huán)境(IDE)。其前身是IBM的Visual Age for Java(VA4J)。Ecli
82、pse是可擴展的體系結(jié)構(gòu),可以集成不同軟件開發(fā)供應商開發(fā)的產(chǎn)品,將他們開發(fā)的工具和組件加入到Eclipse平臺中。隨Java應用的廣泛,各大主要軟件供應商都參與到Eclipse架構(gòu)開發(fā)中,使得Eclipse插件數(shù)量與日增加。Eclipse平臺的免費,架構(gòu)的成熟,行業(yè)協(xié)會Eclipse基金會的支持,使得很多的Java開發(fā)采用了Eclipse架構(gòu)。</p><p> 插件(plug-in)是遵循一定規(guī)范的應用程序結(jié)
83、構(gòu)編寫出來的程序,也成為擴展,不同于組件。Eclipse正是一個精心設計的、可擴展的核心結(jié)構(gòu)。通過插件的形式,將根據(jù)自己需要選擇的擴展開發(fā)工具集成到Eclipse平臺核心。因此使得可以避免因過去不兼容工具帶來的麻煩,降低開發(fā)出成本,大幅度提高工作效率。</p><p> Eclipse本身作為一個開放源碼的軟件項目,它主要包含3個子項目:①平臺子項目,②Java開發(fā)工具(JDT-java)子項目,③插件開發(fā)環(huán)境
84、(PDE-plug-in)子項目。其中,Java開發(fā)工具JDT為開發(fā)人員提供大量的集成工具集,主要為Java應用程序提供編程接口(API)。Eclipse軟件開發(fā)工具箱(SDK)是主要有Eclipse本身的項目軟件和其他一些開發(fā)源嗎的第三方軟件組成。次者,插件開發(fā)環(huán)境(JDT)則為插件開發(fā)和測試提供相應的環(huán)境,如:創(chuàng)建插件清單文件、定義擴展點等。</p><p> 圖2-5-1 Eclipse體系結(jié)構(gòu)圖<
85、;/p><p> 其他的Java集成開發(fā)環(huán)境有Jbuilder、WebSpher Studio、NetBeans。然而Eclipse以其強大的可擴展性和開放性脫穎而出,擁有為數(shù)眾多的支持者,也被許多大的企業(yè)所青睞。</p><p> 第三章 Android開發(fā)環(huán)境的搭建</p><p> Android平臺為開發(fā)者提供了源碼開放的軟件開發(fā)包(SDK),它包含了使用
86、Java語言開發(fā)Android平臺應用的必要工具和組件(API)。進行開發(fā)前先要建立合適的開發(fā)環(huán)境,其中基于Java的整合型可擴展平臺Eclipse是我們的首選。</p><p> 3.1 搭建Eclipse開發(fā)環(huán)境</p><p> Eclipse的運行建立在JRE之上,因此必須先安裝JRK。可以從http://java.suh.com下載JDK5或JDK6,然后按提示進行JDK的安
87、裝。</p><p> 安裝完成后,再配置環(huán)境變量:如在WindowsXP或Windows 2000的操作系統(tǒng)中,可右鍵單擊“我的電腦”,然后依次選擇“屬性”\“高級”\“環(huán)境變量”,新建一個系統(tǒng)變量JAVA_HOME,變量值為JDK的安裝路徑。如下圖所示:</p><p> 圖3-1-1 JDK的安裝路徑</p><p> 同樣的方法,添加另一個系統(tǒng)變量C
88、LASSPATH,變量值為:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar ,如下圖所示:</p><p> 圖3-1-2 編輯系統(tǒng)變量1</p><p> 在系統(tǒng)變量PATH后面添加:</p><p> 圖3-1-3 編輯系統(tǒng)變量2</p><p> 至此便完成了JDK的安裝
89、。</p><p> 有了Java運行環(huán)境,就可以下載Eclipse ZIP包,解壓后就能直接運行Eclipse.exe,下面是eclipse的開發(fā)界面:</p><p> 圖3-1-4 eclipse的開發(fā)界面</p><p> 在Eclipse中安裝一個名為ADT的Android開發(fā)工具插件,就可以使用SDK進行Android應用開發(fā)。ADT安裝步驟:首
90、先下載ADT0.9,在Eclipse中依次選擇Help > Software Updates > Available Software,點擊Add Site…,在彈出的對話框中選擇Achive…,選擇下載的ADT,如下圖所示:</p><p> 圖3-1-5 ADT的安裝界面</p><p> 確定后,會看到ADT選項出現(xiàn)在對話框中:</p><p&g
91、t; 圖3-1-6 ADT選項界面</p><p> 選中這個選項,然后點擊install...,一路next下去。最后重啟eclipse完成ADT插件的安裝。</p><p> ADT安裝完畢后,還要配置Eclipse參數(shù),使其指向SDK根目錄,過程如下:下載最新版本的Android SDK,如android-sdk-windows-1.5_r1.zip,解壓。在Eclipse中
92、選擇Window > Preferences打開參數(shù)設置面板,選擇Android選項;在SDK路徑中填入Android的安裝路徑,單擊Apply和ok,完成參數(shù)設置。如下圖所示:</p><p> 圖3-1-7 SDK路徑中填入Android的安裝路徑界面</p><p> 在環(huán)境變量PATH中添加Android SDK的tools的目錄路徑,如:D:\AndroidSDK\t
93、ools。至此,就能在Eclipse環(huán)境下進行Android應用的開發(fā)了。</p><p> 3.2 Android應用程序組件的使用</p><p> Android應用程序以各種組件(API)為基礎,API是Android軟件平臺的重要組成部分,也是開發(fā)Android應用的關鍵所在。下面介紹幾種主要的Android API。</p><p> (1)當前活
94、動程序Activity:作為最常用的應用程序組件,幾乎所有Activity都會通過創(chuàng)建UI窗口與用戶進行交流。Activity具有生命周期,它包含運行、暫停、停止等幾個狀態(tài),狀態(tài)間的轉(zhuǎn)換可通過調(diào)用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestory()等方法來實現(xiàn)。要開啟新的activity,可以調(diào)用startActivit
95、y(Intent),或調(diào)用startSubActivity(Inten,t int),后者通常和onActivityResult(int,int, String Bundle)聯(lián)合使用,以從一個activity獲取某結(jié)果并返回給打開它的activity。</p><p> (2)圖像顯示View:View是最基本的UI構(gòu)件,它在屏幕中占據(jù)一個矩形區(qū)域可用來顯示文本、圖像等內(nèi)容,還可完成圖像事件處理。常用的Vie
96、w方法有:inflate()(由XML文件生成View)、onDraw(Canvas)(對View進行填充)、onMeasure( int, int)(測量View的高度和寬度)、onLayout()(完成View的布局)、onKeyDown(int,KeyEvent)(View中有按鍵操作時被調(diào)用)、onFocusChanged(boolean,int)(當View得到或失去關注時被調(diào)用)、setOnClilckListener()(
97、設置View點擊事件監(jiān)聽器)。View也包含一些子類,如:TextView(布局文件中的文本顯示)、EditText(布局文件中的文本編輯)、Button(按鈕)、ListView(顯示列表)。</p><p> (3)事件Intent: Intent抽象描述了想要執(zhí)行的某種操作,它與startActivity一起使用可以開啟新的activity,與startService一起使用可以開啟后臺服務。Intent
98、最重要的作用還是加載activity,它是不同activity間的橋梁。Intent也可以被認為是一種概括操作行為的數(shù)據(jù)結(jié)構(gòu),它主要包括action(動作)和data(數(shù)據(jù))兩部分,此外它還具有一些附加屬性如category( intent種類)、type(數(shù)據(jù)類型)等。常用的Intent方法有intent()(構(gòu)造intent)、addcategory()(添加intent類型)、getAction()(獲取intent動作)、get
99、Data()(獲取intent數(shù)據(jù))等。</p><p> (4)數(shù)據(jù)存取與共享機制ContentProvider: ContentProvider可實現(xiàn)應用程序的數(shù)據(jù)存取及不同應用程序間的數(shù)據(jù)共享。ContentProvider為應用程序提供一些訪問方法,包括: Query(Uri,String[],String,String[],String,String, String)(數(shù)據(jù)信息的查詢),insert(
100、Uri,Contentvalues)(在Contentprovider中添加新數(shù)據(jù)), updata(Uri,Contentvalues,String,String[])(更新Conntprovider中的數(shù)據(jù)), delect(Uri,String,String[ ])(刪除數(shù)據(jù)), Gettype(Uri) (獲取數(shù)據(jù)類型)。其中,Uri標明了ContentProvider存儲的數(shù)據(jù)類型,在執(zhí)行訪問方法時都需依據(jù)Uri作為路徑標識來
101、確定要訪問哪個ContentProvider。</p><p> 第四章 Android短信備份設計實現(xiàn)</p><p> 本章所需要描述的Android短信備份設計實現(xiàn),其內(nèi)容涉及,用戶短信讀取模塊的實現(xiàn)和用戶短信備份模塊的實現(xiàn)這四個模塊。以下就是針對這兩個模塊的展開描述。其短信備份基本流程如下:</p><p> 圖4-1 短信備份基本流程</p&
102、gt;<p> 4.1用戶短信讀取模塊的實現(xiàn)</p><p> Android API支持開發(fā)可以發(fā)送和接收SMS消息的應用程序。目前我們開發(fā)過程中使用的Android模擬器還不支持發(fā)送SMS,但它可以接收SMS?,F(xiàn)在我們來探索一下Android對SMS的支持,我們將會構(gòu)建一個小小的應用程序來監(jiān)聽移動設備(或模擬器)上接收到的SMS消息,并將它顯示出來。</p><p>
103、 我們來定義一個Intent接收器來處理SMS接收事件,其java代碼為附錄【1】。</p><p> 我們需要對這個Intent接收器進行配置以使它能獲取SMS接收事件,' android.provider.Telephony.SMS_RECEIVED’這個事件狀態(tài)表示了SMS已被接收。我們可以在AndroidManifest.xml中進行如下配置,附錄【2】。</p><p&g
104、t; 為了能讓我們能接收SMS,我們得先進行權(quán)限的指定,可以在AndroidManifest.xml中如下配置,附錄【3】。</p><p> 現(xiàn)在,我們的Intent接收器就可以在Android設備接收到SMS的時候被調(diào)用了,余下的事情就是去獲取和顯示接收到的SMS消息文本了,我們是使用SmsMessage.createFromPdu來讀取短信的,而實現(xiàn)的獲取和顯示接收的實現(xiàn)代碼如【附錄4】。</p&
105、gt;<p> Android設備接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage這個類可以儲存SMS的相關信息,我們也可以從接收到的pdu中創(chuàng)建新的SmsMessage實例,Toast界面組件可以以系統(tǒng)通知的形式來顯示接收到的SMS消息文本。 </p><p> 運行程序,現(xiàn)讓我們來在模擬器中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android的天氣預報短信系統(tǒng)的畢業(yè)設計說明書
- 基于短信收發(fā)系統(tǒng)畢業(yè)設計
- 基于android的短信播報系統(tǒng)【畢業(yè)論文】
- android畢業(yè)設計--基于android的音樂播放的設計與實現(xiàn)
- 基于android的中國象棋畢業(yè)設計
- 基于android平臺的飛機游戲畢業(yè)設計
- 基于android平臺的飛機游戲畢業(yè)設計
- 畢業(yè)論文--基于android平臺的短信通的設計與實現(xiàn)
- 基于 Android的中文語音短信應用設計.pdf
- 畢業(yè)設計---基于android的日程管理系統(tǒng)
- 【畢業(yè)設計】基于android植物大戰(zhàn)僵尸
- 畢業(yè)設計---基于android的移動選課系統(tǒng)的設計
- android畢業(yè)論文--基于android短信平臺的管理與開發(fā)(含外文翻譯)
- android相關畢業(yè)設計
- android畢業(yè)設計報告
- android畢業(yè)設計論文
- 基于.net短信發(fā)送平臺的設計與實現(xiàn)【畢業(yè)設計】
- 畢業(yè)設計圖紙備份.dwg
- 基于android平臺的手機游戲開發(fā)【畢業(yè)設計】
- 基于android平臺的飛機游戲畢業(yè)設計x
評論
0/150
提交評論