基于android的五子棋游戲的設計畢業(yè)論文_第1頁
已閱讀1頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p>  題  目: 基于Android的 </p><p>  五子棋游戲設計  </p><p>  院  系:  計算機與信息工程學院 </p><p>  專業(yè)年級:  2008電子科學與技術

2、 </p><p>  學生姓名:   學號:  </p><p>  指導教師:   </p><p>  2012年06月11日</p><p>  基于Android的五子棋游戲設計</p><p><b>  摘

3、要</b></p><p>  移動互聯(lián)網時代的到來極大的改變了我們的生活,而Android是一種以Linux為基礎的開放源碼操作系統(tǒng)迅速占領了智能機操作系統(tǒng),所以在android環(huán)境下開發(fā)顯得尤為必要。本文詳細介紹了在Android平臺上以Java為語言編寫游戲的過程。五子棋游戲的開發(fā)不僅是一個簡單游戲的編寫過程,更重要的是在系統(tǒng)分析和設計階段所做的工作。本文在設計過程中嚴格遵循軟件工程學的方法,用

4、分階段的生命周期計劃嚴格管理,并主要講述了程序的總體設計、詳細設計階段,對程序進行需求迭代,不斷修正和改進,利用surface重繪等數(shù)據(jù)存儲功能,直到形成一個完善的可行性系統(tǒng).界面美觀、大方,方便的操作與良好的視覺感應共同構成了“基于Android平臺的五子棋游戲設計與開發(fā)”的設計。</p><p>  關鍵詞: Android,Java,數(shù)據(jù)存儲,軟件工程,五子棋</p><p>  T

5、he five in a row game based on Android</p><p><b>  Abstract</b></p><p>  Arrival of the mobile Internet era has greatly changed our lives, and Android is a Linux-basedopen source ope

6、rating system quickly occupied the smartphone operating system, Android developmentis particularly necessary under the circumstances. This paper focus on a "based on the Android platform of Five in a Row game design

7、 and development" program design and application system develoment issues as the background, introduces in detail in the Android platform to Java language write games for the p</p><p>  Key words: Andr

8、oid,java, Data Storage,Software Engineering, Five in a Row</p><p><b>  目 錄</b></p><p><b>  1.緒論5</b></p><p><b>  1.1 背景7</b></p><p&

9、gt;  1.2 課題來源7</p><p>  1.3 國內外研究現(xiàn)狀8</p><p>  1.4 論文主要工作8</p><p>  2 Android的開發(fā)環(huán)境9</p><p>  2.1 操作系統(tǒng)9</p><p>  2.2 Android開發(fā)環(huán)境9</p><p> 

10、 2.3 Android開發(fā)環(huán)境變量配置10</p><p>  2.3.1 jdk的配置10</p><p>  2.3.2 sdk的配置11</p><p>  2.4 eclipse設置11</p><p>  2.5 Android開發(fā)環(huán)境配置最終步驟12</p><p>  3 Android的架構

11、分析12</p><p>  3.1 Android的功能特征12</p><p>  3.2 Android架構分析14</p><p>  3.2.1 應用程序框架14</p><p>  3.2.2 類庫15</p><p>  3.2.3 Android運行時的組件16</p><

12、;p>  3.3 Android應用的構成和工作機制16</p><p>  4 Android應用程序架構結構剖析16</p><p>  4.1應用程序基礎17</p><p>  4.2 應用程序組件17</p><p>  4.2.1 活動(Activities)18</p><p>  4.2

13、.2 服務(Services)20</p><p>  4.2.3 廣播接收者(Broadcast receivers)21</p><p>  4.2.4 內容提供者(Content providers)22</p><p>  5 程序的設計與實現(xiàn)22</p><p>  5.1 程序的算法研究:23</p>&l

14、t;p>  5.1.1 棋盤布局的數(shù)據(jù)結構23</p><p>  5.1.2 行棋坐標判定24</p><p>  5.1.3 勝負的判定25</p><p>  5.2 流程設計26</p><p>  5.3 游戲的實現(xiàn):27</p><p>  5.4 改進與優(yōu)化29</p>&

15、lt;p><b>  總結30</b></p><p><b>  參考文獻31</b></p><p><b>  附錄132</b></p><p><b>  1.緒論</b></p><p>  智能手機(Smartphone),具有獨

16、立的操作系統(tǒng),像個人電腦一樣支持用戶自行安裝軟件、游戲等第三方服務商提供的程序,并通過此類程序不斷對手機的功能進行擴充,同時可通過移動通訊網絡來實現(xiàn)無線網絡接入。目前,全球多數(shù)手機廠商都有智能手機產品,而芬蘭諾基亞、美國蘋果、加拿大RIM(黑莓)、美國摩托羅拉、中國臺灣宏達(htc)更是智能機中的佼佼者。</p><p>  智能手機具有五大特點:1. 具備了無線接入互聯(lián)網的能力,即要有GSM的支持網絡下的GPR

17、S或者是CDMA網絡支持下的CDMA 1X或3G網絡。2. 人性化,可以根據(jù)個人需要擴展機器的功能。3. 它是具有開放性的操作系統(tǒng),還可以安裝非常多的應用程序,使得智能手機的功能可以得到無限的擴展。4. 具有PDA功能,其中包括個人信息管理、日程記事、任務安排、多媒體應用、瀏覽網頁。5.強大的功能,擴展性能強,第三方軟件支持多。</p><p>  Android的誕生:從時間要追溯到 二零零三年,在參與到 An

18、droid 的傳奇之前,它的創(chuàng)始人Andy Rubin 在周刊中這么說過:“在開發(fā)對于用戶位置以及狀態(tài)更加敏感的移動設備方面存在著巨大的潛力”,他還說過:“很快他們就會在消費類產品中使用?這些位置信息,如果開發(fā)者足夠聰明的話?!爆F(xiàn)在看起來他自己都沒想到他的預言是多么的準確:實際上,移動領域將會發(fā)生巨變,從而催生出我們從未見過的強大的智能手機。到二零零五 年有很多關于 Google 即將進軍移動設備制造領域并專注于制造基于位置服務的手機的

19、謠傳,但最大的障礙就在于 Google 沒有自己的可以達成這個目標的平臺。</p><p>  在二零零五 年 七月,Google收購了 Android,這么一個小規(guī)模收購行動還是立刻引起了移動業(yè)界的興趣,它們懷疑這是 Google ?進入移動市場的的標志。盡管如此,這個當時只是一個小規(guī)模的移動軟件開發(fā)公司正是由 ?Andy Rubin、Rich Miner、Nick Sears 以及 Chris White 四

20、個人共同創(chuàng)建的。現(xiàn)在看來,他們的懷疑是正確的。差不多兩年半以后,在 二零零七 年 十一 月 五 日,Google發(fā)布了Android,它這個的發(fā)布給移動業(yè)界帶來了一場可怕的風暴,,基于 Linux的全新移動操作系統(tǒng)。這不單單是一個全新的移動系統(tǒng),非常重要的是:它是開源的。</p><p>  這是當時新成立的開放手機聯(lián)盟整合下的成果,諸如 Google、HTC、Intel、Sprint-Nextel、T-Mobi

21、le 以及 NVIDIA 都是這個聯(lián)盟的成員,該聯(lián)盟的目的就是要創(chuàng)立移動設備的開放標準。第一款搭載 Android 系統(tǒng)的手機是 2008 年 9 月由 T-Mobile 發(fā)布的 G1,它擁有 GPS 功能,3.1M 攝像頭,以及一系列的 Google 應用。G1 的面市,正式拉開了 Google 以及整個移動業(yè)界激動人心的大冒險的序幕。</p><p>  Android 操作系統(tǒng)版本</p>&

22、lt;p>  Android 1.1 (發(fā)布于 2009 年 2 月)</p><p>  Android 1.5 “Cupcake” 這是第一個主要版本,發(fā)布于 2009 年 5 月.這個升級之后,它的更新給用戶帶來了新的體驗。用戶界面得到了極大的改良,并且增添了以下功能。</p><p>  Android 1.6 “Donut” 2009 年 9 月發(fā)布。搭載Android 1

23、.6 的 HTC Hero 獲得了意想不到的成功。使得原來用許多都沒有用過Android的人都對Android非常的關注,并且也讓競爭者蘋果和微軟更加警惕了。</p><p>  Android 2.0/2.1: 2009 年 10 月 26 日,又一個主要版本升級以創(chuàng)紀錄的速度放出。這次,大版本升級到了 Android 2.0/2.1 “Eclair.”。</p><p>  Andro

24、id 2.0.1 SDK 在 2009 年 12 月 3 日發(fā)布出來,后來是2010 年 1 月 10 日發(fā)布的2.1 版本。很多圍觀群眾和用戶可能會有點奇怪:“Android為什么會被用甜點作為它系統(tǒng)版本的代號?”,其實這個命名方法開始在 Andoird 1.5 發(fā)布出來的時候。每一個版本代表的甜點的尺寸就越變越大,然后按照字母的數(shù)序:小蛋糕,甜甜圈和松餅。在這之前人們預計 2.2 版本的代號可能是“餡餅”,但這個最終被證明是錯誤的,

25、“FroYo”(凍酸奶)才是 Android 2.2 這個伴隨 Google Nexus One 發(fā)布的新版的最新代號。而下一個版本的代號將會是“姜餅”。Android 2.2 “Froyo”: Nexus One 的用戶已經開始接受 Android 2.2 “FroYo”的無線更新,其它機型的用戶可能會在短時間內獲取到這一更新的。這一版本的更新出來會讓大量讓其他手機用戶垂涎三尺。</p><p>  有關的消息

26、眾口一詞聲稱 ?Android 3.0 “Gingerbread”,Google 將會在今年秋天的某個時候發(fā)布出來,它將帶來給用戶新的體驗。</p><p>  從 Android 的發(fā)展旅途中,我們看到 2003 年 Andy他是一個有遠見的人,看到了 2005 年的起步和被 Google 的收購,也看到了系統(tǒng)的進步以及新的機型的快速發(fā)布。所有這一切都讓我們相信,Android 將會走向世界第一移動操作系統(tǒng)寶座

27、的步伐是勢不可擋的。Android 平板電腦也在今年的夏天開始發(fā)布以及 Google TV 發(fā)布以后(也許還有 Google Music?),Android 可能真的會將繼續(xù)帶著我們走向移動設備夢想的彼岸。</p><p><b>  1.1 背景</b></p><p>  在我們的生活中有許多的游戲,但是游戲不同,它也會給玩家?guī)聿煌母惺芎蜕罾砟?。游戲是我們?/p>

28、常生活的一個必不可少的娛樂項目,也帶動了游戲相關產業(yè)市場的發(fā)展。游戲平臺是經過從游戲機到電視游戲,然后從到pc游戲,到手機游戲,中間經歷了很多的技術的更新和變革。但隨著新技術的發(fā)展和我們生活水平質量的提高,手機開始逐漸變?yōu)槠占?,因為手機是非常小巧便捷的,而且方便的特性成為我們日常生活中必備通訊工具。而基于手機平臺的游戲也就擁有的市場空間是巨大的,也因隨著3g的開通和應用,手機游戲必然會迎來新的一輪游戲熱潮!</p><

29、;p><b>  1.2 課題來源</b></p><p>  現(xiàn)在的移動電話是小型的計算機,它的處理能力與臺式機的標準處理能力相比很有限,但是足夠運行一個小型的游戲?,F(xiàn)在的手機的一個特性就是它們還是網絡計算機,能夠高速發(fā)送和接收數(shù)字數(shù)據(jù)。除了語音數(shù)據(jù)以外,它們還可以發(fā)送和接收其它類型的數(shù)據(jù)。所以這樣的網絡游戲也可以在手機上實現(xiàn)。短信類游戲就好像“虛擬寵物”那樣。短信游戲是通過玩家和游

30、戲服務商通過短信中的文字的內容來交流,達到進行游戲的目的的一種文字游戲。 由于短信游戲的整個游戲過程都是通過文字來表達,造成短信游戲的娛樂性較差。但是短信游戲卻是兼容性最好的手機游戲之一。只要您的手機可以發(fā)短信,您就可以暢快的享受短信游戲給您帶來的快樂了。圖形類游戲更接近我們常說的“電視游戲”,玩家通過動畫的形式來發(fā)展情節(jié)進行游戲。由于游戲采用了更為直觀且更為精美的畫面直接表現(xiàn),因此圖形類游戲的游戲性和代入感往往較文字類游戲高。因此廣受

31、玩家們的歡迎。嵌入式游戲是一種將游戲程序預先固化在手機的芯片中的游戲。由于這種游戲的所有數(shù)據(jù)都是預先固化在手機芯片中的,因此這種游戲是無法進行任何修改的。也就是說,您不能更換其它游戲的,只能玩您手機中已經存在的娛樂游戲,而且您也不能將它</p><p>  本題目是基于Android平臺開發(fā)的一個小型的程序。其實都差不多,在有JAVA的智能手機上都可以運行。其實手機是我們生活中不可缺少的工具,這些小游戲可以帶給我

32、們快樂和放松我們的心情。無論什么樣手機,我想買起來的時候上面就有一些它自帶的各種小游戲,其中有一個獨特的小游戲也是非常重要的。</p><p>  1.3 國內外研究現(xiàn)狀</p><p>  Android 是Google開發(fā)的基于Linux平臺的開源手機操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應用程序 —— 移動電話工作所需的全部軟件,而且不存在任何以往阻礙移動產業(yè)創(chuàng)新的專有權障礙。Goog

33、le與開放手機聯(lián)盟合作開發(fā)了 Android,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達電和 T-Mobile 在內的 30 多家技術和無線應用的領軍企業(yè)組成。Google通過與運營商、設備制造商、開發(fā)商和其他有關各方結成深層次的合作伙伴關系,希望借助建立標準化、開放式的移動電話軟件平臺,在移動產業(yè)內形成一個開放式的生態(tài)系統(tǒng)?! ndroid 作為谷歌企業(yè)戰(zhàn)略的重要組成部分,將進一步推進"隨時隨地為每個人提供信息&quo

34、t;這一企業(yè)目標的實現(xiàn)。我們發(fā)現(xiàn),全球為數(shù)眾多的移動電話用戶從未使用過任何基于 Android 的電話。谷歌的目標是讓(移動通訊)不依賴于設備甚至平臺。出于這個目的,Android 將補充,而不會替代谷歌長期以來奉行的移動發(fā)展戰(zhàn)略:通過與全球各地的手機制造商和移動運營商結成合作伙伴,開發(fā)既有用又有吸引力的移動服務,并推廣這些產品?! ¢_放手機聯(lián)盟的成立和 Android 的推</p><p>  1.4 論文主

35、要工作</p><p>  此游戲主要是采用Android的View框架編寫,部分框架運用Android中的其他組件。主要運用了算法來實現(xiàn)對棋局的分析,棋盤輸贏的判定。 </p><p>  UI方面:此游戲當進入游戲的界面時,調用的是一個用相對布局-AbsoluteLayout的XML布局文件。其中包括了一個IamgeView和4個Button.分別實現(xiàn)了不同的功能。第一個Button是

36、進入新游戲,點擊按鈕進入新游戲,來選擇對手。第二個Button是幫助,用了一個TextView來說明怎樣來進行游戲。第三個Button是游戲的關于,用了一個AlertDialog來介紹了一下游戲的這個游戲的好處。第四個Button是游戲的退出按鈕。在游戲中,我用畫線來不滿了整個的手機屏幕,在上面用了TextView來進行了文字的說明和提示。</p><p>  本篇論文,主要目的是為了探討更加深入的理解Andro

37、id,為移動終端上的游戲軟件的打造提供一個思路。</p><p>  2 Android的開發(fā)環(huán)境</p><p>  本章將主要介紹如何構建Android開發(fā)環(huán)境,包括獲取Android SDK、Eclipse以及進行Android Eclipse插件設置等。</p><p><b>  2.1 操作系統(tǒng)</b></p><

38、;p>  目前只支持XP(32-bit)、Vista(32/64-bit)、Mac OS X 10.4.8或更新版本(x86)、Linux(只在Linux Ubuntu Dapper Drake上面做過測試)。</p><p>  系統(tǒng)XP sp2/sp3 32bit 來做講解,其他系統(tǒng)的可以google一下差異,反正都大同小異的。</p><p>  2.2 Android開發(fā)環(huán)境

39、</p><p>  無論是官方還是我本人,都建議使用eclipse進行開發(fā),當然,eclipse版本要在3.3以上,這是官方說法,3.3以下我也沒測過,3.3 (Europa)、3.4 (Ganymede) 都可以,java版本或者EE版本也都沒問題的,可以到eclipse官方下載最新版本。因為開發(fā)是基于java的,所以jdk是少不了的,jdk要求是5.0或者6.0,我還是用5.0比較多,可以到sun官方下載。

40、</p><p>  2.3 Android開發(fā)環(huán)境變量配置</p><p>  2.3.1 jdk的配置</p><p>  首先要到sun官方下載jdk,注意的是下載jdk而不是下載jre,因為jre是提供java的運行環(huán)境而不是開發(fā)環(huán)境。sun官方網站是:http://java.sun.com</p><p>  下載后安裝是下的解壓包

41、那就解壓到某目錄,例如解壓到是C:\Program Files\Java\jdk1.5.0_14</p><p>  右鍵點擊我的電腦 -> 屬性 -> 高級,點擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入 JAVA_HOME變量值中輸入剛才的目錄,比如我的就C:\Program Files\Java\jdk1.5.0_14 。效果如圖2-1所示:</p><p&

42、gt;  圖2-1進入環(huán)境變量</p><p>  確定后再新建一個變量名為classpath,變量值為 %JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar , 確定后找到PATH的變量,雙擊或點擊編輯,在變量值最前面加上%JAVA_HOME%/bin; 注意里面的是,確定、確定、確定后即可。具體如下圖2-2所示:</p><p>  圖2-2

43、環(huán)境變量的設置</p><p>  然后開始 - 運行 cmd,輸入java或者javac看看有沒有效果,如果出來一大堆其它的東西,那就好了,如果出現(xiàn)類似xxx不是內部或者是外部命令之類的,那就說明你的設置有問題,看看那里出問題然后加以改正。</p><p>  2.3.2 sdk的配置</p><p>  因為我們要開發(fā)的android應用程序,所以下的sdk是G

44、oogle那里下載,地址在http://developer.android.com/sdk/1.5_r3/index.html 以后更新后估計地址會變,所以大家可以從http://developer.android.com/index.html進入android主頁,然后點擊sdk就到了這個下載頁面,我是XP,當然下載了第一個Windows的版本。下載后解壓到一個目錄,如是D:\SDK\android-sdk-windows-1.5_r

45、3\android-sdk-windows-1.5_r3 然后同樣要設置環(huán)境變量,同jdk設置,新建一個SDK_HOME,值為D:\SDK\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3 ,然后找到path,在前面加上%SDK_HOME%\tools; 就OK了。和jdk一樣,我們也可以測試一下環(huán)境變量是否設置成功,cmd窗口中輸入android,出現(xiàn)一堆東西,就完成了。<

46、;/p><p>  2.4 eclipse設置</p><p>  當然,以上都搞定后,還不能馬上用eclipse開發(fā)android應用程序,還必須添加eclipse插件才行,幸好這步驟非常輕松,打開eclipse后,點擊菜單欄的help -> install new software... 然后點擊Add會出來一個Add Site的窗口,這里Name輸入android(自己取個就是了)

47、,location中輸入插件的網絡地址:</p><p>  https://dl-ssl.google.com/android/eclipse/</p><p>  然后就等待連接了,然后install,把"Android DDMS" 和 "Android Development Tools"都選中,finish就可以了,可能有段時間會去計算插件占

48、用資源情況,慢慢等會。完成后會提示重啟eclipse來加載插件,ok重啟,就可以用了。</p><p>  2.5 Android開發(fā)環(huán)境配置最終步驟</p><p>  為什么要有這個步驟,是因為運行了example的時候總會出現(xiàn)“Failed to find an AVD compatible with target”,所以在這里寫一下該步驟來提供大家的方便。</p>&

49、lt;p>  avd必須在運行實例之前前創(chuàng)建好,這個時候可以直接在cmd中輸入 android list,就會列出幾個由avd創(chuàng)建的api,如果有id1 id2 id3 分別對應sdk1.1 sdk1.5 GoogleAPIs。</p><p>  然后就運行android create --name myname(取一個英文的名字) --target 3(如果要用sdk1.5就輸入2,1.1輸出1)<

50、;/p><p>  3 Android的架構分析</p><p>  3.1 Android的功能特征</p><p>  (l)應用程序架構:在應用程序架構內已經具備多種不同的基礎組件,在開發(fā)應用程序時,就可以直接調用這些組件來使用,可以節(jié)省開發(fā)應用程序的心力及時間。</p><p>  (2)Dalvik虛擬機器:在Android平臺上所使用

51、Java虛擬機,不是Sim公司的標準Java虛擬機,而是使用Google自主開發(fā)的代號為Dalvik的虛擬機,它在保證API方面的兼容的同時,針對移動手機進行了大幅優(yōu)化,占用資源更小,運行效率更高。</p><p>  (3)集成的瀏覽器:集成的瀏覽器是Android內建的瀏覽器,是以WebKit的瀏覽引擎為基礎所開發(fā)成的。WedKit是一個開源瀏覽器網頁排版引擎,目前使用WebKit引擎的瀏覽器主要有:Safa

52、ri,Midori,Epiphany等。配合Android手機的功能,可以在瀏覽網頁時,達到更好的效果,例如:局部性的縮放網頁上的資訊、觸控式的操作等效果。</p><p>  (4)優(yōu)化的繪圖能力:在程序里可以用到的繪圖功能分為2D與3D兩個方面。在2D方面,Android提供了一套特有的類庫(SGL;而在3D方面則是使用OpenGLES1.0(openGL for Embedded systems)規(guī)范的類庫

53、。它們是一種非??斓膱D形引擎,并且支持硬件加速。</p><p>  (5)SQLite數(shù)據(jù)庫:SQLite提供結構化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫,它的設計目標是嵌入式的,目前已經在很多嵌入式產品中使用了它,它占用的資源非常低。它能夠支持Windows/Linux/U nix等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreS

54、QL來講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小只有250KB但支持數(shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。同時它還支持事務功能和并發(fā)處理等等。SQLite也是一套開放性的關聯(lián)式資料庫,其特點在于輕量性方面的設計結構,更適合在手機上使用。</p><p>  (6)多媒體的支持能力:主要用于播放媒體文件。這同時包括對音

55、頻(如播放MP3或其他音樂文件等)和視頻(如播放從網上下載的視頻)的支持,并支持“播放URI地址”(Note:URI即是統(tǒng)一資源識別地址)模式—在網絡上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:JPG、PNG、GIF等格式。</p><p>  (7)GSM技術:Global System for Mobile Communications,即全球移動通訊系統(tǒng),俗稱”全球通”,是一種起源于歐洲的移動

56、通信技術標準,是第二代移動通信技術,其開發(fā)目的是讓全球各地可以共同使用一個移動電話網絡標準,讓用戶使用一部手機就能行遍全球。GSM技術是屬于手機硬件方面的展現(xiàn),也是在開發(fā)Android應用程序時可以突出的特點之一。</p><p>  (8)藍牙、EDGE、3G及Wi-Fi:藍牙是一種新型、開放、低成本、短距離的無線連接技術,可取代短距離的電纜,實現(xiàn)話音和數(shù)據(jù)的無線傳輸。EDGE(Enhanced Data Ra

57、te for GSM,Evolution),即增強型數(shù)據(jù)速率GSM演進技術。EDGE是一種從GSM到3G的過渡技術,它主要是在GSM系統(tǒng)中采用了一種新的調制方法,即最先進的多時隙操作和SPSK調制技術。由于8PSK可將現(xiàn)有GSM網絡采用的GMSK調制技術的信號空間從2擴展到8,從而使每個符號所包含的信息是原來的4倍。Wi-Fi(WirelessFidelity),即無線保真技術,與藍牙技術一樣,同屬于在辦公室和家庭中使用的短距離無線技術

58、。該技術使用的是2.4GHz附近的頻段,該頻段目前尚屬沒用許可的無線頻段。其目前可使用的標準有兩個,分別是IEEE802.lla和IEEE802.11b。這些通訊能力也是屬于手機硬件方面的展現(xiàn),也是在開發(fā)Android應用程序時可以突出的特點之一。</p><p>  (9)GPS: Global Positioning System,即全球定位系統(tǒng),它是一個由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。這個系統(tǒng)可以保證

59、在任意時刻和任何地點都可以同時觀測到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測點的經緯度和高度,以便實現(xiàn)導航、定位、授時等功能。這項技術可以用來引導飛機、船舶、車輛以及個人。這個同樣也是屬于手機硬體方面的體現(xiàn),也是在開發(fā)Android應用程序是可以突出的特點之一。</p><p>  3.2 Android架構分析</p><p>  圖中顯示的是Android架構的五個主要部分。</p&

60、gt;<p>  3.2.1 應用程序框架</p><p>  在Android SDK中,定義了讓開發(fā)者使用與核心應用程序相同API的權限應用程序框架是為了要簡化組件的重新利用而設計的,應用程序可以發(fā)布功能為其它應用程序所使用。但是,這要受限于應用程序架構的安全機制,使用者以用同樣的機制來新增、置換組件。目前所有的應用程序是由服務及系統(tǒng)來組成,包含有:</p><p>  

61、(l)一套強大和可擴展的視圖系統(tǒng):用來建構一個應用程序的基本組件,包了在開發(fā)系統(tǒng)畫面時,常用的列表、網格、文本框、按鈕等控制項,甚至是內嵌的Web瀏覽器。</p><p>  圖2-1 Android架構的五個部分</p><p>  (2)內容提供者:使應用程序可以訪問另一個應用程序的數(shù)據(jù)(如聯(lián)系人數(shù)庫),或者共享它們自己的數(shù)據(jù)。</p><p>  (3)資源

62、管理器:提供各種非程序代碼的資源讓應用程序去使用。例如:本字符串、圖形文件或排版相關的布局文件。</p><p>  (4)通知管理器:提供應用程序在狀態(tài)欄中顯示應用程序自定義的提示信息。</p><p>  (5)活動管理器:管理所有應用程序的生命周期及提供常用的導航回退功能。例如:啟動應用程序要用到的資源準備及關閉應用程序時釋放內存及相關資源等工作。</p><p&

63、gt;  (6)視窗管理器:用來管理所有啟動程序的視窗。</p><p>  (7)位置管理器:用來管理地圖服務的相關功能。</p><p>  (8)電話管理器:用來管理用戶撥打與接聽電話的相關功能。</p><p>  (9)包管理器:管理所有安裝在Android系統(tǒng)內的包。</p><p><b>  3.2.2 類庫<

64、/b></p><p>  在Android中包含一些C/C++的類庫,這些類庫能被Android系統(tǒng)中不同的組件來使用。開發(fā)者可以通過應用程序框架使用這些功能。部分核心類庫列表如下:</p><p>  (1)surface Manager:主要的功能是讓開發(fā)者可以去存取/顯示系統(tǒng)及管理的功能,在[顯示]與[存取操作]間的對應、互動以及實現(xiàn)無接縫的2D/3D多應用程序之間的整合。例

65、如:在2D、2D顯示上的合成、疊合動作。</p><p>  (2)3Dlibraries:主要是依openGLES1.0規(guī)范所定義的3D繪圖引擎。該庫使用硬件加速(當硬件可用時),可以將硬件的3D功能做最佳化的處理顯示。</p><p>  (3)SGL:主要是處理有關顯示2D方面的繪圖引擎。</p><p>  (4)Media Frame work:主要是以p

66、acketVideo公司的OpenCORE為基礎所發(fā)展的多媒體類庫,該庫支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。例如:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式</p><p>  (5)Free Type:主要是用來顯示點陣圖和處理向量字形的。</p><p>  (6)SSL:(secureSocketsuyer),中文名為“安全套接層協(xié)議層”,

67、它是網景公司提出的基于WEB應用的安全協(xié)議,當前版本為3.0。SSL協(xié)議指定了一種在應用程序協(xié)議(如HTTP、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分層的機制,它為TCP/IP連接提供數(shù)據(jù)加密、服務器認證、消息完整性以及可選的客戶機認證。它已被廣泛地用于Web瀏覽器與服務器之間的身份認證和加密數(shù)據(jù)傳輸。SSL協(xié)議位于TCP膽協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記

68、錄協(xié)議(SSL Record Proto col):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSL Hand shake proto col):它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進行身份認證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議提供的服務主要有:①認證用戶和服務器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務器;②加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;③維

69、護數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中</p><p>  (7)SQLite:SQLite是一套開放性的關聯(lián)式資料庫,能夠被所有應用程序使用的輕量級的關系數(shù)據(jù)庫引擎。</p><p>  (8)web Kit:是一個先進的網頁瀏覽器引擎,被用來構建Android瀏覽器和內嵌的web視圖,也可以讓開發(fā)者利用這個引擎來做不同的應用。</p><p>  (9)lib c

70、:就是一個BSD標準C類庫。但是,針對Linux嵌入式裝置進行過最佳化的調整。</p><p>  3.2.3 Android運行時的組件</p><p>  雖然Android是用Java語言來開發(fā)、撰寫應用程序,但卻不使用Java運行時組件來執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運行時組件來執(zhí)行程序。Android運行時組件包括兩個重要的部分,一個是核心類庫

71、,另一個是Dalvik虛擬機。</p><p>  3.3 Android應用的構成和工作機制</p><p>  對于一個Android應用程序來說,是由Activity、IntentReceiver、Service、Content Provider四部分組成,但并不是每一個Android應用程序都必須由這四部分組成。在應用程序中使用時,需要在配置文件AndroidManifest.xm

72、l中進行配置。這個配置文件是每個Android應用程序所必需的,用于定義應用程序的組件、組件的功能以及必要條件等。Android應用的構成和工作流程如圖2-2: </p><p>  圖2-2 Android的構成和工作流程</p><p>  4 Android應用程序架構結構剖析</p><p>  本章將會詳細敘述Android的應用程序所包括的基本組件,還

73、有這些組件之間的溝通方式—Intent(除了Contentprovider),同時講解一下Android應用程序的生命周期(Activity)—這是其他智能收與Android手機平臺最顯著不同的地方。最后將介紹在Android的應用程序中如何利用下載外部資源。</p><p><b>  4.1應用程序基礎</b></p><p>  Android的應用程序全部都是

74、用Java編程語言所寫的。編譯后的Java代碼——包括應用程序要求的任何數(shù)據(jù)和資源文件,是通過aapt工具捆綁成一個Android包,歸檔文件是以.apk為后綴。這個文件是分發(fā)應用程序和安裝到移動設備的中介或者是工具,用戶下載這個文件到他們自己的設備上。一個.apk文件中的所有代碼就會被認為是一個應用程序。</p><p>  aapt是Android Asset Packaging Tool的首寫字母的縮寫,這

75、個工具包是含在SDK的tools/目錄下的。查看、創(chuàng)建、更新與zip兼容的歸檔文件(zip、jar、apk)。它也能將資源文件編譯成二進制包。</p><p>  雖然你可能不會經常直接使用appt,但構建腳本(build scripts)和IDE插件會使用這個工具打包成apk文件,構成一個Android的應用程序。</p><p>  下面是更詳細的使用細節(jié),首先打開一個終端,進入too

76、ls/目錄下,運行命令:</p><p>  Linux或Mac操作系統(tǒng):./aapt ,如果是Windows:aapt.exe 。在這里注意的是:tools/目錄指的是android SDK目錄下的/platforms/android-X/tools/。在很多的方面,每個Android的應用程序是生活在它自己的世界。默認的情況下,任何一個應用程序是運行在它自己的Linux進程中。而當應用程序中的任何代碼需要被執(zhí)

77、行時候,Android將啟動進程;當它不再需要和系統(tǒng)資源不會被其他應用程序所請求時,Android就會關閉進程這個進程。每一個應用程序都有自己的Java虛擬機(VM),所以應用程序的代碼是獨立于其他所有的應用程序代碼的運行。在默認情況下,每一個應用程序分配一個唯一的Linux用戶ID。權限被設置為每一個應用程序的文件僅對用戶和應用程序自己本身可見。雖然有一些方法也可以暴露他們給其他應用程序。也有可能的是設置兩個應用程序共享一個用戶ID,

78、這種情況下,他們能夠看到對方的文件。為了節(jié)省系統(tǒng)資源的占用,具有相同ID的應用程序最好可以安排在同一個Linux進程中,共享同一個VM。</p><p>  4.2 應用程序組件</p><p>  Android的一個主要特點是,一個應用程序可以利用其他應用程序的元素(假設這些應用程序允許的話)。例如,如果你的應用程序需要顯示一個圖像的滾動列表,且其他應用程序已經開發(fā)了一個合適的滾動條并

79、可以提供給別的應用程序用,你可以調用這個滾動條來工作,而不用自己開發(fā)一個。你的應用程序不用并入其他應用程序的代碼或鏈接到它。相反,當需求產生時它只是啟動其他應用程序塊。</p><p>  對于這個工作,當應用程序的任何部分被請求時,系統(tǒng)必須能夠啟動一個應用程序的進程,并實例化該部分的Java對象。因此,不像其他大多數(shù)系統(tǒng)的應用程序,Android應用程序沒有一個單一的入口點(例如,沒有main()函數(shù))。相反,

80、系統(tǒng)能夠實例化和運行需要幾個必要的組件。有四種類型的組件:</p><p>  活動(Activities) </p><p>  服務(Services) </p><p>  廣播接收者(Broadcast receivers) </p><p>  內容提供者(Content providers) </p><p&g

81、t;  然而,并不是所有的應用程序都必須包含上面的四個部分,你的應用程序可以由上面的一個或幾個來組建。當你決定使用以上哪些組件來構建Android應用程序時,你應該將它們列在AndroidManifest.xml文件中,在這個文件中你可以聲明應用程序組件以及它們的特性和要求。關于AndroidManifest.xml在Android開發(fā)之旅:HelloWorld項目的目錄結構的1.6、AndroidManifest.xml簡單介紹了一下

82、,你可以參考一下,下篇也將介紹它。</p><p>  4.2.1 活動(Activities) </p><p>  一個活動表示一個可視化的用戶界面,關注一個用戶從事的事件。例如,一個活動可能表示一個用戶可選擇的菜單項列表,或者可能顯示照片連同它的標題。一個文本短信應用程序可能有一個活動,顯示聯(lián)系人的名單發(fā)送信息;第二個活動,寫信息給選定的聯(lián)系人;其他活動,重新查看舊信息或更改設置。雖

83、然他們一起工作形成一個整體的用戶界面,但是每個活動是獨立于其他活動的。每一個都是作為Activity基類的一個子類的實現(xiàn)。</p><p>  android.app.Activity類:因為幾乎所有的活動(activities)都是與用戶交互的,所以Activity類關注創(chuàng)建窗口,你可以用方法setContentView(View)將自己的UI放到里面。然而活動通常以全屏的方式展示給用戶,也可以以浮動窗口或嵌入

84、在另外一個活動中。有兩個方法是幾乎所有的Activity子類都實現(xiàn)的:</p><p>  onCreate(Bundle):初始化你的活動(Activity),比如完成一些圖形的繪制。最重要的是,在這個方法里你通常將用布局資源(layout resource)調用setContentView(int)方法定義你的UI,和用findViewById(int)在你的UI中檢索你需要編程地交互的小部件(widgets

85、)。setContentView指定由哪個文件指定布局(main.xml),可以將這個界面顯示出來,然后我們進行相關操作,我們的操作會被包裝成為一個意圖(Intent),然后這個意圖對應有相關的activity進行處理。 </p><p>  onPause():處理當離開你的活動時要做的事情。最重要的是,用戶做的所有改變應該在這里提交(通常ContentProvider保存數(shù)據(jù))。 </p>&l

86、t;p><b>  生命周期如圖3-1</b></p><p>  圖3-1Android的生命周期</p><p>  每一個應用程序可能只包含一個活動,或者是像短信應用程序一樣,它可能會包含幾個活動。這些活動分別是什么,以及有多少,這個當然取決于它的應用程序自己的設計。根據(jù)一般情況來說,當一個應用程序被啟動的時候,會被標記為第一個的活動,應該展示給用戶。從一

87、個活動轉移到另外一個活動由當前的活動完成從而開始下一個。</p><p>  每一個活動都會有一個默認的窗口。根據(jù)一般情況來說,窗口是會填滿整個屏幕的,但是它也有可能比屏幕小或者是浮在其他窗口上,這個就是程序員代碼的編寫情況了。一個活動還可以使用額外窗口。比如彈出式對話框,或者是當一個用戶選擇屏幕上一個特定的項時,會跳出一個窗口來顯示給用戶重要的信息。</p><p>  窗口的可視化內容

88、是由繼承自接口為View基類,一個分層的視圖—對象提供。每個可視化控件是窗口內的一個特定的矩形空間。父視圖包含和組織子女視圖的布局。葉子視圖--分層的底層。繪制的矩形會直接控制和響應用戶的操作。所以,一個視圖活動是與用戶發(fā)生交互的地方。比如說,一個視圖顯示一個小的圖片和當用戶點擊圖片時發(fā)起一個動作行為。Android有一些現(xiàn)成的可視化控件你可以使用,其中包括按鈕(buttons)、圖片按鈕(ImageButton)、文本域(text f

89、ields)、可編輯文本控件(EditText)、菜單項(menu items)、仿真時鐘(AnalogClock)滾動條(scroll bars)、開關按鈕(ToggleButton)、復選按鈕(check boxes)等等。</p><p>  通過Activity.setContentView() 方法來設置一個視圖層次在我們的活動窗口中。內容視圖(content view)是層次結構的根視圖對象。層次結構

90、如下圖3-2所示:</p><p>  圖3-2View的層次結構</p><p>  Activity.setContentView()方法:public void setContentView (int layoutResID):根據(jù)布局資源的設置活動界面。資源將會被夸大,添加布局資源文件中的所有的最高層的視圖( top-level views )到活動.</p>&l

91、t;p>  4.2.2 服務(Services)</p><p>  與Activity相反,Service是沒有可視化的用戶界面,但是Service的特點是能長時間在后臺運行的。所以,也可以這樣去理解,Service是具有一段較長生命周期而且沒有用戶界面的程序。比如說一個服務可能要播放背景音樂但是用戶做可以去做其他一些事情,或者它也可能從網絡獲取數(shù)據(jù),也或者是計算一些東西并會提供一個結果給需要的活動(ac

92、tivities)。每一個服務都繼承自Service基類。</p><p>  每一個服務類都惠子在AndroidManifest.xml中有自己相應的<service>聲明。服務必須可以通過Context.startService()或者Context.bindService()啟動因為service是有兩個不同的生命周期的。</p><p>  一個非常典型的例子是媒體播放

93、器播放一個播放列表中的歌曲文件。該播放器應用程序將可能有一個或者是多個活動(activities),可以允許用戶選擇要聽的歌曲和開始播放。然而,音樂播放本身就不會被一個活動處理,因為用戶是希望保持音樂一直播放的,當用戶離開播放器的時候而去做其他事情。為了保持音樂能夠繼續(xù)播放,媒體播放器活動可以啟動一個服務運行在后臺的運行。系統(tǒng)將會保持音樂播放服務運行,甚至媒體播放器離開屏幕的時候。</p><p>  可以連接到

94、(綁定到)一個持續(xù)運行的服務(并啟動服務,如果它尚未運行)。連接之后,你可以通過服務暴露的接口與服務交流。對于音樂服務,這個接口可以允許用戶暫停、倒帶、停止和重新播放。</p><p>  像活動(activities)和其他組件一樣,服務(services)運行在應用程序進程中的主線程中。因此,他們將不會阻止其他組件或用戶界面,他們往往產生其他一些耗時的任務(如音樂播放)。</p><p&g

95、t;  4.2.3 廣播接收者(Broadcast receivers) </p><p>  一個廣播接收者是這樣一個組件,它不做什么事,僅是接受廣播公告并作出相應的反應。許多廣播源自于系統(tǒng)代碼,例如公告時區(qū)的改變、電池電量低、已采取圖片、用戶改變了語言偏好。應用程序也可以發(fā)起廣播,例如為了他其他程序知道某些數(shù)據(jù)已經下載到設備且他們可以使用這些數(shù)據(jù)。</p><p>  一個應用程序可以

96、有任意數(shù)量的廣播接收者去反應任何它認為重要的公告。所有的接受者繼承自BroadcastReceiver基類。</p><p>  BroadcastReceiver類:是接受sendBroadcast()發(fā)送的意圖(intents)的基類。可以用Context.registerReceiver()動態(tài)地注冊這個類的實例,或者通過AndroidManifest.xml中<receiver>標簽靜態(tài)發(fā)布。

97、注意:如果你在Activity.onResume() 注冊一個接受者,你應該在Activity.onPause()注銷它。因為當暫停時你不會收到意圖,注銷它將削減不必要的系統(tǒng)開銷。不要在Activity.onSaveInstanceState()中注銷它,因為它將不會被調用,如果用戶移動到先前的堆棧。</p><p>  有兩種主要的可接受廣播類型:</p><p>  正常廣播(由Con

98、text.sendBroadcast發(fā)送)是完全異步的。所有的廣播接收者以無序方式運行,往往在同一時間接收。這樣效率較高,但是意味著接受者不能使用結果或終止廣播數(shù)據(jù)傳播。 </p><p>  有序廣播(由Context.sendOrderedBroadcast發(fā)送)一次傳遞給一個接收者。由于每個接收者依次執(zhí)行,因此它可以傳播到下一個接收器,也可以完全終止傳播以便他不會傳遞給其他接收者。接收者的運行順序可由匹配的

99、意圖過濾器(intent-filter)的android:priority屬性控制。 </p><p>  廣播接收者不顯示一個用戶界面。然而,它們啟動一個活動去響應收到的信息,或者他們可能使用NotificationManager去通知用戶。通知可以使用多種方式獲得用戶的注意——閃爍的背光、振動設備、播放聲音等等。典型的是放在一個持久的圖標在狀態(tài)欄,用戶可以打開獲取信息。</p><p>

100、;  4.2.4 內容提供者(Content providers)</p><p>  內容提供者(content provider)使一個應用程序的指定數(shù)據(jù)集提供給其他應用程序。這些數(shù)據(jù)可以存儲在文件系統(tǒng)中、在一個SQLite數(shù)據(jù)庫、或以任何其他合理的方式。內容提供者繼承自ContentProvider 基類并實現(xiàn)了一個標準的方法集,使得其他應用程序可以檢索和存儲數(shù)據(jù)。然而,應用程序并不直接調用這些方法。相反,

101、替代的是它們使用一個ContentResolver對象并調用它的方法。ContentResolver能與任何內容提供者通信,它與提供者合作來管理參與進來的進程間的通信。</p><p>  內容提供者是Android應用程序的主要組成部分之一,提供內容給應用程序。他們封裝數(shù)據(jù)且通過單個ContentResolver接口提供給應用程序。只有需要在多個應用程序間共享數(shù)據(jù)是才需要內容提供者。例如,通訊錄數(shù)據(jù)被多個應用程

102、序使用,且必須存儲在一個內容提供者中。如果你不需要在多個應用程序間共享數(shù)據(jù),你可以直接使用SQLiteDataBase</p><p>  當ContentResolver發(fā)出一個請求時,系統(tǒng)檢查給定的URI的權限并傳遞請求給內容提供者注冊。內容提供者能理解URI想要的東西。UriMatcher 類用于幫組解析URIs。</p><p>  需要實現(xiàn)的方法主要如下:</p>

103、<p>  query(Uri, String[], String, String[], String)  返回數(shù)據(jù)給調用者 </p><p>  insert(Uri, ContentValues) 插入數(shù)據(jù)到內容提供者 </p><p>  update(Uri, ContentValues, String, String[]) 更新內容提供者已存在的數(shù)據(jù) <

104、/p><p>  delete(Uri, String, String[]) 從內容提供者中刪除數(shù)據(jù) </p><p>  getType(Uri) 返回內容提供者中的MIME 類型數(shù)據(jù) </p><p>  更多的關于ContentResolver信息,請查看相關文檔。</p><p>  每當有一個應該由特定組件處理的請求,Android可以

105、確保該組件的應用程序正在運行,如果沒有就啟動它,而且一個適當?shù)慕M件實例可用,如果沒有就創(chuàng)建。</p><p>  5 程序的設計與實現(xiàn)</p><p>  本章節(jié)主要介紹一下此論文中用到了的Android的布局文件,可視化控件以及它們的具體實現(xiàn)。</p><p>  5.1 程序的算法研究:</p><p>  本游戲是以五子棋為背景的游戲,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論