電子與信息工程畢業(yè)論文基于j2me環(huán)境的手機(jī)功能軟件開發(fā)_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本 科 畢 業(yè) 設(shè) 計(jì)</p><p>  基于J2ME環(huán)境的手機(jī)功能軟件開發(fā)</p><p>  所在學(xué)院 </p><p>  專業(yè)班級(jí) 電子與信息工程 </p><p>  學(xué)生姓名 學(xué)號(hào)

2、 </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘要</b></p><p>  Java語(yǔ)言經(jīng)過十多年的發(fā)展和應(yīng)用,如今的技術(shù)日漸成熟。直至現(xiàn)在,Java已經(jīng)成為當(dāng)今網(wǎng)

3、絡(luò)計(jì)算機(jī)平臺(tái)的標(biāo)準(zhǔn),也成為全球程序員的首選開發(fā)平臺(tái)。放眼當(dāng)今的電子市場(chǎng),Java技術(shù)已無(wú)處不在,小至信用卡,大到企業(yè)級(jí)應(yīng)用系統(tǒng)等。而J2ME作為Java的微型版,主要用于開發(fā)具有有限連接、內(nèi)存以及用戶界面能力的設(shè)備應(yīng)用程序,推動(dòng)著整個(gè)移動(dòng)網(wǎng)絡(luò)技術(shù)的發(fā)展。</p><p>  在小型電子設(shè)備上,J2ME以它在無(wú)線編程上的獨(dú)特作用為創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案。其中以手機(jī)的應(yīng)用軟件最為普及現(xiàn)今人們的

4、生活。一款優(yōu)秀的手機(jī)應(yīng)用軟件可以為現(xiàn)在的人們帶來(lái)更方便、更現(xiàn)代化、更優(yōu)質(zhì)的生活。</p><p>  當(dāng)今的手機(jī)應(yīng)用軟件市場(chǎng)五花八門,本論文選擇了設(shè)計(jì)比較普遍的手機(jī)音樂軟件。MusicOnline屬于在線音樂軟件。設(shè)計(jì)過程中為了保證設(shè)計(jì)時(shí)的思路清晰,邏輯正確,本文主要采取MVC的模式設(shè)計(jì)這款音樂軟件,將程序分為控制器類、視圖類和模型類三大模塊。控制器為單一控制器UIController,設(shè)計(jì)中在視圖界面方面主要實(shí)

5、現(xiàn)了音樂列表和音樂播放時(shí)的視圖,通過LCDUI體系中的高級(jí)用戶界面組件和低級(jí)用戶界面組件分別對(duì)兩個(gè)視圖進(jìn)行了不同的設(shè)計(jì);在通信方面實(shí)現(xiàn)網(wǎng)絡(luò)通信和在數(shù)據(jù)處理方面實(shí)現(xiàn)XML的解析等。其中各種類和方法的使用與功能在正文中將會(huì)詳細(xì)介紹。本文的著重點(diǎn)在于客戶端設(shè)計(jì)的過程和思路上,在介紹這些的同時(shí)也會(huì)介紹一些開發(fā)軟件及開發(fā)環(huán)境的使用情況。最后還會(huì)稍微介紹一下測(cè)試的結(jié)果與軟件其他可能的改進(jìn)。由于程序過長(zhǎng),客戶端的主要程序置于最后附錄一項(xiàng)。</p

6、><p>  關(guān)鍵字:J2ME;音樂軟件;移動(dòng)網(wǎng)絡(luò) </p><p><b>  Abstract</b></p><p>  Java language after more than ten years of development and application, today's technology to mature. Until

7、 now, Java has become the most standard network computer platform, also become the preferred global programmers development platform. Look to today's electronic market, Java technology has been everywhere, it is smal

8、l to credit card, big to enterprise applications system, etc. But the miniature version of the J2ME as Java, mainly for the development with limited connection, memory, and the </p><p>  In small electronic

9、equipment, with its in J2ME wireless programming to create a unique role performance a network of excellence application provides a set of complete solutions. Which is the most popular mobile phone applications today peo

10、ple's lives. One excellent mobile application software can be for people of now bring more convenient, more modern, better quality of life.</p><p>  Today's cell phone is multifarious applications ma

11、rket, this paper chose design is universal mobile music software. Online music software MusicOnline belong to. The design process to ensure that the design of clear thinking, logic, this paper mainly adopts correctly the

12、 pattern design of this MVC music software, procedures into controller type, view class and model class three modules. Controller for a single controller UIController, design in view interface aspects mainly realizes the

13、 music lis</p><p>  Key word: J2ME,Music software,Mobile network</p><p><b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1 手機(jī)軟件現(xiàn)狀1</p>&

14、lt;p>  1.2 J2ME介紹1</p><p>  第二章 J2ME相關(guān)技術(shù)概覽3</p><p>  2.1 Java語(yǔ)言特點(diǎn)3</p><p>  2.2 關(guān)于ECLIPSE3</p><p>  2.3 關(guān)于SDK4</p><p>  第三章 程序結(jié)構(gòu)及其實(shí)現(xiàn)5</p>

15、<p>  3.1 MusicOnline5</p><p>  3.2 MVC模式5</p><p>  3.3 服務(wù)器端程序6</p><p>  3.4 音樂列表的實(shí)現(xiàn)6</p><p>  3.5 音樂播放的實(shí)現(xiàn)7</p><p>  3.5 網(wǎng)絡(luò)通信的實(shí)現(xiàn)7</p>&l

16、t;p>  3.6 XML解析的實(shí)現(xiàn)7</p><p>  3.7 文件管理的實(shí)現(xiàn)7</p><p>  3.8 各個(gè)功能模塊的控制8</p><p>  第四章 程序流程和具體分析9</p><p>  4.1 程序分析9</p><p>  4.2 MusicItem9</p>&

17、lt;p>  4.3 MusicListUI10</p><p>  4.4 MusicPlayerUI11</p><p>  4.5 HTTPManager12</p><p>  4.6 XMLmanager12</p><p>  4.7 FileManager12</p><p>  4.8

18、UIController12</p><p>  4.9 MusicListEntity12</p><p>  第五章 測(cè)試與改進(jìn)14</p><p>  5.1測(cè)試與打包14</p><p>  5.2程序的改進(jìn)15</p><p><b>  總結(jié)17</b></p>

19、;<p><b>  總結(jié)與感想17</b></p><p><b>  致 謝17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  第一章 緒論</b></p><p>  1.1 手機(jī)軟

20、件現(xiàn)狀</p><p>  隨著3G無(wú)線網(wǎng)絡(luò)的飛速發(fā)展,使用手機(jī)上網(wǎng)的用戶越來(lái)越多。手機(jī)在人們生活中的普及也越來(lái)越廣泛。至2008年,全球已有超過15億臺(tái)手機(jī)和手持設(shè)備應(yīng)用Java技術(shù)。伴隨著這個(gè)巨大的市場(chǎng),手機(jī)應(yīng)用軟件的發(fā)展也變得迅猛無(wú)比。而Java在手機(jī)軟件發(fā)展方面更是擁有巨大的優(yōu)勢(shì)和發(fā)展?jié)摿Α?</p><p>  回望幾年前的老版手機(jī),老版手機(jī)的程序有很大的使用限制,手機(jī)里的程序不

21、會(huì)自動(dòng)更新,有了錯(cuò)誤也不能更新和修改,如果想要增加新功能那估計(jì)就得換一部手機(jī)了。老版手機(jī)訪問互聯(lián)網(wǎng)的收費(fèi)很高,這是因?yàn)槔习媸謾C(jī)在連接無(wú)線網(wǎng)絡(luò)時(shí)所使用的網(wǎng)絡(luò)資源必須連接網(wǎng)絡(luò)在線訪問,這樣上網(wǎng)的耗時(shí)和費(fèi)用之大可想而知。</p><p>  而相對(duì)于老版手機(jī),如今的智能手機(jī)可以通過移植J2ME來(lái)實(shí)現(xiàn)智能化,但是需要向J2ME的開發(fā)商購(gòu)買使用版權(quán)[1]。Java的應(yīng)用程序兼容性強(qiáng),適用范圍廣,用J2ME編寫的手機(jī)軟件可以

22、在大部分的Java手機(jī)上使用,安裝后的手機(jī)軟件會(huì)自動(dòng)更新,增加新功能只要通過安裝新的軟件就能達(dá)成。而且Java技術(shù)在網(wǎng)絡(luò)帶寬的應(yīng)用方面的提升更加明顯,Java應(yīng)用程序下載到手機(jī)上安裝之后,可以在本地運(yùn)行,只會(huì)在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。</p><p>  這幾年的Java技術(shù)發(fā)展迅速, JAVA已經(jīng)從一種最初用來(lái)編寫與硬件無(wú)關(guān)的嵌入式系統(tǒng)的編程語(yǔ)言變成了一種與廠商、硬件無(wú)關(guān)的強(qiáng)大的服務(wù)器端技術(shù),它使手機(jī)應(yīng)

23、用軟件在無(wú)線移動(dòng)方面得以飛速的發(fā)展。隨著JAVA技術(shù)的繼續(xù)發(fā)展,J2ME技術(shù)將會(huì)不斷完善,將會(huì)有越來(lái)越多的智能手機(jī)應(yīng)用軟件被開發(fā)出來(lái)被廣大的用戶使用。而且J2ME強(qiáng)大的跨平臺(tái)性將漸漸使它奪得開發(fā)軟件王者的地位。</p><p>  下面在本篇文章中就將詳細(xì)的介紹基于J2ME環(huán)境下手機(jī)應(yīng)用程序制作的具體過程以及其重要的作用。</p><p>  1.2 J2ME介紹</p>&

24、lt;p>  在1999年,Sun公司宣布了以Java 2平臺(tái)為核心的J2EE、J2SE和J2ME三大平臺(tái)。其中J2ME被稱為Java微型版,主要用于開發(fā)具有有限連接、內(nèi)存以及用戶界面能力的設(shè)備應(yīng)用程序,即被定為在消費(fèi)性的電子產(chǎn)品應(yīng)用上。J2ME版本為資源有限的消費(fèi)性電子產(chǎn)品設(shè)置了精簡(jiǎn)核心類庫(kù),并提供了一些模塊化的架構(gòu)用來(lái)開發(fā)軟件,使得開發(fā)軟件時(shí)的思路更明確。由于J2ME應(yīng)用程序驚人的廣泛性,使它將會(huì)成為未來(lái)Java技術(shù)發(fā)展的重點(diǎn)

25、。</p><p>  J2ME在首次亮相的時(shí)候就很明確地將目標(biāo)指向智能無(wú)線設(shè)備和小型計(jì)算機(jī)設(shè)備的開發(fā)。它在開發(fā)時(shí)有一個(gè)明顯的優(yōu)點(diǎn),就是它兼容于所有支持Java的設(shè)備。所謂支持Java的設(shè)備,簡(jiǎn)單來(lái)說(shuō)就是任何能運(yùn)行Java虛擬機(jī)器的計(jì)算機(jī)。在如今的電子市場(chǎng)中,幾家大型電子產(chǎn)品公司例如Motorola、Nokia等都在生產(chǎn)支持Java的設(shè)備。</p><p>  J2ME的硬件平臺(tái)與其它Ja

26、va平臺(tái)的相比有很大的差異。在J2ME的硬件設(shè)備中,根據(jù)其性能主要可以分為連接設(shè)備和受限連接設(shè)備兩種。J2ME的體系結(jié)構(gòu)也是基于這個(gè)設(shè)備的類別的[2]。其中連接設(shè)備相對(duì)高端,具體例子有電視機(jī)的機(jī)頂盒等。受限連接設(shè)備相對(duì)低端,例如尋呼機(jī)、手機(jī)等。由于有兩種不同的設(shè)備,它們的開發(fā)需求也不一樣,為了解決這方面問題。J2ME提出了配置(configuration)的概念,它是提供給設(shè)備使用的最小類庫(kù)集合,這個(gè)概念對(duì)不同級(jí)別的硬件所使用的JVM和

27、基礎(chǔ)API集合方面做了規(guī)定。如較高端的連接設(shè)備會(huì)采用CDC(Connected Device Configuration),所使用的JVM被稱為CVM;而對(duì)于低端的受限連接設(shè)備,則會(huì)采用CLDC(Connected Limited Device Configuration),并且由于受到內(nèi)存資源和執(zhí)行速度的影響,使用的虛擬機(jī)為KVM。</p><p>  在實(shí)際應(yīng)用中,雖然CDC和CLDC為那些各類設(shè)備中最具共性

28、的配置提供了基本的功能集合,但在不同的設(shè)備之間仍存在著很大的差異。為了解決這個(gè)問題,開發(fā)人員在原來(lái)配置的基礎(chǔ)上,又提出了簡(jiǎn)表(Profile)的概念,與配置類似的簡(jiǎn)表即是一系列針對(duì)特定設(shè)備的類庫(kù)。簡(jiǎn)表在不同級(jí)別硬件的基礎(chǔ)上,又針對(duì)某一類設(shè)備制訂了規(guī)范和API,這個(gè)概念提出之后,開發(fā)人員終于可以建立一個(gè)相對(duì)完善的J2ME開發(fā)環(huán)境。第一個(gè)可供使用的J2ME應(yīng)用程序運(yùn)行環(huán)境為MIDP(Mobile Information Device Pro

29、file),同時(shí)它也是第一個(gè)制訂完成的簡(jiǎn)表。</p><p>  手機(jī)屬于受限連接設(shè)備,因此手機(jī)上的J2ME程序是基于CLDC和MIDP的,這些程序也被稱為MIDlet(Mobile Information Devices applet)。MIDlet是近年來(lái)應(yīng)用最廣的J2ME應(yīng)用程序,主要運(yùn)行于各種移動(dòng)終端中[3]。</p><p>  第二章 J2ME相關(guān)技術(shù)概覽</p>

30、<p>  2.1 Java語(yǔ)言特點(diǎn)</p><p>  Java語(yǔ)言無(wú)疑是一種優(yōu)秀且功能強(qiáng)大的編程語(yǔ)言,它與平臺(tái)無(wú)關(guān)的特性使它擁有巨大的普及率和廣泛性。與其它開發(fā)程序語(yǔ)言相比,Java語(yǔ)言有許多特有的性質(zhì)和優(yōu)點(diǎn)使得它更適于程序的開發(fā)。對(duì)軟件開發(fā)人員來(lái)說(shuō),它主要有以下幾個(gè)優(yōu)勢(shì)[4]:</p><p>  易于學(xué)習(xí)開發(fā)。Java程序設(shè)計(jì)語(yǔ)言是一種強(qiáng)大的面向?qū)ο蟮恼Z(yǔ)言,但是學(xué)習(xí)

31、起來(lái)卻有著平緩的學(xué)習(xí)曲線,對(duì)廣大新開發(fā)技術(shù)人員來(lái)說(shuō)上手極快。</p><p>  代碼量更少。從編寫一個(gè)程序時(shí)使用的方法和類的數(shù)量上進(jìn)行比較的話,用Java語(yǔ)言編寫同樣的一個(gè)程序的代碼量通常比用C++編寫的少75%左右。</p><p>  代碼更健壯。Java語(yǔ)言會(huì)使用泛型等的方式進(jìn)行編寫程序,使得程序出現(xiàn)BUG的概率更低。Java軟件附帶大量的包和類,程序開發(fā)人員在編寫程序時(shí)可以不斷重

32、用這些已經(jīng)經(jīng)過測(cè)試的類和方法,從而減少了程序的錯(cuò)誤率。</p><p>  開發(fā)程序速度更快。Java編程語(yǔ)言相對(duì)C++來(lái)說(shuō)更簡(jiǎn)易,當(dāng)用它編寫程序時(shí),開發(fā)人員的開發(fā)實(shí)踐的速度將會(huì)快兩倍,而要求的代碼量卻更少。</p><p>  強(qiáng)大的跨平臺(tái)性.Java程序可以很輕松地在不同的平臺(tái)上進(jìn)行移植。在Windows、Linux、Solaris、MacOS等平臺(tái)上都能使用同樣的代碼。</p&

33、gt;<p>  輕易地移植或遷移。用Java語(yǔ)言編寫的應(yīng)用程序被編譯到機(jī)器獨(dú)立的平臺(tái)上,這讓系統(tǒng)的移植和平臺(tái)的遷移變得非常簡(jiǎn)單。</p><p>  軟件升級(jí)更容易。如果使用Java編寫的軟件,用戶可以只用鼠標(biāo)單擊這樣簡(jiǎn)單的操作啟動(dòng)Java應(yīng)用程序。Java應(yīng)用程序在啟動(dòng)時(shí)會(huì)自行檢查當(dāng)前版本,如果有Java軟件的其他最新版本,軟件將自動(dòng)地下載更新并進(jìn)行安裝。</p><p>

34、;  2.2 關(guān)于ECLIPSE</p><p>  Eclipse 是一個(gè)開放源代碼的強(qiáng)大的Java開發(fā)平臺(tái),與它相關(guān)的許可證大多都是基于CPL(Common Public License),CPL是一個(gè)被OSI(Open Source Initiative)認(rèn)可的許可證。Eclipse是和Sun ONE Studio、NetBeans、Borland JBuilder類似的一種整合型可擴(kuò)展開發(fā)平臺(tái),它是目前

35、最著名的開源項(xiàng)目之一[6]。Eclipse是用Java語(yǔ)言編寫的,它本身只是一個(gè)框架和一組服務(wù),通過插件組件來(lái)構(gòu)建開發(fā)環(huán)境。但是Eclipse還附帶了一個(gè)標(biāo)準(zhǔn)的插件集,其中就包括了Java開發(fā)工具(Java Development Tools,JDT)。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件允許那些希望擴(kuò)展 Eclipse 的軟件開發(fā)人員構(gòu)建與 Eclips

36、e 環(huán)境無(wú)縫集成的工具。</p><p>  Eclipse未來(lái)的發(fā)展目標(biāo)不只是成為專門開發(fā)Java程序的IDE環(huán)境,根據(jù)它的體系結(jié)構(gòu),通過一些開發(fā)插件,它能擴(kuò)展到任何語(yǔ)言的開發(fā),甚至能成為圖片繪制工具[7]。由于 Eclipse 中基本上都是插件,各種不同類型的插件讓各種工具開發(fā)人員都可以在Eclipse這個(gè)場(chǎng)所中有所發(fā)揮。雖然 Eclipse 是使用 Java 語(yǔ)言開發(fā)的,但它的用途卻不限于 Java 語(yǔ)言,

37、它還支持C/C++、COBOL 和 Eiffel 等編程語(yǔ)言,只要安裝相應(yīng)插件即可。</p><p><b>  2.3 關(guān)于SDK</b></p><p>  SDK(Software Development Kit),即軟件開發(fā)工具包,對(duì)于開發(fā)J2ME程序來(lái)說(shuō)是必不可少的。選擇一款合適的SDK對(duì)開發(fā)軟件來(lái)說(shuō)是十分重要的,而本次設(shè)計(jì)選擇的是Nokia S40 5th

38、 FP1 SDK。</p><p>  SDK簡(jiǎn)單來(lái)說(shuō)就是Eclipse Platform、JDT和PDE所生產(chǎn)的組件的合并,這些組件組合之后將提供一個(gè)具有豐富特性的開發(fā)環(huán)境,并允許開發(fā)者建造一些可以無(wú)縫集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse項(xiàng)目生產(chǎn)的軟件和第三方插件組合而成。其中Eclipse項(xiàng)目生產(chǎn)的軟件以 GPL發(fā)布,而第三方插件有其自身的許可協(xié)議。</

39、p><p>  SUN公司作為Java技術(shù)的先行開發(fā)者和主要的推廣者,它開發(fā)的WTK集成的JSR規(guī)范最多,功能也最全面[8]。但是各大手機(jī)廠商為了產(chǎn)品的獨(dú)特性都自行開發(fā)了屬于自己的J2ME開發(fā)包,所以WTK開發(fā)包在實(shí)際中的應(yīng)用性會(huì)差很多。因?yàn)樵赪TK中調(diào)試正常的程序,卻不一定能夠放到真機(jī)中正常運(yùn)行,有些甚至根本無(wú)法啟動(dòng)。所以在實(shí)際的工作中,為了使辛苦開發(fā)的軟件最后不至于落得一無(wú)是處的下場(chǎng),在開發(fā)軟件的初始階段就要根據(jù)

40、目標(biāo)機(jī)型選好合適的SDK。</p><p>  第三章 程序結(jié)構(gòu)及其實(shí)現(xiàn)</p><p>  3.1 MusicOnline</p><p>  本設(shè)計(jì)的程序是一個(gè)手機(jī)音樂應(yīng)用程序,名為MusicOnline,中文名即在線聽歌。由于是一款音樂軟件,所以在設(shè)計(jì)的初始階段首先考慮到的便是音樂列表和音樂播放時(shí)的界面,然后在邏輯模型上,需要處理音樂數(shù)據(jù),連接網(wǎng)絡(luò)等,仔細(xì)思

41、考后,發(fā)現(xiàn)客戶端程序需要涵蓋UI組件設(shè)計(jì)、RMS管理、HTTP通信、XML解析等多個(gè)與J2ME相關(guān)的技術(shù)。而且在實(shí)現(xiàn)網(wǎng)絡(luò)模擬時(shí)還要設(shè)計(jì)服務(wù)器端的程序,將兩者放在一起,整個(gè)MusicOnline程序就是一個(gè)以C/S模式開發(fā)的商務(wù)軟件系統(tǒng),它主要實(shí)現(xiàn)的功能為:軟件的客戶端可以從服務(wù)器端下載音樂的詳細(xì)信息,將信息存儲(chǔ)在本地后并展示給用戶。當(dāng)用戶選擇列表中某一首音樂后,軟件的客戶端能夠連接到服務(wù)器端進(jìn)行在線播放音樂。</p>&l

42、t;p>  為了將這些功能完全的實(shí)現(xiàn),需要進(jìn)行進(jìn)一步的流程分析。最后決定的具體程序流程大致如下:首先是要實(shí)現(xiàn)客戶端從服務(wù)器端下載一些音樂的詳細(xì)信息。如果是文字信息就將以XML格式組織,這些文字信息具體包括音樂的標(biāo)題、簡(jiǎn)介、圖片ID和音樂ID等;接著軟件的客戶端完成解析后,需要將下載的信息保存到RMS中。另外根據(jù)圖片ID下載的圖片可以選擇保存在本地;然后是客戶端以列表的形式展示音樂信息;最后是當(dāng)用戶選擇某一首音樂后,進(jìn)入音樂播放界面

43、,顯示音樂信息的同時(shí)進(jìn)行在線播放。</p><p>  分好詳細(xì)的步驟之后,就可以開始架構(gòu)每一步程序的具體結(jié)構(gòu)了。</p><p><b>  3.2 MVC模式</b></p><p>  MVC(Model-View-Controller)中文翻譯為“模型-視圖-控制器”。使用MVC模式設(shè)計(jì)程序的核心思想就是將設(shè)計(jì)程序的主體分離成模型和視圖

44、兩個(gè)部分,其中模型部分的程序?qū)崿F(xiàn)了邏輯處理,視圖部分程序?qū)崿F(xiàn)了用戶界面展示,然后兩者通過控制器來(lái)實(shí)現(xiàn)同步。采用MVC模式有眾多優(yōu)點(diǎn),主要為:高重用性、低耦合性、可適用性、較低的生命周期成本以及快速的開發(fā)和部署。當(dāng)然,采用MVC模式來(lái)設(shè)計(jì)程序也會(huì)帶來(lái)一些麻煩。但總的來(lái)說(shuō)MVC設(shè)計(jì)模式是一個(gè)創(chuàng)建應(yīng)用程序的很好途徑,它所提倡的一些原則,例如用戶界面和邏輯處理互相分離的概念非常容易理解,可以幫組軟件開發(fā)者理清思路。并且使用MVC可以使軟件程序在

45、代碼健壯性、代碼重用以及程序結(jié)構(gòu)方面變得更加完善[5]。</p><p>  本設(shè)計(jì)程序的客戶端就是采用MVC設(shè)計(jì)模式。主程序根據(jù)MVC模式分成視圖和模型兩個(gè)部分,加上控制器一共分為三個(gè)模塊。各個(gè)模塊的具體分類如下:</p><p>  視圖模塊:本設(shè)計(jì)中主要實(shí)現(xiàn)了兩個(gè)視圖,即音樂列表視圖(MusicListUI)和音樂播放視圖(MusicPlayerUI)。</p><

46、;p>  控制器模塊:本設(shè)計(jì)采用的是單控制器模式,只有一個(gè)控制器類(UIController)。</p><p>  模型模塊:設(shè)計(jì)中實(shí)現(xiàn)了多個(gè)模型類,其中包括XMLManager、RMSManager、RMSManager、HTTPManager等。</p><p>  分配完類之后,整個(gè)MusicOnline程序的類框架也出來(lái)了,如圖3.1所示。</p><p

47、>  圖 3.1 MusicOnline設(shè)計(jì)框架</p><p>  3.3 服務(wù)器端程序</p><p>  本次設(shè)計(jì)的軟件與移動(dòng)互聯(lián)網(wǎng)有關(guān),為了方便開發(fā)及測(cè)試,我們需要搭建自己的服務(wù)器。這樣做有兩方面好處:一方面是在通信協(xié)議確定的情況下,可以同步開發(fā)客戶端程序和服務(wù)器端程序,從而縮短項(xiàng)目周期;另一方面,擁有自己搭建的服務(wù)器非常便于客戶端程序的調(diào)試[9]。</p>&

48、lt;p>  Oracle的WebLogic是近年來(lái)世界上市場(chǎng)份額最大的應(yīng)用服務(wù)器,而緊追其后的就是IBM的WebSphere。不過這兩款軟件都是收費(fèi)的,對(duì)于我們?nèi)粘W(xué)習(xí)或開發(fā)來(lái)說(shuō)很不適用。除此之外比較常見的開源應(yīng)用程序有Tomcat,JBoss等。本設(shè)計(jì)的服務(wù)器端程序是采用Tomcat+Servlet來(lái)實(shí)現(xiàn)的。</p><p>  根據(jù)設(shè)計(jì)要求分析,服務(wù)器端需要實(shí)現(xiàn)兩種服務(wù):一種服務(wù)是服務(wù)器端在接收客戶端

49、發(fā)送的下載請(qǐng)求時(shí),需要將服務(wù)器中相關(guān)的資源發(fā)送給客戶端。另一種服務(wù)是當(dāng)服務(wù)器端收到播放請(qǐng)求時(shí)發(fā)布相應(yīng)的音樂文件,使得客戶端能實(shí)現(xiàn)在線播放。</p><p>  3.4 音樂列表的實(shí)現(xiàn)</p><p>  在啟動(dòng)程序后,首先會(huì)顯示歡迎語(yǔ)句,然后就展示音樂列表界面。音樂列表界面展示的是以列表的形式排列的保存在本地的音樂信息。如果當(dāng)前沒有任何音樂信息,那么就會(huì)只展示歡迎信息。</p>

50、<p>  實(shí)現(xiàn)歡迎信息的過程比較簡(jiǎn)單,只需在Form中添加一個(gè)字符串救能實(shí)現(xiàn)。而音樂列表的實(shí)現(xiàn)是我通過在Form中添加若干個(gè)Customltem來(lái)實(shí)現(xiàn)的。模擬器顯示出的界面左邊是一排固定大小的圖片,每個(gè)圖片后面有兩行文字,上面一行文字用來(lái)展示音樂的標(biāo)題,下面一行文字用來(lái)展示音樂的簡(jiǎn)介。其中Customltem要實(shí)現(xiàn)兩個(gè)功能:一個(gè)功能是獲取要展示的音樂信息并按照上述布局繪制圖形界面。而另一個(gè)功能是在程序啟動(dòng)時(shí)讀取了存儲(chǔ)在R

51、MS中的音樂信息,然后實(shí)例化相應(yīng)數(shù)量的Customltem添加到Form中,從而生成所需的音樂列表界面。</p><p>  3.5 音樂播放的實(shí)現(xiàn)</p><p>  實(shí)現(xiàn)音樂列表視圖之后,接著要實(shí)現(xiàn)的就是在音樂播放時(shí)的音樂視圖MusicPlayerUI,MusicPlayerUI是使用低級(jí)UI組件實(shí)現(xiàn)的。它需要實(shí)現(xiàn)的主要功能為繪制音樂圖片、顯示音樂信息以及在線播放音樂和關(guān)閉播放器。描繪

52、音樂的圖片和標(biāo)題是在音樂播放器界面中的Canvas可繪制區(qū)域里繪制的,繪制出的圖片差不多占滿整個(gè)手機(jī)屏幕。而在播放界面中顯示音樂信息的方式我選擇了以Ticker的形式在繪制圖片的上方位置展示。最后的在線播放歌曲程序需要在選中某一首歌曲之后運(yùn)行,運(yùn)行后連接服務(wù)器端網(wǎng)絡(luò)進(jìn)行在線播放,當(dāng)返回音樂列表會(huì)退出程序的時(shí)候關(guān)閉播放器。</p><p>  3.5 網(wǎng)絡(luò)通信的實(shí)現(xiàn)</p><p>  設(shè)計(jì)

53、中的網(wǎng)絡(luò)通信采用的是所有Java手機(jī)都支持的HTTP(Hypertext Transfer Protocol)協(xié)議,它是近年來(lái)Internet上最流行的應(yīng)用級(jí)數(shù)據(jù)協(xié)議[10]。程序類在運(yùn)行之后,當(dāng)客戶端與服務(wù)器成功進(jìn)行連接后,HTTPManager通過設(shè)置靜態(tài)請(qǐng)求參數(shù)ResponseObject向服務(wù)器請(qǐng)求下載信息。如果從服務(wù)器端下載的數(shù)據(jù)是文字信息(ResponseObject的值為XML),那就需要調(diào)用XML解析器XMLManage

54、r來(lái)組織信息;如果從服務(wù)器端下載的是圖片信息(ResponseObject的值為該圖片的ID),那就會(huì)調(diào)用文件儲(chǔ)存器FileManager來(lái)管理圖片的存儲(chǔ)。</p><p>  3.6 XML解析的實(shí)現(xiàn)</p><p>  XML(Extensible Markup Language)中文翻譯為可擴(kuò)展標(biāo)記語(yǔ)言,它是用來(lái)存儲(chǔ)數(shù)據(jù)的。XML是一種簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語(yǔ)言,它的功能是用一些簡(jiǎn)單的標(biāo)記來(lái)

55、描述數(shù)據(jù)。XML可以將數(shù)據(jù)和格式從網(wǎng)頁(yè)上分離出來(lái),并在存儲(chǔ)數(shù)據(jù)的同時(shí)共享數(shù)據(jù)。它擁有極其出色的可擴(kuò)展性,這使得它能夠在任何應(yīng)用程序中讀寫程序,因此XML也是唯一的數(shù)據(jù)交換公用語(yǔ)言。XML功能強(qiáng)大,但是它和Java語(yǔ)言一樣,易于理解和掌握。</p><p>  本設(shè)計(jì)中在文字信息解析部分時(shí)會(huì)利用XML進(jìn)行實(shí)現(xiàn),實(shí)現(xiàn)解析功能的是開源的解析器KXML2。KXML2是一種只占很小存儲(chǔ)內(nèi)存的XML語(yǔ)法分析程序,在程序中的具

56、體運(yùn)行流程為:當(dāng)客戶端程序下載了來(lái)自服務(wù)器的文字信息(XML數(shù)據(jù),字節(jié)數(shù)組的形式)后,通過MusicListEntity類將數(shù)據(jù)轉(zhuǎn)換成輸入流(InputStreamReader)的形式,并且送給XMLManager。解析器會(huì)將解析出來(lái)的數(shù)據(jù)以Music對(duì)象為單位進(jìn)行轉(zhuǎn)換成動(dòng)態(tài)數(shù)組的對(duì)象,最后將數(shù)據(jù)返回給MusicListEntity,用來(lái)提取圖片ID和存儲(chǔ)。</p><p>  3.7 文件管理的實(shí)現(xiàn)</p

57、><p>  在設(shè)計(jì)中除了文字信息使用XML解析后保持在RMS以外,對(duì)圖片存儲(chǔ)是通過一個(gè)文件管理的類來(lái)實(shí)現(xiàn)管理的,這個(gè)類命名為FileManager。在存入時(shí),F(xiàn)ileManager會(huì)將MusicListEntity類傳入的圖片ID和內(nèi)容,以文件形式存儲(chǔ)在指定的目錄UIController.ImageStorePath下。除了存儲(chǔ)功能之外,在設(shè)計(jì)時(shí)我又考慮到可能需要?jiǎng)h除圖片的功能,于是在FileManager中我利用

58、方法clear()實(shí)現(xiàn)刪除所有的圖片文件。</p><p>  3.8 各個(gè)功能模塊的控制</p><p>  在本設(shè)計(jì)中使用MVC模式設(shè)計(jì)程序時(shí),是通過控制器來(lái)實(shí)現(xiàn)視圖類和模型類之間的映射的。這種功能如果出現(xiàn)在J2EE語(yǔ)言編寫的程序中那就會(huì)被嚴(yán)格執(zhí)行,可是在J2ME的程序中,那就需要根據(jù)實(shí)際得應(yīng)用情況來(lái)對(duì)模型類的控制進(jìn)行設(shè)計(jì),以減少多余的代碼。</p><p> 

59、 于是我利用單一控制器實(shí)現(xiàn)視圖之間的切換和程序的網(wǎng)絡(luò)通信的控制功能。在實(shí)際運(yùn)行中,控制器控制兩個(gè)視圖之間的切換與展示,還控制程序先清空本地音樂數(shù)據(jù)后再進(jìn)行更新;并且在更新時(shí)會(huì)展示進(jìn)度條,在更新完成后會(huì)提示更新完成。</p><p>  我在設(shè)計(jì)模型類的過程中,曾想到如果一些模型類只是用來(lái)實(shí)現(xiàn)一點(diǎn)簡(jiǎn)單的功能的話,那么是否可以直接利用視圖模型類來(lái)控制這些簡(jiǎn)單模型類的功能的實(shí)現(xiàn)。隨后在設(shè)計(jì)MusicListEntity

60、的過程中我嘗試了一下這個(gè)想法。于是這個(gè)MusicListEntity類又新增了一些功能,原來(lái)它本身只是服務(wù)于視圖類的一個(gè)模型類,不過現(xiàn)在它也可以直接調(diào)用網(wǎng)絡(luò)通信、XML解析器等功能模塊一起為那些音樂列表視圖提供服務(wù)。</p><p>  第四章 程序流程和具體分析</p><p><b>  4.1 程序分析</b></p><p>  整個(gè)

61、MusicOline程序使用MVC模式設(shè)計(jì),因此由一個(gè)控制器類和若干視圖類以及若干模型類組成。其中控制類為UICotroller;模型類有FileManager、HTTPManager、Music、MusicListEntity、RMSManager、Util、XMLManager;而視圖類包括MusicItem、MusicListUI、MusicPlayerUI。</p><p>  在電腦中調(diào)試的過程中,主要

62、程序類的使用和流程大致如下:</p><p>  首先是控制器類UIController,設(shè)計(jì)中使用的是一個(gè)控制器,主要控制視圖之間的切換和顯示以及視圖與模型類間的映射關(guān)系。</p><p>  程序開始運(yùn)行之后,會(huì)在電腦上彈出模擬器的窗口,模擬器屏幕上首先會(huì)展示出歡迎的語(yǔ)句。然后點(diǎn)擊update,程序會(huì)調(diào)用MusicManagerEntity中的update方法。該方法會(huì)繼續(xù)調(diào)用HTTP

63、Manager類與服務(wù)器之間進(jìn)行通信。在通信的過程中,程序會(huì)下載XML中的文件,文件中記錄了音樂的詳細(xì)信息。而這個(gè)過程是由XMLManager來(lái)對(duì)XML進(jìn)行的解析。</p><p>  完成解析工作之后,程序會(huì)將解析到的信息文件存入RMS中,這個(gè)存入的過程是通過調(diào)用RMSManager來(lái)實(shí)現(xiàn)的。然后根據(jù)獲得的圖片ID下載相應(yīng)的圖片。下載時(shí)調(diào)用HTTPManager,將圖片以文件的形式存儲(chǔ)。整個(gè)存儲(chǔ)過程由FileM

64、anager來(lái)管理實(shí)現(xiàn)。</p><p>  完成以上的步驟后,會(huì)顯示界面MusicListUI,在選擇一首歌曲播放之后,界面會(huì)進(jìn)入MusicPlayerUI。在這個(gè)界面中會(huì)播放音樂,并且在旁展示音樂的詳細(xì)信息,這些信息都來(lái)自于RMS中,由RMSManager中的ReadMusic方法讀出。</p><p>  4.2 MusicItem</p><p>  在實(shí)現(xiàn)

65、音樂列表的編寫過程中,我想到可以在Form中添加若干個(gè)Customltem控件來(lái)實(shí)現(xiàn)。為此構(gòu)思了MusicItem類。MusicItem類的實(shí)現(xiàn)需要引用UIController類、Music類和Util類。MusicItem類是繼承于CustomItem類的子類。Item的寬度itemWidth、高度itemHeight等參數(shù)都是用private定義的,只能在它的類內(nèi)部訪問該字段。</p><p>  在實(shí)現(xiàn)獲取

66、音樂對(duì)象的信息時(shí),用的是setMusic()方法,具體程序如下:</p><p>  public void setMusic(Music music) {</p><p>  this.music = music;</p><p>  musicTitle = music.getTitle();</p><p>  musicSummary

67、 = music.getSummary();</p><p>  setImage(music.getImageID());</p><p><b>  }</b></p><p>  如上所示,方法主要通過賦值和調(diào)用music類中的方法,將Music中的數(shù)據(jù)賦予MusicItem的變量中。從而得到音樂信息。</p><p&

68、gt;  而在實(shí)現(xiàn)獲取當(dāng)前音樂對(duì)象圖片并進(jìn)行縮放時(shí),使用的是方法setImage()。方法調(diào)用了Util類中的scaleImage()方法對(duì)圖片的長(zhǎng)度進(jìn)行了處理。并且在方法運(yùn)行的過程中還調(diào)用了UIController類中的參數(shù)進(jìn)行運(yùn)算來(lái)獲取圖片鏈接信息。而在后面的設(shè)置當(dāng)前選中的音樂對(duì)象和繪制當(dāng)前Item中,分別使用了traverse()方法和paint()方法。方法traverse()很簡(jiǎn)單,因?yàn)橹饕δ苁菍?shí)現(xiàn)設(shè)置功能,所以程序的主要內(nèi)

69、容是對(duì)數(shù)據(jù)的設(shè)定。具體如下:</p><p>  protected boolean traverse(int dir,</p><p>  int viewportWidth,</p><p>  int viewportHeight,</p><p>  int[] visRect_inout) {</p><p>

70、;  UIController.setCurrentMusic(music);</p><p>  return false;</p><p><b>  }</b></p><p>  而方法paint()實(shí)現(xiàn)的是繪圖功能,程序的主要內(nèi)容就是調(diào)用擴(kuò)展包中的繪圖類的方法來(lái)進(jìn)行繪圖。因此整個(gè)方法也比較簡(jiǎn)單,都是一些調(diào)用語(yǔ)句。</p>

71、<p>  4.3 MusicListUI</p><p>  MusicListUI類也是為了實(shí)現(xiàn)音樂列表的實(shí)現(xiàn),其主要功能是展示載入音樂信息后的音樂列表。在MusicListUI類中,也調(diào)用了其他的程序類,其中包括UIController類、Music類和MusicListEntity類。而擴(kuò)展包中的類主要有Command、CommandListener、Displayable和Form,它們都是

72、屬于lcdui繪圖包中的類。主程序MusicListUI是繼承CommandListener的子類。</p><p>  在程序的一開始,先用MusicListUI()調(diào)用父類構(gòu)造器進(jìn)行初始化。然后是對(duì)列表數(shù)據(jù)的初始化,使用的是initView()方法,initView()方法利用UIController類和Music類來(lái)完成程序的流程。運(yùn)行后如果列表中沒有音樂數(shù)據(jù),那么就會(huì)先顯示歡迎信息。具體程序如下:<

73、/p><p>  public void initView() {</p><p>  loadMusicList();</p><p>  this.deleteAll();</p><p>  if(musicList == null || musicList.size() == 0) {</p><p>  this

74、.deleteAll();</p><p>  this.append(WelcomeContent);</p><p>  this.removeCommand(UIController.okCommand);</p><p>  this.removeCommand(UIController.clearCommand);</p><p>

75、<b>  } else {</b></p><p>  this.addCommand(UIController.okCommand);</p><p>  this.addCommand(UIController.clearCommand);</p><p>  int size = musicList.size();</p>

76、<p>  int width = this.getWidth();</p><p>  int height = this.getHeight()/4;</p><p>  UIController.setScreenWidth(width);</p><p>  for(int i = 0; i < size; i++){</p>

77、<p>  MusicItem item = new MusicItem(width, height);</p><p>  Music music = (Music)musicList.elementAt(i);</p><p>  item.setMusic(music);</p><p>  this.append(item);</p>

78、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  而在載入音樂數(shù)據(jù)列表時(shí)使用了兩個(gè)方法,分別是loadMusicList()和commandAction(),它們分別調(diào)用的是MusicListEntity類

79、和UIController類。loadMusicList()實(shí)現(xiàn)的功能是加載音樂,說(shuō)簡(jiǎn)單點(diǎn)就是為音樂列表賦值,因此程序主內(nèi)容的實(shí)現(xiàn)很簡(jiǎn)單,只需要一句調(diào)用賦值就能實(shí)現(xiàn)。而commandAction()程序的主體主要使用if和else if循環(huán)實(shí)現(xiàn),通過調(diào)用UIController中的方法間接實(shí)現(xiàn)功能。</p><p>  4.4 MusicPlayerUI</p><p>  MusicPl

80、ayerUI類是使用低級(jí)UI組件實(shí)現(xiàn)的,它的主要功能是在播放音樂時(shí)顯示播放器的界面。它調(diào)用的同程序類為UIController類和Music類。它不是繼承子類。</p><p>  在主函數(shù)MusicPlayerUI中,因?yàn)橐獙?shí)現(xiàn)音樂信息的展示,并且展示方法選擇了使用ticker滾動(dòng)的方式,所以在一開始便使用new運(yùn)算符構(gòu)造一個(gè)新的Ticker。而且調(diào)用了UIController中的getScreenWidth(

81、)方法來(lái)獲得屏幕寬度。</p><p>  接下來(lái)便要初始化播放視圖,設(shè)計(jì)中利用了initView()方法來(lái)實(shí)現(xiàn)這個(gè)功能。在方法中先是對(duì)視圖的數(shù)值進(jìn)行設(shè)置,最后調(diào)用后面的playMusic()方法直接播放音樂。程序具體如下:</p><p>  public void initView(Music music) {</p><p>  currentMusic =

82、music;</p><p>  image = currentMusic.getImage();</p><p>  startImageX = (width - image.getWidth())/2;</p><p>  title = currentMusic.getTitle();</p><p>  startTitleX = (

83、width - titleFont.stringWidth(title))/2;</p><p>  String summary = currentMusic.getSummary();</p><p>  ticker.setString(summary);</p><p>  this.setTicker(ticker);</p><p&g

84、t;  playMusic();</p><p><b>  }</b></p><p>  而繪制音樂播放視圖時(shí)又重新定義了一個(gè)paint()方法來(lái)實(shí)現(xiàn),方法中也是通過調(diào)用一系列的繪圖類來(lái)完成程序。最后使用了commandAction()方法,調(diào)用了UIController進(jìn)行條件設(shè)定,來(lái)實(shí)現(xiàn)關(guān)閉播放器的功能。</p><p>  4.5 H

85、TTPManager</p><p>  為了實(shí)現(xiàn)采用HTTP協(xié)議的網(wǎng)絡(luò)通信而編寫的HTTPManager,與其它程序類之間相對(duì)獨(dú)立,因此除了調(diào)用一些JavaIO包中的類等以外沒有調(diào)用同程序的其他類。HTTPManager是繼承Runnable類的子類,整個(gè)類程序由一個(gè)run()方法包括。整個(gè)程序流程大致為:請(qǐng)求對(duì)象,申請(qǐng)Servlet服務(wù)的URL,設(shè)置最大下載數(shù)據(jù)量,設(shè)置當(dāng)前申請(qǐng)對(duì)象,最后連接服務(wù)器,下載數(shù)據(jù)。

86、</p><p>  4.6 XMLmanager</p><p>  XMlManager類與HTTPManager類相似,都是比較獨(dú)立的程序類,在程序中沒有引用其它的同程序類。在程序開始的時(shí)候先是構(gòu)造一個(gè)解析器,用new運(yùn)算符完成。接著載入XML文檔數(shù)據(jù)并獲取當(dāng)前解析器事件,在沒有到達(dá)文檔結(jié)束事件前,通過循環(huán)處理數(shù)據(jù)。獲取下一個(gè)事件后開始處理起始標(biāo)識(shí)符,其它的當(dāng)解析器位于元素內(nèi)容時(shí),讀

87、取標(biāo)識(shí)內(nèi)容;當(dāng)解析器位于標(biāo)識(shí)結(jié)束時(shí),顯示讀取的標(biāo)識(shí)內(nèi)容。</p><p>  4.7 FileManager</p><p>  FileManager類是模型類中的一個(gè)類,主要功能是管理存儲(chǔ)文件。其存儲(chǔ)圖片的過程是通過方法storeImage()來(lái)實(shí)現(xiàn)的。而刪除目錄下的所有圖片是通過方法clear()來(lái)實(shí)現(xiàn)的。兩個(gè)方法在運(yùn)行的過程中都調(diào)用了UIController類。</p>

88、<p>  4.8 UIController</p><p>  UIController作為本設(shè)計(jì)的唯一控制器,主要功能自然也是控制各個(gè)視圖類和模型類。在程序中,它的主要控制功能和流程大致如下:定義各種菜單命令,定義各種視圖類,展示音樂列表視圖,展示音樂播放視圖,更新本地音樂信息并彈出進(jìn)度條,提示更新完成,清空本地音樂數(shù)據(jù)。在定義各種菜單命令時(shí),全部都是用public定義的,為了方便被其他類調(diào)用。

89、展示音樂列表視圖是通過方法showMusicListUI()實(shí)現(xiàn)的,展示音樂播放視圖是通過方法showMusicPlayerUI()實(shí)現(xiàn)的,而更新本地音樂信息并彈出進(jìn)度條自然是使用重新定義的update()方法實(shí)現(xiàn)的,updateFinish()實(shí)現(xiàn)了更新完成時(shí)的實(shí)現(xiàn),最后用clear()方法實(shí)現(xiàn)清空本地音樂數(shù)據(jù)的操作。由于是主控制程序,調(diào)用的同程序類相對(duì)也比較多,調(diào)用的程序類有Music類、MusicListEntity類、RMSMa

90、nager類、MusicListUI類以及MusicPlayerUI類,而且還調(diào)用了構(gòu)造器startMIDlet。</p><p>  4.9 MusicListEntity</p><p>  MusicListEntity類屬于模型類,它的本身是服務(wù)于音樂列表視圖的一個(gè)模型類。MusicListEntity類只調(diào)用了UIController類,但是在程序運(yùn)行時(shí),MusicListEnt

91、ity類可以調(diào)用網(wǎng)絡(luò)通信。XML解析等功能 模塊來(lái)共同為音樂列表視圖提供服務(wù)。程序的主要流程大致為:載入音樂列表數(shù)據(jù);啟動(dòng)音樂數(shù)據(jù)更新;解析下載的XML數(shù)據(jù);下載圖片;清空所有的音樂數(shù)據(jù)。當(dāng)然實(shí)現(xiàn)這些的方法都被MusicListEntity類包括,實(shí)現(xiàn)載入音樂列表數(shù)據(jù)的是方法loadMusicList(),實(shí)現(xiàn)啟動(dòng)音樂數(shù)據(jù)更新的是新定義的update()方法:</p><p>  public void upda

92、te() {</p><p>  Thread t = new Thread(HTTPManager.getInstance());</p><p>  HTTPManager.getInstance().setResponseType("XML");</p><p><b>  t.run();</b></p>

93、<p><b>  }</b></p><p>  如上所示,可以看出方法很明顯的直接調(diào)用了HTTPManager中的run()方法來(lái)實(shí)現(xiàn)連接網(wǎng)絡(luò)更新數(shù)據(jù)的功能。而方法parse()實(shí)現(xiàn)了解析下載的XML數(shù)據(jù),downloadImage實(shí)現(xiàn)了下載圖片的功能等,也都是通過直接調(diào)用來(lái)實(shí)現(xiàn)具體功能的。最后清空所有的音樂數(shù)據(jù)時(shí)使用了方法clear()來(lái)實(shí)現(xiàn)。</p>&l

94、t;p>  第五章 測(cè)試與改進(jìn)</p><p><b>  5.1測(cè)試與打包</b></p><p>  測(cè)試過程相對(duì)比較簡(jiǎn)單,在Eclipse中選中要運(yùn)行的文件,選擇菜單Run,就會(huì)啟動(dòng)默認(rèn)SDK的模擬器。此時(shí)在控制臺(tái)會(huì)首先輸出一些模擬器啟動(dòng)的信息,然后顯示結(jié)果。</p><p>  在運(yùn)行剛開始的時(shí)候,模擬器的手機(jī)屏幕上會(huì)顯示歡迎語(yǔ)

95、句,如圖5.1所示。將光標(biāo)點(diǎn)擊確定按鈕選中update,模擬器就會(huì)進(jìn)行更新,如果更新成功,模擬器上就會(huì)先顯示更新成功的語(yǔ)句(如圖5.2),然后馬上跳轉(zhuǎn)界面,展示出更新的音樂列表(如圖5.3)。音樂列表的控制主要有上下方向鍵,確定鍵和退出鍵。使用確定鍵選中其中一首歌曲,界面就會(huì)再度跳轉(zhuǎn)到MusicPlayerUI的界面。這個(gè)界面就是所說(shuō)的音樂播放時(shí)的界面,在這個(gè)界面中模擬器會(huì)顯示歌曲的相應(yīng)圖片,如果沒有就顯示默認(rèn)圖片。除此之外,界面還會(huì)顯

96、示音樂的詳細(xì)信息,并以Ticker的方式滾動(dòng)展示,具體如圖5.4所示。</p><p>  當(dāng)然也可以用其他的模擬器測(cè)試結(jié)果,更換模擬器只要先下好相應(yīng)的SDK,導(dǎo)入Eclipse。然后在運(yùn)行RUN旁的小菜單中選擇Run Configurations進(jìn)入其界面,再選擇Emulation,在當(dāng)前界面選擇自己要替換的SDK,最后別忘了點(diǎn)擊下Apply,再點(diǎn)擊Run就可以了。不過更換SDK可能會(huì)造成結(jié)果錯(cuò)誤,所以要小心選

97、擇SDK。</p><p>  圖5.1 手機(jī)初始界面 圖5.2 更新成功界面</p><p>  圖 5.3 音樂列表界面 圖 5.4 音樂播放界面</p><p>  開發(fā)的J2ME程序最后是要在移動(dòng)設(shè)備上運(yùn)行的,所以我們需要打包開發(fā)完畢的工程項(xiàng)目(也就是將程序做成Midlet Suite)。如果在Ecli

98、pse中已經(jīng)安裝過EclipseME插件,那么打包的方法就變得非常簡(jiǎn)單。只要在Eclipse界面中右擊工程項(xiàng)目,選擇J2ME—Create Package,系統(tǒng)就會(huì)自行完成打包。完成打包后,你可以在項(xiàng)目的deployed目錄下找到JAR包和JAD文件兩個(gè)生成文件。把它們同時(shí)安裝到相應(yīng)的手機(jī)上,就可以在手機(jī)上運(yùn)行項(xiàng)目了。</p><p><b>  5.2 程序的改進(jìn)</b></p>

99、;<p>  在完成軟件程序的設(shè)計(jì)之后,發(fā)現(xiàn)其實(shí)還有很多地方可以改進(jìn)。大部分的地方還能進(jìn)行功能擴(kuò)展。</p><p>  在音樂列表方面,其實(shí)還能將下載的音樂進(jìn)行分類,比如搖滾、輕音樂等。這需要在XML文件中額外增加一個(gè)類型標(biāo)簽用來(lái)說(shuō)明音樂的分類。而在界面實(shí)現(xiàn)上,可以利用一個(gè)列表將各種分類羅列出來(lái),當(dāng)點(diǎn)擊某一個(gè)分類時(shí),就會(huì)進(jìn)入分類界面。</p><p>  在控制方面,可以增

100、加一個(gè)讓用戶設(shè)置的界面,這個(gè)新增功能能讓用戶自己進(jìn)行字體、顏色、背景圖片等參數(shù)的調(diào)節(jié)。設(shè)置完成后程序?qū)?huì)把用戶的參數(shù)設(shè)置保存下來(lái),當(dāng)下一次啟動(dòng)程序的時(shí)侯程序就會(huì)自動(dòng)載入之前用戶的設(shè)置。</p><p>  在設(shè)計(jì)界面外觀上,可以為每個(gè)視圖設(shè)置一些精致華麗的背景顏色及背景圖片,而字體的顏色也可以修改的絢麗點(diǎn),文字的動(dòng)態(tài)效果可以改用計(jì)時(shí)器Timer進(jìn)行實(shí)現(xiàn)等。如果這些還是不能滿足用戶要求,那還可以考慮利用一些當(dāng)前開源

101、的UI框架,例如LWUIT,J4ME等。</p><p>  在讀取音樂數(shù)據(jù)方面,本設(shè)計(jì)的程序是一次性將所有的音樂數(shù)據(jù)都讀入了內(nèi)存。但是在實(shí)際應(yīng)用當(dāng)中,手機(jī)的內(nèi)存資源通常十分有限,如果音樂數(shù)據(jù)的數(shù)量太多的話,很可能會(huì)造成手機(jī)內(nèi)存不足。為了解決這個(gè)問題,在讀取數(shù)據(jù)方面可以進(jìn)一步設(shè)置一個(gè)讀入內(nèi)存的音樂數(shù)據(jù)上限。這樣每次讀取音樂數(shù)據(jù)時(shí)只會(huì)讀取幾首歌曲,而且只有當(dāng)使用光標(biāo)下移的時(shí)候,程序才會(huì)刪除原來(lái)的音樂列表數(shù)據(jù)并下載新

102、的數(shù)據(jù)。當(dāng)然,如果日后的手機(jī)內(nèi)存發(fā)展的非常大,那又另當(dāng)別論了。</p><p><b>  總結(jié)</b></p><p><b>  總結(jié)與感想</b></p><p>  本設(shè)計(jì)實(shí)現(xiàn)了手機(jī)上以J2ME為平臺(tái)的在線音樂軟件的開發(fā),如今手機(jī)軟件發(fā)展迅速,手機(jī)軟件的種類和數(shù)量越來(lái)越多,鋪天蓋地般遍及各個(gè)手機(jī)平臺(tái)。本設(shè)計(jì)選擇了比

103、較普遍的手機(jī)音樂軟件。</p><p>  這款手機(jī)軟件作為我的畢業(yè)設(shè)計(jì),是本人目前做過的最有意義的程序,這期間對(duì)J2ME的學(xué)習(xí),使我又嘗到了學(xué)習(xí)的快樂。在數(shù)據(jù)庫(kù)、各種應(yīng)用軟件和游戲中,我覺得對(duì)軟件的設(shè)計(jì)有極大的熱情。因?yàn)樽约罕旧淼氖謾C(jī)中也有大量五花八門的手機(jī)軟件,各種軟件功能強(qiáng)大且界面美觀,不由讓人萌生自己開發(fā)的沖動(dòng);而且開發(fā)軟件的自由度大,目標(biāo)只是為了方便用戶使用而盡可能的編寫功能程序,當(dāng)經(jīng)過無(wú)數(shù)次的調(diào)試、修

104、改后,最終看到了成品,也算是很有成就感的一件事。雖然和自己手機(jī)上的成品軟件還是有一定的差距,有點(diǎn)小遺憾,但本設(shè)計(jì)卻是盡了自身的水平開發(fā)的全力之作,還是讓人感到欣慰。</p><p>  學(xué)習(xí)J2ME比想象中困難多了,在設(shè)計(jì)初期,為了構(gòu)思并解決視圖的實(shí)現(xiàn)和控制,真是花費(fèi)了不少時(shí)間。在設(shè)計(jì)模型的時(shí)候,曾想過用一個(gè)程序就一步到位,但后來(lái)發(fā)現(xiàn)這樣在修改程序和邏輯整理上會(huì)產(chǎn)生相當(dāng)大的難度。在閱讀了部分書籍之后,便決定改用M

105、VC模式來(lái)設(shè)計(jì)程序。還有模型類設(shè)計(jì)等等,都需要大量的時(shí)間和精力去編排和調(diào)試。在這個(gè)過程中,前人的開發(fā)經(jīng)驗(yàn)所著的書籍和文章對(duì)我的幫助頗大,讓我得以在學(xué)習(xí)J2ME的崎嶇道路上匍匐前行。</p><p><b>  參考文獻(xiàn)</b></p><p>  古長(zhǎng)龍. 手機(jī)軟件開發(fā)中的程序加載方法研究及應(yīng)用. 中文期刊數(shù)據(jù)庫(kù). 2009.05.20.</p><

106、;p>  陳粵. 基于J2ME平臺(tái)的手機(jī)應(yīng)用程序研究與開發(fā). 中文期刊數(shù)據(jù)庫(kù). 2003.04.18.</p><p>  吳小娟. 基于J2ME的移動(dòng)商務(wù)系統(tǒng)的安全設(shè)計(jì)與實(shí)現(xiàn). 中文期刊數(shù)據(jù)庫(kù). 2009.04.</p><p>  辛立偉,張帆,等. Java從初學(xué)到精通. 電子工業(yè)出版社. 2010.06 31.</p><p>  黃正環(huán). Jav

107、a ME 手機(jī)應(yīng)用開發(fā)大全. 科學(xué)出版社. 2010.06. 395~415</p><p>  廩生利,劉華軍編著. 精通J2ME無(wú)線編程[M]. 中國(guó)鐵道出版社. 2004.11.</p><p>  何峰賦. 淺談J2ME技術(shù)在移動(dòng)信息終端上的應(yīng)用. 中國(guó)科技信息. 2004. 120~121</p><p>  周緒宏,梁阿磊,威正偉. 基于嵌入式Linux

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論