J2ME游戲開發(fā)論文_第1頁
J2ME游戲開發(fā)論文_第2頁
J2ME游戲開發(fā)論文_第3頁
J2ME游戲開發(fā)論文_第4頁
J2ME游戲開發(fā)論文_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目 錄 前前 言言 .1 1 第一章第一章緒緒 論論 .4 4 1.1 手機(jī)軟件現(xiàn)狀.4 1.2 java 和 j2me 概況 .4 1.2 j2me 現(xiàn)狀和前景展望 .5 1.3 手機(jī)游戲業(yè)務(wù).7 第二章第二章 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹開發(fā)環(huán)境及相關(guān)技術(shù)的介紹 .9 9 2.1 j2me 平臺總體結(jié)構(gòu) .9 2.2 j2me 分層結(jié)構(gòu)及 midp 簡介 .9 2.3 j2me wireless toolkit搭建 .11 2.3.1 安裝 j2me wireless toolkit.12 2.3.2 使用 j2me wireless toolkit .14 第三章第三章 手機(jī)俄羅斯游戲程序的

2、開發(fā)手機(jī)俄羅斯游戲程序的開發(fā) .1717 3.1 程序流程設(shè)計(jì).17 3.2 程序分析和具體實(shí)現(xiàn).19 3.2.1 操作流程設(shè)計(jì).19 3.2.2 算法實(shí)現(xiàn).20 3.2.3 數(shù)據(jù)結(jié)構(gòu).22 第四章第四章 手機(jī)電話本程序的開發(fā)手機(jī)電話本程序的開發(fā) .2525 4.1 開發(fā)手機(jī)電話本需解決的相關(guān)技術(shù)問題.25 4.2 程序構(gòu)思和流程.25 4.3 程序分析和具體實(shí)現(xiàn).27 4.3.1 電話本進(jìn)入前的選擇.27 4.3.2 電話本設(shè)計(jì)及其涉及到的若干類.28 4.4 手機(jī)電話本的代碼實(shí)現(xiàn) .30 設(shè)設(shè) 計(jì)計(jì) 總總 結(jié)結(jié) .3939 參考文獻(xiàn)參考文獻(xiàn) .4141 1 前前 言言 java 語言是美國

3、 sun microsystem 的 james gosling、pratrick naughton 及 mike sheridan 等人于 1991 年精心設(shè)計(jì)出來的計(jì)算機(jī)編程語言,其構(gòu)想在于實(shí)現(xiàn)使用 同一種編程語言所寫出來的程序可以在不同的平臺上運(yùn)作。這種架構(gòu)對于消費(fèi)性電子 產(chǎn)品而言是具有革命性的,因?yàn)樵谙M(fèi)性電子產(chǎn)品中的處理器及操作系統(tǒng)各不相同, 要在這些平臺上開發(fā)程序必須要了解各個平臺的特性,以及其提供的 api 使用方式, 分別開發(fā)不同的版本才能執(zhí)行,影響應(yīng)用程序的普及性。 近幾年,由于微處理器性能的大幅提升,加上無線通訊技術(shù)的突破,手持式移動 設(shè)備開始受到大眾的青睞。短短幾年內(nèi),手

4、機(jī)已經(jīng)升級了幾代產(chǎn)品,普及率逐年攀升, 生產(chǎn)效率不斷上升,產(chǎn)品價格比個人電腦的摩爾定律有更驚人的下調(diào),以至手機(jī)是大 多是城市居民不可缺少的一件隨身設(shè)備。繼短信、彩信等服務(wù)之后,中國移動提供基 于 java 的百寶箱業(yè)務(wù),應(yīng)用產(chǎn)品遍及商務(wù)應(yīng)用、信息獲取、英漢互譯、游戲娛樂等多 媒體領(lǐng)域。根據(jù)官方公布的統(tǒng)計(jì)數(shù)據(jù),我國移動電話用戶已突破 3 億。依托這樣的市 場,一旦無線 java 應(yīng)用大規(guī)模開展起來,將會創(chuàng)造出比短信業(yè)務(wù)更為驚人的利潤。 java 語言原先的開發(fā)目的與市場的需求不謀而合,并且也已經(jīng)成為手機(jī)應(yīng)用程序開發(fā) 的標(biāo)準(zhǔn),國際大公司如 nokia、motorola 及 siemens 等所設(shè)計(jì)

5、的手機(jī)內(nèi)都加入 java 程 序的支持,可見在不久的將來,java 將會成為移動設(shè)備上最熱門的語言。 手機(jī)中將 java 語言引入,作為一種通用的開發(fā)標(biāo)準(zhǔn),并將向市場推廣普及僅僅短 短幾年,j2me 仍是一種新型的技術(shù),中文資料除臺灣出版過相關(guān)書籍外,國內(nèi)相關(guān)介 紹資源很有限,國內(nèi) j2me 開發(fā)商也屈指可數(shù),名聲較響的 digital-red 公司也僅成立 于 1999 年。 采用早期的 kvm 和 com.sun.kjava 包,或者加上第三方的 kawt 類庫。有很多早期 的文章和代碼,但是這一技術(shù)將被 pda profile 取代,而且不保證兼容性,不建議開 2 發(fā)者采用這一方法,而是

6、等待 pda profile 的最后完成及其實(shí)現(xiàn)。 采用 cldc 和 midp 開發(fā)。由于 midp 標(biāo)準(zhǔn)發(fā)布較早,智能手機(jī)的市場也遠(yuǎn)比 pda 大 得多,這是目前大量的無線應(yīng)用文章的主要內(nèi)容,不過它最適合的目標(biāo)是智能手機(jī), 雖然智能手機(jī)可能有一定的 pda 的功能,但是這一技術(shù)并不是最適合 pda 的。 采用 cdc 和 personal profile,這樣的技術(shù)不太多見,目前的移動信息設(shè)備硬件 能力還有所不足。但是下一代的 pda 和智能手機(jī)肯定可以支持。 就現(xiàn)有的 pda 硬件條件而言,j2me 應(yīng)用要和已有的應(yīng)用競爭還有比較多的困難: 空間:現(xiàn)在一般的 palm 類設(shè)備內(nèi)存從 2m

7、 到 16m 不等(目前較高檔的機(jī)型都已支 持?jǐn)U展卡,可以擴(kuò)展到 128m,但是卡上運(yùn)行程序的速度要慢得多,一般主要用來放數(shù) 據(jù),運(yùn)行程序不能依賴于卡) ,palm 上一般現(xiàn)有程序的標(biāo)準(zhǔn)大小是幾十 k 到 300k 以下。而僅 midp 的 palm 參考實(shí)現(xiàn)庫在 palm 上就需要將近 600k,再加上 作為基礎(chǔ)的 cldc 庫,加上程序,就快要接近 1m 了。和已有的應(yīng)用相比,目前是沒有 太大競爭力的。 速度:由于 palm 一直信奉的是簡單就是美的原則,目前的 palm 系列 pda 主要 用的是 33mhz 的 motorola 68000 系列 dragonball,這雖然帶來了成本

8、的降低和節(jié)電 性,但 j2me 應(yīng)用的性能很難讓人滿意了。 功能:目前最適合 palm 的 pda profile 尚未完成,如果用 midp 開發(fā)則不太合適, 用早期的 kvm 和 com.sun.kjava 則因?yàn)椴皇?j2me 標(biāo)準(zhǔn),程序兼容性無法保證。 雖然如此,但是在移動信息設(shè)備上開發(fā) j2me 應(yīng)用的前景還是非常美好的: 硬件的發(fā)展:目前的 palm 配 8m 到 16m 內(nèi)存已經(jīng)是主流,下一代超過 32m 是必然的 趨勢。palm os 5 終于開始支持 32 位的 arm risc 處理器,其速度應(yīng)該能夠提高 10 倍 以上。事實(shí)上,sharp 公司今年第一季度發(fā)售的 zaur

9、us sl-5500 已經(jīng)采用了 intel 206mhz strongarm 處理器和 64m 內(nèi)存,在這樣的硬件上速度和內(nèi)存都不會成為問題。 3 標(biāo)準(zhǔn)的完善:pda profile 今年內(nèi)將最后完成,可以預(yù)計(jì)很快會在主要操作系統(tǒng)上得 到實(shí)現(xiàn)。目前在 jcp 也有許多其他標(biāo)準(zhǔn)非常有意義,例如關(guān)于藍(lán)牙技術(shù)(bluetooth) , 游戲,定位等。 平臺的廣泛性:移動信息設(shè)備的主要操作系統(tǒng)平臺都是開放的,j2me 的標(biāo)準(zhǔn)也是開 放的,因此基本上所有的主要操作系統(tǒng)平臺都支持或?qū)⒅С?j2me,這帶來的廣闊市場 (智能手機(jī)的市場尤其巨大,據(jù)稱 norkia 到今年就可以出貨 5000 萬只 java

10、 手機(jī),而 到 2003 年可達(dá) 1 億只。 )和真正的一次編寫,到處運(yùn)行是任何其他技術(shù)無法比擬的。 對于開發(fā)者而言,可以不受操作系統(tǒng)的限制,不用擔(dān)心在這個多變的市場上因平臺的 變化而影響自己的應(yīng)用。 第一章第一章緒緒 論論 1.11.1 手機(jī)軟件現(xiàn)狀手機(jī)軟件現(xiàn)狀 在信息社會中,手機(jī)及其他無線設(shè)備越來越多的走進(jìn)普通百姓的工作和生活,隨 著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他無線設(shè)備上網(wǎng)絡(luò)勢在必行。但是傳統(tǒng)手機(jī)存在 4 以下弊端: 1. 傳統(tǒng)手機(jī)出廠時均由硬件廠商固化程序,程序不能增加、刪除,有了錯誤也 不能更新、修改,若要增加新功能必須另換一部手機(jī)。 2. 傳統(tǒng)手機(jī)訪問互聯(lián)網(wǎng)是通過 wap(wir

11、eless application protocal),所有網(wǎng) 絡(luò)資源必須接通網(wǎng)絡(luò)才能在線訪問,非常耗時、費(fèi)用亦很高。 而 java 技術(shù)在無線應(yīng)用方面的優(yōu)勢非常明顯: 1. 應(yīng)用程序可按需下載,而不是購買由硬件商提供的套件,可升級空間大。 2. java 技術(shù)提供了一個類庫,它使的應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐富的用 戶界面(gui); 3. java 技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,并 在本地運(yùn)行,僅僅是在連接到服務(wù)器時才會占用網(wǎng)絡(luò)帶寬。 基于以上分析,java 手機(jī)將是未來手機(jī)的發(fā)展方向,是業(yè)界的熱點(diǎn)。 1.21.2 javajava 和和 j2mej2me

12、概況概況 雖然 java 已經(jīng)被用到許多企業(yè)級軟體上,可 是其實(shí)骨子里面還是非常適合用在嵌入式系統(tǒng)之中。 java 平臺演進(jìn)到 java2 后,java 平臺分別針對不同 領(lǐng)域的需求被分成四個版本,亦即 j2ee、j2se、j2me 以及 javacard(其結(jié)構(gòu)示意圖見 圖 1-1)。其中 j2me 定位在消費(fèi)性電子產(chǎn)品的應(yīng)用上。 這個版本針對資源有限的電子消費(fèi)產(chǎn)品的需求精簡 核心類庫,并提供了模塊化的架構(gòu)讓不同類型產(chǎn)品能夠隨時增加支持的能力。這個版 本的應(yīng)用層面相當(dāng)廣泛,會是未來 java 平臺發(fā)展的重點(diǎn)項(xiàng)目。j2me 在設(shè)計(jì)其規(guī)格的 時候,遵循著“對各種不同的裝置而造出一個單一的開發(fā)系統(tǒng)

13、是沒有意義的事”這個 基本原則。于是 j2me 先將所有的嵌入式裝置大體上區(qū)分為兩種:一種是運(yùn)算功能有 圖 1-1 java 平臺的結(jié)構(gòu) 5 限、電力供應(yīng)也有限的嵌入式裝置(比方說 pda 、手機(jī));另外一種則是運(yùn)算能力相對 較佳、在電力供應(yīng)上相對比較充足的嵌入式裝置 (比方說冷氣機(jī)、電冰箱、電視機(jī)上 盒 (set-top box)。因?yàn)檫@兩種型態(tài)的嵌入式裝置,所以 java 引入了一個叫做 configuration 的概念,把上述運(yùn)算功能有限、電力有限的嵌入式裝置定義在 connected limited device configuration(cldc)規(guī)格之中;而另外一種裝置則規(guī)范為

14、 connected device configuration(cdc)規(guī)格。也就是說, j2me 先把所有的嵌入式裝置利用 configuration 的概念區(qū)隔成兩種抽象的型態(tài)。j2me 平臺被認(rèn)為是最杰出的手機(jī)游戲 平臺,它為開發(fā)者、設(shè)備制造商、網(wǎng)絡(luò)通信公司和消費(fèi)者廣泛接受。它有一些非常重 要的特征對所有組織都有益。因?yàn)?j2me 應(yīng)用在不同設(shè)備上都是便攜式的,他們常???在網(wǎng)絡(luò)上下載和執(zhí)行。如果沒有正確的防范,它則為用戶和無線通信公司冒著無數(shù)個 安全的風(fēng)險。幸運(yùn)的是,java 被設(shè)計(jì)成一種安全的語言。所有字節(jié)碼應(yīng)用在執(zhí)行之前 都要校驗(yàn);jvm 在執(zhí)行過程中監(jiān)督應(yīng)用的安全性和存儲違反問題

15、。midp v2 運(yùn)行時間包 括一個完全特征化的、基于域的安全管理員,它在應(yīng)用的數(shù)字簽名者鑒別的基礎(chǔ)上賦 予應(yīng)用 api 級許可。 1.21.2 j2mej2me 現(xiàn)狀和前景展望現(xiàn)狀和前景展望 在消費(fèi)電子和嵌入式設(shè)備的廣闊領(lǐng)域中,目前最受關(guān)注的是移動通信設(shè)備, 因此有必要介紹一下移動通信設(shè)備的主要操作系統(tǒng)平臺,這對 j2me 的開發(fā)是相當(dāng)重要 的。移動通信設(shè)備主要包括 pda 和智能手機(jī),現(xiàn)在和將來都還會有一部分設(shè)備處于 pda 和智能手機(jī)交界的位置。其中手機(jī)的市場遠(yuǎn)比 pda 要大得多,所以許多國外談到 j2me 的文章都是以 wireless 應(yīng)用為主。 pda 也即掌上電腦,一般是指類似

16、于 palm 公司出品的 palm 這樣的設(shè)備,主要 的操作系統(tǒng)有 palm os 和 pocket c 兩大陣營。palm os 來自 palm 公司,是一個開放的 系統(tǒng),在 pda 市場上占主導(dǎo)地位,已經(jīng)有非常多的第三方廠商開發(fā)的應(yīng)用和一大批非 6 常忠實(shí)和狂熱的用戶。目前采用 palm os 的主要有 palm 公司的 palm 系列和 sony 公司 的 clie 系列(handspring 公司的 visor 也屬于這類產(chǎn)品,但是已經(jīng)宣布退出傳統(tǒng) pda 市場,主要發(fā)展 pda 和無線通訊結(jié)合的產(chǎn)品 treo) 。 pocket pc 是微軟及其合作伙伴 casio、compaq、h

17、ewlett packard 和 symbol 推出 的,基于 win ce 3.0,也是一個開放的標(biāo)準(zhǔn)系統(tǒng),功能可以擴(kuò)展(以往的 win ce 是一 個封閉的不可擴(kuò)展的系統(tǒng)) ,在這個平臺上廠商可以自己開發(fā)軟件。具體產(chǎn)品如 compaq 的 ipaq。 另外,sharp 公司 zaurus 系列 pda 采用 linux 的一個針對嵌入式系統(tǒng)的版本。 作為擁有高達(dá) 64m 內(nèi)存的高端 pda,可以滿足 cdc 的標(biāo)準(zhǔn),預(yù)裝了 personal java 的虛 擬機(jī)。 在智能手機(jī)領(lǐng)域,主要的平臺是 symbian 的 epoc。epoc 最早由 psion 開發(fā),主 要面向智能手機(jī),也有 pd

18、a 的特征,psion 就是第一批主要的 pda 廠商之一。psion 宣 布 epoc 的第一個版本是開放的 os,并向其它廠商授權(quán),隨后 psion 與 ericsson,nokia,及稍后的 motorola 建立了名為symbian的聯(lián)盟,目前主要股東為 motorola, nokia, panasonic, psion 和 sonyericsson,而且 siemens4 月也宣布加入。 symbian 在歐洲有很好的基礎(chǔ),為大多數(shù)主要手機(jī)廠商所采用,典型的產(chǎn)品如 norkia 的 9210。 在這些操作系統(tǒng)平臺中,palm os 上已經(jīng)有了 midp 的參考實(shí)現(xiàn),但是并不是最適 合

19、 pda 的 profile。symbian 實(shí)現(xiàn)了 cldc 和 midp,作為智能手機(jī)的操作系統(tǒng),是理想 的 midp 應(yīng)用平臺。在 compaq 的 ipaq 上已經(jīng)實(shí)現(xiàn)了 cdc(基于 pocket pc) ,另外前面 提到過,ibm 的 websphere micro environment 在 pocket pc 上實(shí)現(xiàn)了 cldc,cdc 和 7 midp。sharp 的 zaurus 實(shí)現(xiàn)了 personal java(基于 linux) 。由于這些主要操作系統(tǒng) 平臺都是開放的,基本可以相信,主要的移動通信設(shè)備操作系統(tǒng)都將一直提供 j2me 的 支持,但是具體支持哪個標(biāo)準(zhǔn)則并不

20、一定死板地按照 cldc 和 cdc 的最初定義,和設(shè)備 的硬件條件和廠商的選擇有關(guān),或者可能同時實(shí)現(xiàn)多個標(biāo)準(zhǔn)。 1.31.3 手機(jī)游戲業(yè)務(wù)手機(jī)游戲業(yè)務(wù) 縱觀 it 產(chǎn)業(yè)的歷史,就像軍事的發(fā)展時常推動計(jì)算機(jī)的演化一樣,計(jì)算機(jī)游戲已 經(jīng)成為技術(shù)創(chuàng)新背后的動力之一。計(jì)算機(jī)游戲者渴望更加強(qiáng)大的硬件計(jì)算能力;渴望 不受不同的軟件的限制無論是將圖形強(qiáng)制在人工智能(ai)上 還是網(wǎng)絡(luò)安全性。 游戲開發(fā)者和玩家常常是前沿計(jì)算機(jī)技術(shù)的最早的采用者。由于他們的創(chuàng)新天性,游 戲不再是由大型采購公司控制的技術(shù)產(chǎn)品游戲領(lǐng)域總是有充足的空間給那些在這 方面有天分的單個創(chuàng)新者。 手機(jī)游戲的盈利主要是由于它們的涉及面很廣。

21、手機(jī)已經(jīng)與現(xiàn)代生活方式緊緊地 結(jié)合在一起。他們是最普遍攜帶的個人用品中僅次于鑰匙和錢包的東西。傳統(tǒng)的臺式 機(jī)游戲?qū)⒛繕?biāo)鎖定在低級趣味的人和青少年身上,而手機(jī)游戲則每個人都可以訪問的 到隨時,隨地。盡管每個手機(jī)游戲都不貴,但是巨大的使用量(如:每人每星期 一個新游戲)將使得這個市場商機(jī)無限。但是,對于開發(fā)者來說,將控制臺游戲遷移 到手機(jī)游戲工程很大。因?yàn)樗麄兯嫦虻膶ο?、生活方式和分布式模型都有著極大的 區(qū)別。 一個成功的手機(jī)游戲大多具有以下特征: 易于學(xué)習(xí): 既然手機(jī)游戲面向的是普通消費(fèi)者而不是計(jì)算機(jī)專家,那么他們不 可能深入的學(xué)習(xí)游戲技巧。消費(fèi)者不會花幾個小時去研究一個 3 元的手動操作的游

22、戲。 保持游戲的簡單是最基本的要求。 可中斷性: 多任務(wù)處理是手機(jī)生活方式的基本特征。手機(jī)用戶常常在任務(wù)(如 等一個電子郵件或者等車)之間有一小段時間。而游戲、日歷管理、通訊和工作數(shù)據(jù) 8 訪問使用的是同一個設(shè)備。所以一個好的手機(jī)游戲應(yīng)該提供短時間的娛樂功能,并且 允許用戶在游戲和工作模式之間順利切換。 基于訂閱:手機(jī)游戲的盈利成功取決于他們巨大的使用量。一開始開發(fā)和設(shè)計(jì) 每個游戲都是昂貴的。如果一個手機(jī)游戲開發(fā)者要贏利的話,重要的是:同一個游戲 引擎,多個標(biāo)題,基本的故事情節(jié)類似。基于訂閱的游戲是不斷產(chǎn)生收入的最好方法。 豐富的社會交互: 不管一個游戲設(shè)計(jì)得多好,只要玩家找到了它的根本模式或

23、 者玩完了所有的游戲路徑很快就會厭煩這個游戲。對于一個基于訂閱的游戲,重要的 是與別的玩家合作以增強(qiáng)所玩游戲的智力和隨機(jī)性。在今天紛繁復(fù)雜的多玩家游戲中 具有豐富社會交互的游戲證明是成功的。 利用手機(jī)技術(shù)的優(yōu)點(diǎn): 巨額的手機(jī)技術(shù)研發(fā)費(fèi)用都花在提高設(shè)備和網(wǎng)絡(luò)的可用 性和可靠性上面。因此,手機(jī)設(shè)備硬件和網(wǎng)絡(luò)協(xié)議與桌面/控制臺世界(如全球定位系 統(tǒng)(gps)擴(kuò)展、條形碼掃描儀、和短消息服務(wù)(sms)/多媒體信息服務(wù)(mms)通訊)有著 非常大的差別。好的手機(jī)游戲應(yīng)該利用那些更新的設(shè)備特征和網(wǎng)絡(luò)基礎(chǔ)設(shè)備的優(yōu)點(diǎn)。 無違法內(nèi)容:既然所有年齡/性別的人群都玩手機(jī)游戲并且常常在公共/工作場 合,就應(yīng)該避免明顯

24、的暴力或者色情內(nèi)容。 第二章第二章 開發(fā)環(huán)境及相關(guān)技術(shù)的介紹開發(fā)環(huán)境及相關(guān)技術(shù)的介紹 2.12.1 j2mej2me 平臺總體結(jié)構(gòu)平臺總體結(jié)構(gòu) j2me 雖然和 j2se 有著許多不同,但仍然屬于 java 技術(shù),具有 java 方便開發(fā)的優(yōu) 點(diǎn),也使得 java 程序員學(xué)習(xí)移動信息設(shè)備開發(fā)沒有太大困難。 j2me 其作為一個可以與 j2ee,j2se 相提并論的平臺是在 1999 年的 javaone 大會 上提出的隨著時間的推移與技術(shù)逐漸地成熟其平臺本身的構(gòu)架也逐漸演繹嬗變下圖給 出 j2me 一個總體的構(gòu)架. 9 2.22.2 j2mej2me 分層結(jié)構(gòu)及分層結(jié)構(gòu)及 midpmidp 簡

25、簡介介 j2me是sun的java2平臺微型版(java2平臺3個版本之一,另兩個是標(biāo)準(zhǔn)版j2se和 企業(yè)版j2ee),采用3層結(jié)構(gòu)設(shè)計(jì)。最低層為配置層(configuration),包括虛擬機(jī) (vm)和類庫兩部分,這一層與設(shè)備層(硬件及操作系統(tǒng))關(guān)系緊密,由sun提供參考 規(guī)范和源代碼,設(shè)備廠商根據(jù)設(shè)備特征進(jìn)行相應(yīng)的移植。當(dāng)前j2me提供有兩個配置: 連接設(shè)備配置(cdc)和有限連接設(shè)備配置(cldc)。前者主要面向有較大內(nèi)存和處理 能力而只需有限功能的設(shè)備,如電視置頂盒、冰箱、汽車導(dǎo)航設(shè)備等,這些設(shè)備都有 連接網(wǎng)絡(luò)和相互交互的需求,其內(nèi)存在2m以上;后者主要面向?qū)?nèi)存和處理能力有較 大限

26、制的手持設(shè)備,如現(xiàn)在使用的手機(jī)、pda等,現(xiàn)在及將來大多數(shù)這些設(shè)備都已經(jīng)能 夠接入互聯(lián)網(wǎng),其內(nèi)存范圍160kb(其中128kb用于虛擬機(jī)及類庫,至少32kb用于cldc 規(guī)范所要求的應(yīng)用程序堆??臻g)到2m。二者主要區(qū)別在于能提供給vm及應(yīng)用程序的 存儲空間,cdc所用vm及類庫實(shí)際是參考j2se標(biāo)準(zhǔn),去除了不需要的功能如awt。cldc 所用vm(稱作kvm)則有較大區(qū)別,包括類驗(yàn)證機(jī)制。對于下一代移動終端設(shè)備如智能 電話、高端pda,則是cdc所應(yīng)用對象,因?yàn)樗鼈儗⒂谐^2m的內(nèi)存。 設(shè)備層之上是簡表層(profile) ,再之上則是應(yīng)用層(application) 。簡表層擴(kuò) 展了配置層

27、功能為上層應(yīng)用提供 api,如果說配置層面向設(shè)備,簡表層則面向應(yīng)用???10 以根據(jù)需要在 cdc 或 cldc 基礎(chǔ)之上提供多種簡表,一個配置層之上也可以有多個簡表。 當(dāng)前 cdc 之上有基礎(chǔ)簡表(foundation profile)和基于 fp 的 personal profile 和 rmi profile。cldc 之上則主要提供有移動信息設(shè)備簡表(midp) ,即用于手機(jī)、pda 等移動終端的設(shè)備簡表,提供 api 以支持無線應(yīng)用的開發(fā)。 cldc 類庫一部分來自 j2se,這部分類庫是經(jīng)過裁減的,去除了不必要的功能,主 要包括 java.lang 包中的系統(tǒng)類、數(shù)據(jù)類型類、異常處

28、理類,java.util 包的集合類、 時間類和附加工具類,java.io 包的 i/o 處理類。cldc 專有類則主要是通用連接框架 (gcf),為 cldc 提供網(wǎng)絡(luò)連接功能,這些網(wǎng)絡(luò)接口都是 connection 類的子類,由 類 connector 所提供的方法調(diào)用,這些接口或類位于包 javax.microedition.io。 cdc 類庫則是 cldc 的超集,因此為 cldc 開發(fā)的應(yīng)用程序可以移植到 cdc 平臺,由 于 cdc 采用標(biāo)準(zhǔn)的 j2se vm,因此其開發(fā)與標(biāo)準(zhǔn)的 j2se 開發(fā)一致,只是在用 javac 工 具編譯源代碼時需要使用 cdc 的類庫,即使用-boo

29、tclasspath 參數(shù)指向 cdc 類庫。 midp 擴(kuò)展了 cldc 的功能,它繼承了 gcf 并在此基礎(chǔ)上增加了類 httpconnection,用以提供 http 連接功能(盡管從理論上 cldc/midp 可以提供 socket、數(shù)據(jù)報、文件、nfs 等多種連接類型,但現(xiàn)在標(biāo)準(zhǔn)的 cldc/midp 僅支持 http 協(xié)議,一些設(shè)備實(shí)現(xiàn)則提供了 socket 和 https 協(xié)議的支持) ,midp 類庫 總結(jié)如下: java.io、java.lang、java.util,屬于 midp 的核心包,分別用來提供系統(tǒng) i/o、 語言支持和工具支持。包中的類來自 cldc 并稍有增加,

30、但都來自 j2se。 javax.microedition.midlet,定義了 midp 應(yīng)用程序,以及應(yīng)用程序和它所運(yùn)行 于環(huán)境之間的交互。 javax.microedition.lcdui,為 midp 應(yīng)用程序提供用戶界面 api。 javax.microedition.rms,用來為 midlet 提供持久存儲的機(jī)制,應(yīng)用程序可以存 儲數(shù)據(jù),在以后需要的時候獲取這些數(shù)據(jù)。 javax.microedition.io,提供了基于 cldc 通用連接框架的網(wǎng)絡(luò)支持。 11 2.32.3 j2mej2me wirelesswireless toolkittoolkit 搭建搭建 開發(fā)基于

31、j2me 平臺的手機(jī)應(yīng)用程序第一步就是要選擇一個好的開發(fā)工具。手 機(jī)程序開發(fā)與 pc 程序開發(fā)有很大的不同點(diǎn),pc 程序可以直接在 pc 上開發(fā)并運(yùn)行測 試,而在手機(jī)上沒有也肯定不可能提供應(yīng)用程序開發(fā)集成環(huán)境和測試工具。通常情 況下,我們都是先利用 pc 機(jī)上 java 開發(fā)工具編寫源代碼并使用 java 編譯器和 j2me 庫一起生成 j2me 手機(jī)程序,再將該程序上傳到手機(jī)上運(yùn)行?,F(xiàn)在,大部分手 機(jī)廠商都提供其生產(chǎn)的不同機(jī)型的模擬器,此模擬器可以在 pc 上直接運(yùn)行,真實(shí) 模擬該型號手機(jī)上提供的 j2me 運(yùn)行環(huán)境。如果安裝了手機(jī)模擬器,就可以將編譯 好的手機(jī)程序直接在 pc 的模擬器上測

32、試,等到測試運(yùn)行正常后再上傳到實(shí)機(jī)上運(yùn) 行。 雖然當(dāng)前有很多工具都可以開發(fā) j2me 手機(jī)程序,其中不乏有功能強(qiáng)大的 jbuilder 集成開發(fā)環(huán)境,但是對于初學(xué)者來說,使用 ultraedit/notepad+wtk 作為 手機(jī)程序的開發(fā)工具會更好一點(diǎn)。ultraedit 和 notepad 都是 pc 上常用的編輯軟件, 我們可以使用它們來編寫手機(jī)程序的代碼,然后使用 sun 提供的 wtk(j2me 無線工 具包)對源代碼進(jìn)行編譯、模擬運(yùn)行以及上傳實(shí)機(jī)。下面我們將重點(diǎn)介紹 wtk 的安 裝和使用。 .1 安裝安裝 j2mej2me wirelesswireless too

33、lkittoolkit j2me wireless toolkit,它是由 sun 公司開發(fā)用于支持開發(fā)那些可在與移動 信息設(shè)備框架(midp)兼容的設(shè)備(如手機(jī)、雙向呼機(jī)和 pda)上運(yùn)行的 java 應(yīng)用 程序。當(dāng)前 wtk 的高版本為 2.0 版,它支持最新的 midp2.0。您可以到 sun 網(wǎng)站下 載安裝 wtk,下面詳細(xì)介紹下載安裝 wtk 過程。 (1)、登錄 sun j2me wtk 中文版下載網(wǎng)頁: http:/ 12 (2)、中文版是通過本地化補(bǔ)丁實(shí)現(xiàn)的,首先需要下載 wtk2.0 英文版本,如圖三所 示,在列表框中選擇您的 pc 安裝的操作系統(tǒng)類型(通常 pc 使用 wi

34、ndows 系統(tǒng)居多, 本文僅以 windows 平臺為例,其它平臺可參照。 ) ,再點(diǎn)擊第一個“繼續(xù)”按鈕。 圖一:下載 wtk2.0 頁面部分圖 (3)、如果您未處于登錄狀態(tài)的話,將提示您登錄。如果您還未成為 sun 會員的話, 可以馬上注冊會員。其登錄過程同其它網(wǎng)站會員登錄過程相似。 (4)、成功登錄后,進(jìn)入英文版文件下載頁面,如圖四所示,點(diǎn)擊下載鏈接即可下 載英文版文件 j2me_wireless_toolkit-2_0-windows.exe,大小為 9.89m。 圖二:wtk2.0 英文版文件下載頁面部分圖 (4)、運(yùn)行 j2me_wireless_toolkit-2_0-wind

35、ows.exe 安裝程序,當(dāng)系統(tǒng)提示您提 供安裝目錄時,請確保該安裝目錄的完全合法的路徑中不包含任何空格。這將幫助 您在今后使用工具包時避免可能出現(xiàn)的問題。 (5)、安裝完 wtk2.0 英文版后,回到圖三頁面,點(diǎn)擊第二個“繼續(xù)”按鈕下載中文 補(bǔ)丁文件。進(jìn)入中文補(bǔ)丁文件下載頁面,如圖五所示,點(diǎn)擊下載鏈接即可下載文件 13 j2me_wireless_toolkit-2_0-zh.zip,大小為 4.07m。 圖 三:wtk2.0 中文補(bǔ)丁文件下載頁面部分圖 (6)、將 j2me_wireless_toolkit-2_0-zh.zip 文件解壓縮至 wtk2.0 英文版的安裝 目錄下(缺省安裝目

36、錄為 c:wtk2.0) ,確保文件是帶著目錄路徑解壓的。 (7)、wtk2.0 中文版本安裝成功。 .2 使用使用 j2mej2me wirelesswireless toolkittoolkit 如果安裝 wtk 成功的話,在開始菜單上選擇“程序-j2me wireless toolkit2.0-ktoolbar” ,啟動 wtk 工具程序,主界面如圖六所示。 14 圖四:wtk 運(yùn)行界面 wtk 的主要功能包括:新建項(xiàng)目、打開項(xiàng)目、生成項(xiàng)目、運(yùn)行項(xiàng)目等。 新建項(xiàng)目新建項(xiàng)目 在編寫手機(jī)程序之前,都需要使用 wtk 創(chuàng)建一個新的項(xiàng)目。新建項(xiàng)目的主要步驟: (1)、點(diǎn)擊工具欄“

37、新建項(xiàng)目”按鈕,彈出“新建項(xiàng)目”對話框,如圖七所示。 圖五:新建項(xiàng)目對話框 (2)、在“項(xiàng)目名字”欄中輸入項(xiàng)目名稱,如 myprogram;在“midlet 類名”欄中 輸入您的手機(jī)程序的主類名,如 mymidlet,在后面章節(jié)將會介紹到每個 j2me 手機(jī) 程序都必須有一個 midlet 類的子類。 (3)、點(diǎn)擊“產(chǎn)生項(xiàng)目”按鈕,彈出“項(xiàng)目配置”對話框,在此對話框中可以對項(xiàng) 目的相關(guān)配置進(jìn)行修改,一般情況下都不需要修改。 (4)、點(diǎn)擊“確定”按鈕,新建項(xiàng)目完成。請注意,此時在主窗口中列出項(xiàng)目 java 源文件的路徑、資源文件路徑和庫文件的路徑的信息。由于 wtk 生成程序時,必須 要求項(xiàng)目的

38、路徑結(jié)構(gòu)一定要規(guī)范化,否則不能生成運(yùn)行程序。 15 圖八展示了 myprogram 項(xiàng)目生成后,在 wtk 目錄下的路徑結(jié)構(gòu)圖。wtk 將在其子目 錄 apps 下為每個項(xiàng)目創(chuàng)建一個同名子目錄,并在此子目錄下創(chuàng)建 bin、src、res、lib 四個目錄,其中 bin 目錄用于存放目標(biāo)程序,當(dāng)使用生成工具 產(chǎn)生了可運(yùn)行的程序?qū)⒎旁诖颂?,一般?.jar 和*.jad 文件,其具體意義將在后 面的章節(jié)詳細(xì)說明;src 目錄用于存放源代碼;res 目錄用于存放資源文件;lib 目 錄用于存放程序調(diào)用的輔助庫文件。 圖六:wtk 項(xiàng)目路徑圖 打開項(xiàng)目打開項(xiàng)目 打開項(xiàng)目是將已存在的項(xiàng)目打開,作為 wt

39、k 的當(dāng)前工作項(xiàng)目。通過點(diǎn)擊“打開項(xiàng)目” 按鈕,彈出“打開項(xiàng)目”對話框,您可以從項(xiàng)目列表中選擇打開項(xiàng)目。請注意,在 此項(xiàng)目列表中僅能選擇 apps 目錄下的項(xiàng)目,如果您的項(xiàng)目不在此項(xiàng)目下,將不能 使用 wtk 打開項(xiàng)目。 生成項(xiàng)目生成項(xiàng)目 當(dāng)您新建項(xiàng)目并編寫好源代碼或者打開舊項(xiàng)目后,可以通過點(diǎn)擊工具欄上的“生成 項(xiàng)目”按鈕,wtk 將自動調(diào)用 java 編譯器為項(xiàng)目程序進(jìn)行編譯。如果程序代碼有語 16 法錯誤將在主窗口中產(chǎn)生錯誤提示,否則為項(xiàng)目生成*.jar 和*.jad 目標(biāo)文件。 運(yùn)行項(xiàng)目運(yùn)行項(xiàng)目 成功生成項(xiàng)目目標(biāo)文件后,可點(diǎn)擊工具欄上的“運(yùn)行項(xiàng)目”按鈕,wtk 將啟動模擬 器,并加載項(xiàng)目

40、 bin 目錄下的*.jar 和*jad 文件。模擬器界面同相應(yīng)型號的外觀相 似,您可以通過模擬器上的鍵盤操作項(xiàng)目程序。圖九展示俄羅斯方塊游戲游戲在模 擬器上運(yùn)行結(jié)果。 圖七:俄羅斯方塊游戲在模擬器上運(yùn)行結(jié)果圖 第三章第三章 手機(jī)俄羅斯游戲程序的開發(fā)手機(jī)俄羅斯游戲程序的開發(fā) 3.13.1 程序流程程序流程設(shè)計(jì)設(shè)計(jì) midlet suite 是 midp 應(yīng)用程序的最小單位,jam 負(fù)責(zé)將手機(jī)內(nèi)的 midlet suite 以圖形化的方式呈現(xiàn),讓用戶能夠選取欲執(zhí)行的 midlet suite,一旦選取了某個 midlet suite,操作系統(tǒng)就會激活 kvm 執(zhí)行里面的 midlet。midle

41、t 及相關(guān)的支持類組 成了 midp 應(yīng)用程序的實(shí)際內(nèi)容。 每個 midlet 都必須繼承 javax.microedition.midlet.midlet 這個抽象類。在 midp 規(guī)格中定義了 midlet 的生命周期,以及可以存在的三種狀態(tài),包括 17 paused、active 以及 destroyed,每一個 midlet 在任何時刻只可能處于其中的一個狀 態(tài)。這三種狀態(tài)的轉(zhuǎn)換關(guān)系如圖所示: 本程序采用面向?qū)ο蟮脑O(shè)計(jì)模式,對游戲中的所有物體賦予對象的概念和屬性。 運(yùn)行程序后允許用戶選擇執(zhí)行選項(xiàng)菜單,用戶控制的圖片運(yùn)行在主線程中,然后用戶 控制手機(jī)鍵盤,鍵盤上的數(shù)字按鍵 1-9 控制圖

42、片,需要移動旋轉(zhuǎn)某個圖片時,只需按 下對應(yīng)的數(shù)字鍵。主程序流程如圖 3-2 所示: 消減狀態(tài) (destroyed) 停止?fàn)顟B(tài) (paused) 運(yùn)行狀態(tài) (active) startapp()destroyapp() 呼叫 midlet 的 構(gòu)造函數(shù) destroyapp() pauseapp() 圖 3-1 midlet 的流程 18 3.23.2 程序分析和具體實(shí)現(xiàn)程序分析和具體實(shí)現(xiàn) 3.2.1 操作流程設(shè)計(jì)操作流程設(shè)計(jì) 本游戲的操作流程非常簡單,用戶啟動 midlet 啟動后,即進(jìn)入游戲主畫面,屏幕開始 顯示為歡迎畫面。用戶按下開始按鈕后,就可以開始玩游戲了,當(dāng)用戶想暫停時, 再次按一

43、下開始按鈕,游戲就暫停了,在暫停的情況下再按開始按鈕,游戲繼續(xù) 運(yùn)行。任何時候按退出按鈕,游戲 midlet 都會終止. 游戲畫面流程圖如下: 圖 3-2 本程序的主流程圖 19 3.2.2 算法實(shí)現(xiàn)算法實(shí)現(xiàn) midp 的游戲設(shè)計(jì),本質(zhì)上就是用一個線程或者定時器產(chǎn)生重繪事件,用線程和用戶 輸入改變游戲狀態(tài)。這個游戲也不例外,啟動 midlet 后,就立即生成一個重繪線程, 該線程每隔 50ms 繪制一次屏幕。當(dāng)然,重繪時有一些優(yōu)化措施,并不是屏幕上所有的 像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的下墜物(下墜物 一共有 7 種,由 4 個小磚塊組成,每種下墜物顏色固定,可以

44、上下左右旋轉(zhuǎn))就不需重繪。 游戲畫布是一個 commandlistener,可以接受用戶鍵盤命令,控制下墜物的左移,右移, 下移,旋轉(zhuǎn)動作。整個游戲的流程控制體現(xiàn)在游戲畫布對象的 paint()方法里。paint()根 據(jù)當(dāng)前的游戲狀態(tài),繪制出當(dāng)時的游戲畫面。歡迎畫面和 game over 畫面的繪制相當(dāng) 簡單。游戲暫停畫面的繪制也相當(dāng)容易,就是設(shè)立標(biāo)志,讓 paint()執(zhí)行的時候無需真 正執(zhí)行重繪動作。對于游戲處于運(yùn)行狀態(tài)的畫面的繪制,則需要在下墜物的當(dāng)前位置, 繪制下墜物。在繪制下墜物之前,判斷下墜物是否還能下墜,如果能下墜的話,就讓 20 它下落一格,再進(jìn)行繪制,如果下墜物已無法下墜,

45、則判斷游戲是否處于 game over 狀態(tài),如果是處于 game over 狀態(tài)的話,則設(shè)置游戲狀態(tài)為 game over 狀態(tài),這樣畫 布在下一次重繪時就繪出 game over 的畫面.如果游戲不是處于 game over 狀態(tài),則把 下墜物固定下來,同時檢查游戲畫布上下墜物當(dāng)前行下面的所有行,看是否需要進(jìn)行行 刪除動作,如果需要行刪除,則清除游戲地圖上被刪行的數(shù)據(jù),再把被刪行繪制成背 景色。然后初始化一個新的下墜物,繪制這個新的下墜物。paint 方法的流程圖如下所 示: 21 22 .3 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 本游戲涉及到以下幾種數(shù)據(jù)結(jié)構(gòu)。 1.1.游戲區(qū)域游戲區(qū)域 游戲

46、區(qū)域?yàn)槭謾C(jī)或者 pda 屏幕的一部分,該區(qū)域?yàn)檎叫?邊長一定能被 16 整除 (因?yàn)槎砹_斯游戲區(qū)域剛好為 16 個小磚塊長,16 個小磚塊寬的方形) 。無論在水平方 向還是垂直方向,該區(qū)域都要處于屏幕的居中位置。游戲區(qū)域在水平方向上分為 2 部 分,一部分為 12 個小磚塊寬,用來顯示游戲容器,另一部分為 4 個小磚塊寬,用來顯 示下一個下墜物和分?jǐn)?shù)。 2.2.小磚塊小磚塊 小磚塊是下墜物和游戲容器的組成部分。表現(xiàn)為一個正方形,邊長為游戲區(qū)域邊 長的 1/16。每個小磚塊在繪制的時候,4 邊會留出 1 個象素寬,繪制成白色或者灰色, 這樣磚塊之間才有間隙。每種小磚塊也有 id,分別為 1 到

47、 8。我們可以用一個顏色數(shù)組 (程序里叫 brick_colors)存儲這 8 種顏色。若某種小磚塊的 id 為 3,那么該小磚的顏 色為 brick_colors3-1. 3.3.下墜物下墜物 下墜物本質(zhì)上為 16 個小磚塊組成的正方形。下墜物一共有 7 種,比如有田字形 的,l字形的等等。每種下墜物一共有 4 種旋轉(zhuǎn)變化。 每種下墜物都有一個 id,分 別為 1 到 7。因?yàn)閷τ谝环N下墜物來說,其顏色是固定的。我們同樣可以用該種顏色在 brick_colors 數(shù)組中的下標(biāo)值加上 1,作為下墜物的 id. 例如l形下墜物的 id 為 3,其變化形式為: 23 那么用什么數(shù)據(jù)結(jié)構(gòu)存儲一個下墜

48、物呢,我們以l形的下墜物為例子來說明: 因?yàn)槊恳粋€下墜物有四種狀態(tài),所以我們可以考慮用一個長度為 4 的數(shù)組來存貯 一個下墜物的 4 種狀態(tài),數(shù)組中每一個元素表示該下墜物的一種狀態(tài)。那么用什么東 西來表示某個下墜物的某種狀態(tài)呢,從上圖可以看出,用一個 4x4 的二維數(shù)組來存儲 一種下墜物的一種狀態(tài)最合適不過了。在有色磚塊出現(xiàn)的位置,值為 1,而只有背景顏 色,無需繪制的位置,值為 0。因此,整個l形下墜物的 4 種狀態(tài)可以用一個 3 維數(shù) 組來表示: protected int blockpattern3 = 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,

49、0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0 ; 4.4.游戲地圖游戲地圖 游戲地圖是用來存儲游戲容器上的固定磚塊的。游戲容器為一個寬為 12 個小磚塊 單位,高為 16 個小磚塊單位,包括左右 2 堵墻和下邊的容器底在內(nèi)。所以用一個 16x12 的二維數(shù)組(程序里叫 mapdata)來存儲固定磚塊。如果 mapdataij=k(k!=0). 那

50、么就表示游戲容器的 i 行 j 列上有個固定的小磚塊,小磚塊的顏色值為 brick_colorsk-1.如果 k=0 則表示 i 行 j 列無磚塊。 因此對于以下這種游戲運(yùn)行時刻,mapdata 的值為8,0,0,0,0,0,0,0,0,0,0,8 8,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,8 24 8,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,8 8,0,0,0,0,0,0,0,0,0,0,88,0,0,0,0

51、,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0, 88,0,0,0,0,0,0,0,0,1,1,88,0,0,0,0,0,0,0,0,1,1,88,0,0,0,0,0,7,7,5,1,1, 88,0,5,0,0,7,2,5,5,1,1,88,8,8,8,8,8,8,8,8,8,8,8 25 第四章第四章 手機(jī)電話本程序的開發(fā)手機(jī)電話本程序的開發(fā) 4.14.1 開發(fā)手機(jī)電話本需解決的相關(guān)技術(shù)問題開發(fā)手機(jī)電話本需解決的相關(guān)技術(shù)問題 1.可以添加聯(lián)系人信息到手機(jī)電話本。 2.可以對手機(jī)數(shù)據(jù)存儲的進(jìn)行檢索。 3.3.可以查找和刪除手機(jī)電話本里的原有的聯(lián)系人信息。 4.24.2

52、程序構(gòu)思和流程程序構(gòu)思和流程 midp 為 midlets 提供了一種永久存儲和后來讀出數(shù)據(jù)的數(shù)據(jù)庫解決方案,被稱為 record managerment system(rms),是一種類簡單的基于記錄的數(shù)據(jù)庫。 很顯然,手機(jī)上的數(shù)據(jù)庫系統(tǒng)不可能有 pc 上的強(qiáng)大功能。微小的存儲空間也限制 了它們的結(jié)構(gòu)不能過于復(fù)雜。rms 是專門針對移動設(shè)備的服務(wù)的。 rms 包中包括 recordstore 類。在一個 midlet suite 包里的所有 midlet 都允許創(chuàng) 建多個記錄集,只要它們賦有不同的名稱。當(dāng) midlet 包從平臺中被移除后,所有與該 包有關(guān)的的記錄集都同時會被移除。同一個包內(nèi)

53、的 midlets 可以直接互相訪問它們的 記錄集,不同包內(nèi)也可產(chǎn)生共享,但這需要有包的授權(quán)屬性決定。訪問模式會在準(zhǔn)備 提供共享的 recordstore 被建立時被創(chuàng)建。訪問模式允許私有使用或訪問。 recordstore 的 api 采用了時間戳的概念,其長整型變量由 system 的 currenttimemillis()函數(shù)返回決定。record store 每次被修改后都會自動在其屬性 上附加上時間戳,這為同步化引擎和程序的控制都極為有效。 記錄是字節(jié)數(shù)組。開發(fā)者可以利用 inputstream 的派生類 datainputstream、dataoutputstream 以及 byt

54、earrayinputstream、bytearrayoutputstream 將不同種類的數(shù)據(jù)類型打包,以字節(jié) 流的形式發(fā)送和接收。 26 區(qū)別記錄的唯一標(biāo)記是他們的 id 值,作為記錄集的主鍵。第一項(xiàng)記錄的 id 是 1, 其后的每個記錄 id 遞增。 record 是以字節(jié)為基本單位來存放的,所以所有要寫入 record 的數(shù)據(jù)都必須先將 其轉(zhuǎn)為字節(jié)才能寫入,從 record 所讀出來的數(shù)據(jù)也是字節(jié),必須將其轉(zhuǎn)換為原先寫入 時的數(shù)據(jù)類型才有意義。 然而讀取或?qū)懭氲淖止?jié)數(shù)組都只能代表一個字段的信息,如果需要讀取或?qū)懭攵?個字段就必須要將數(shù)據(jù)轉(zhuǎn)換成字節(jié)信息,并且提供適當(dāng)?shù)臋C(jī)制來分隔這些信息。

55、主要 有兩種方法: 1. 標(biāo)記法。 將所有要存放的數(shù)據(jù)用字符串表示,但是在字段和字段之間以一個特殊的符號作 為分隔。符號不能和字段內(nèi)的數(shù)據(jù)相同的字符。 2利用輸入/輸出流 這一種方法較上一種復(fù)雜,但是較為實(shí)用。方法一中所有的字段只能以字符串的 形式存儲,要對這些字段作進(jìn)一步的處理非常麻煩。利用輸入輸出流可以寫入及讀取 不同數(shù)據(jù)類型的數(shù)據(jù),做法是在寫入數(shù)據(jù)時先將一個 dataoutputstream 數(shù)據(jù)流對象串 接到一個 bytearrayoutstream 數(shù)據(jù)流對象,然后再依字段的數(shù)據(jù)類型用 writeint()、 writeboolean()等方法寫入,最后把 bytearrayoutp

56、utstream 內(nèi)的元素?cái)?shù)據(jù)寫入 record 中。反之若要讀取數(shù)據(jù),則先要串接一個 datainputstream 對象和 bytearrayinputstream,依字段的數(shù)據(jù)類用 readint()、readboolean()等方法讀取。 本程序中主要存放在永久區(qū)的內(nèi)容為聯(lián)系人的信息。一共可以存儲 100 條信 息。每次添加聯(lián)系人信息就會插入進(jìn)相應(yīng)的位置。在輸入記錄前,要求用戶在 textfield 框中寫入名字等信息。返回的 getstring 可以將名字輸送給字節(jié)流。 27 4.34.3 程序分析和具體實(shí)現(xiàn)程序分析和具體實(shí)現(xiàn) 4.3.1 電話本進(jìn)入前的選擇電話本進(jìn)入前的選擇 每個

57、midlet 程序都必須有一個主類,該類必須繼承自 midlet。它控制著整個程序 的運(yùn)行,并且可以通過相應(yīng)函數(shù)從程序描述文件中獲取相關(guān)的信息。該類中擁有可以 管理程序的創(chuàng)建、開始、暫停(手機(jī)中很可能有正在運(yùn)行程序卻突然來電的情況,這 logo 畫面 選項(xiàng)畫面 主程序 信息處理 退出電話本 開始 初始化參數(shù) 圖 4-2 本程序的主流程圖 28 時應(yīng)進(jìn)入暫停狀態(tài)。 ) 、結(jié)束的函數(shù)。 進(jìn)入時,首先載入電話本的選項(xiàng)畫面(運(yùn)行畫面如圖 4-1 所示) ,當(dāng)再次選擇“添 加聯(lián)系人”或“所有聯(lián)系人”時,就進(jìn)入主程序?qū)β?lián)系人的信息進(jìn)行添加,刪除或著 查找。 4.3.2 電話本設(shè)計(jì)及其涉及到的若干類電話本設(shè)

58、計(jì)及其涉及到的若干類 1 1javax.microedition.lcduijavax.microedition.lcdui 程序包程序包 在 midp1.0 中的 javax.microedition.lcdui 包內(nèi)定義了 21 個類和 3 個接口,這 比 j2se 中的 awt 和 swing 要簡單很多。在這 24 個類中,display 是負(fù)責(zé)設(shè)備的顯示以 及輸入的管理器,通常我們通過調(diào)用 setcurrent(displayable displayable)方法來把 displayable 組件顯示在手機(jī)屏幕上。displayable 代表了能夠在屏幕上顯示的組件對 象,它的兩個抽

59、象子類是 canvas 和 screen,他們分別代表了 midp 中的低級用戶界面和 圖 5-1 電話本選項(xiàng)畫面 29 高級用戶界面。 form,alert,list 和 textbox 都是從 screen 繼承過來的,他們構(gòu)成了 midp 中的高級用 戶界面。要清楚他們每個組件都必須單獨(dú)占用一個屏幕,不能與其他組件放在一起。 form 類在 javax.microedition.lcdui 包中至關(guān)重要,它是 item 的容器,通過調(diào)用 append(item item)方法,你可以把 textfield、datefield 等 item 放在 form 內(nèi) 2.2. javax.mic

60、roedition.rmsjavax.microedition.rms 程序包程序包 midp 提供在移動設(shè)備上存儲持久數(shù)據(jù)的支持,并且 mid 簡表還特意規(guī)定兼容的移 動設(shè)備必須提供至少 8kb 的非動態(tài)內(nèi)存用于數(shù)據(jù)存儲的用途,時式上,大多數(shù)的 midp java 設(shè)備提供的空間比這要求多得多。這就允許一個 midlet 充份利用應(yīng)用程序的持久 數(shù)據(jù)。對于有 java 2 標(biāo)準(zhǔn)版開發(fā)經(jīng)驗(yàn)的開發(fā)者,應(yīng)該注意這種數(shù)據(jù)存儲能力與標(biāo)準(zhǔn)的 java 有區(qū)別。j2me 記錄管理系統(tǒng) ( rms )允許數(shù)據(jù)流被儲存并且在一個記錄基礎(chǔ)上訪 問數(shù)據(jù)。由應(yīng)用程序開發(fā)者把每個記錄解析到字段水平。rms 程序包內(nèi)部

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論