收藏 分享(赏)

Java手机程序设计入门(三):Java手机程序设计入门(三)_作者未知.pdf

上传人:精品资料 文档编号:10829433 上传时间:2020-01-13 格式:PDF 页数:38 大小:882.23KB
下载 相关 举报
Java手机程序设计入门(三):Java手机程序设计入门(三)_作者未知.pdf_第1页
第1页 / 共38页
Java手机程序设计入门(三):Java手机程序设计入门(三)_作者未知.pdf_第2页
第2页 / 共38页
Java手机程序设计入门(三):Java手机程序设计入门(三)_作者未知.pdf_第3页
第3页 / 共38页
Java手机程序设计入门(三):Java手机程序设计入门(三)_作者未知.pdf_第4页
第4页 / 共38页
Java手机程序设计入门(三):Java手机程序设计入门(三)_作者未知.pdf_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、 3 撰寫您的第一個手機程式 有用是建立在無用之上。 前言 下載開發工具 MIDP 參考實作 MIDlet 開發流程 MIDP 參考實做對中文的支援 MIDP 模擬器的執行選項 MIDP 模擬器的執行環境 總結 JavaJava Java 手機程式設計入門 3 3-2 前 言 過去手機的最大致命傷,就是應用程式的不足,雖然目前出現了許多手機和 PDA 結合的產品,可是這些產品上的 PDA 在軟體上的擴充性仍然是死的。我們可以任意使用 C/C+或是 Java 撰寫可以在Palm OS、Windows CE、EPOC 等作業系統上執行的應用 程式,但是卻從未有過機會將我們寫好的程式下載到手機上執行

2、(即使有些手機的 PDA 也是使用 EPOC 作業系統,如 Ericsson R380) 。但是從新的世紀開始,這一切都要改觀了,陸陸續續有許多支援 Java 的手機即將推出,我們終於可以一圓在手機上面撰寫程式的美夢。 手機平台的多樣性與複雜性,和 PDA 比較起來可以說是有過之而無不及,這等於是在提醒大家 -又是 Java 派上用場的時候了。我們都知道在瀏覽器上執行的 Java 程式叫做 Applet,在 Palm OS 上執行的 Java 程式叫做 Spotlet,然而在手機上 執行的應用程式我們稱做 MIDlet ,本章將開始您的手機程式開發之旅。 下載開發工具 目前市面上有許多支援 M

3、IDlet 的整合開發 工具。但是筆者還是堅持,在使用這些方便的開發工具之前,要先學著使用最基本的工具來撰寫程式,這樣才能了解程式從開發到運作的細部過程。因此在本章中我們只討論如何使用 Sun 所提供的基本工具 - MIDP 參考實作來開發程式。 第三章 撰寫您的第一個手機程式 3-3 首先,請開啟您的瀏覽器,並連線到 http:/ /products/midp/ 在網頁之中尋找一個叫做 Reference Implementation 的地方,如圖 1 所示: 圖1 接著,請按下名為 donload 的超連結,這個 超連結會連到 MIDP參考實作的下載網頁,但是在連線之前,需要您先輸入使用者

4、 ID 和密碼。如圖 2 所示: JavaJava Java 手機程式設計入門 3 3-4 圖2 如果您已經是會員,請直接輸入您的使用者 ID 和密碼即可進入版權網頁。如果您並非會員,請先按下上面的 Register 按鈕註冊成為會員,以取得使用者 ID 和密碼(完全免費) 。版權網頁如圖 3。 圖3 第三章 撰寫您的第一個手機程式 3-5 請將畫面捲動到網頁最後的部分。先點選 Accept,然後再按下Continue 按鈕以進入 下載網頁,如圖 4。 圖4 您 可 以 先 選 擇 離 您 最 近 的 下 載 點 , 然 後 再 按 下 Mobile Information Device Pr

5、ofile 打 開下載目錄,如圖 5。 圖5 JavaJava Java 手機程式設計入門 3 3-6 最 後, 請點 選畫 面上 名為 j2me_midp-1_0-fcs-bin-b10-win-15_sep _2000.zip 的檔案即可下載 Sun 官方所提供的 MIDP 參考實作。 MIDP 參考實作 解開 MIDP 參考實作之後,您會看到許多檔案及目錄,底下我們分別說明這些目錄的功用。 此後我們皆假設您將 MIDP 參考實作解壓縮到 d:底下,所以您的 MIDP 參考實作應該放置在 d: midp-fcs 目錄之中。 Bin Build Classes Docs Src copyri

6、ght index.html License.pdf Mobile Information Device 模擬器 midp-fcs 用 Java 撰寫的類別函式庫。範例程式的類別檔編譯用的 makfile 說明文件 類別函式庫與內附範例之原始碼 版權宣告 說明文件首頁 授權說明 share solaris win32 build tools 目錄下有個名為 sanityck 的執行檔編譯Windows 版 開發工具的 Makefile tools 子目錄下有預先審核工具的執行檔編譯 Solaris 版開發工具的 Makefile。 tools 子目錄下有預先審核工具的執行檔第三章 撰寫您的第一

7、個手機程式 3-7 build-env.htmlBuildInstructions.htmlbuild-proc.htmlDirectoryStructure.htmlMIDletInstructions.htmlmidp-env.htmldemo_docdocs 說明如何設定編譯 MIDP 標準 說明編譯 MIDP 標準實作環境之需求 MIDP 標準實作目錄結構說明 編譯 MIDlet 的步驟說明 編譯 MIDlet 的開發環境說明 說明如何編譯 MIDP 標準實作環境之步實作環境之說明文件 examplesharesolariswin32src 內附範例原始碼 與平台無關的類別函式庫原始碼

8、 與 Solaris 平台相關的類別函式庫原始碼與 win32 平台相關的類別函式庫原始碼Sun Microsystems 的網站上所提供的 MIDP 參考實作只有Windows 版本與 Solaris 版本。喜歡 Linux 的朋友可能就會失望了。不過已經有熱心的朋友已經將它移植到 Linux 上,您可以到http:/ 找到 J2ME-CLDC-MIDP 在Linux 上的版本。 為了今後的方便起見,請先將 bui ldwin32tools 目錄底下的preverify.exe 拷貝到 bin 目錄下。 MIDP 參考實作裡頭附上了許多範例應用程式,都已經被編譯成類別檔,它們都被放置在 cl

9、assesexample 目錄底下,如果您對它們有興趣,可以試著執行他們。要執行這些範例的方法如下: JavaJava Java 手機程式設計入門 3 3-8 1. 請先將切換到 srcexample 目錄 底下。 2. 執行 指令 d:midp-fcsbinmidp -classpath d:midp-fcsclassesexample;d:midp-fcsclasses -descriptor run.jad 因為排版的關係,所以上述指令必須切割成數行。實際上的操作中,所有的指令都應該處於同一行,而且中間有空格。這一點底下將不再重複說明。 3. 執行畫面 如下 【啟動畫面】 單 色 彩 色

10、 第三章 撰寫您的第一個手機程式 3-9 【應用程式選擇畫面】 單 色 彩 色 【Sokoban 應用程式】 單 色 彩 色 【Tickets 應用程式】 單 色 彩 色 JavaJava Java 手機程式設計入門 3 3-10【Colors 應用程式】 單 色 彩 色 【Stock 應用程式】 單 色 彩 色 【Tiles 應用程式】 單 色 彩 色 第三章 撰寫您的第一個手機程式 3-11【ManyBalls 應用程式】 單 色 彩 色 【Sampler 應用程式】 單 色 彩 色 【Properties 應用程式】 單 色 彩 色 JavaJava Java 手機程式設計入門 3 3-

11、12【HttpTest 應用程式】 單 色 彩 色 【Pong 應用程式】 單 色 彩 色 【StarCuriser 應用程式】 單 色 彩 色 第三章 撰寫您的第一個手機程式 3-13【SpaceInvaders 應用程式】 單 色 彩 色 各位執行的時候,一定會發現您的模擬器上的畫面為單色,那麼要如何讓模擬器變成彩色畫面呢? 請在命令列之下輸入指令: set SCREEN_DEPTH=8 然後再重新執行 d:midp-fcsbinmidp -classpath d:midp-fcsclassesexample;d:midp-fcsclasses -descriptor run.jad 即可

12、看到彩色畫面。 如果您想要深入了解該範例,那麼您可以在 srcexample 目錄下找到其原始碼。 JavaJava Java 手機程式設計入門 3 3-14MIDlet 開發流程 MIDlet 的 開發流程與 Spotlet 類似,但 是多了一些步驟,如圖6 所示: 撰寫程式原始碼(.java)ByteCode(.class)編譯通過預先審核的ByteCode(.class)預先審核開始描述檔(.jad)+類別檔(.class)合成單一檔案撰寫描述檔JAR檔(.jar)+描述檔(.jad)利用模擬器除錯下載到實體機器執行利用模擬器除錯利用模擬器除錯圖6 從圖中大家大致上可以看出從撰寫 MID

13、let 到能夠在實體機器或是模擬器上執行需要七個步驟: 1. 撰寫程式原始碼。 2. 編譯。 3. 預先審核(Preverify) 。 第三章 撰寫您的第一個手機程式 3-154. 撰寫描述檔。 5. 合成 JAR 檔。 6. 測試與除錯。 7. 將程式下載到實體機器上執行。或使用模擬器來執行。 如果您只是要單純在模擬器上測試,可以省略為六個步驟(少了合成 JAR 檔的步驟) : 1. 撰寫程式原始碼 2. 編譯 3. 預先審核(Preverify) 。 4. 撰寫描述檔。 5. 測試與除錯。 6. 使用模擬器來執行 MIDlet。 各位比較會感到奇怪的地方在預先審核、合成 JAR 檔以及撰寫

14、描述檔這幾個步驟,底下我們分別說明:預先審核-寫過 Spotlet 的朋友可能覺得不奇怪,但是沒接觸過 J2ME 的人可能不瞭解需要這個步驟的原因。因為在各位撰寫 Java Applet 或是 Java Application 的時候從未做過這個步驟;要額外做合成 JAR 檔以及撰寫描述檔這幾個步驟是為了配合 Java Application Manager。其實,這幾個步驟很容易就可以完成,不像它的名稱看起來那麼地複雜。理由和用意我們都已經在前面章節談過,如果您忘記了,請再回頭參考前面章節。接下來我們就要一一解釋這幾個步驟的操作方式了。 JavaJava Java 手機程式設計入門 3 3-

15、16此後我們皆假設您將 MIDP 參考實作解壓縮到 d:底下,所以您的 MIDP 參考實作應該放置在 d: midp-fcs 目錄之中。 底下我們所編譯的類別名稱叫做 HelloMIDlet,而每一個步驟的-classpath 選項會指向 d:midp-fcsclasses;.這意味著如果d:midp-fcsclasses 目錄之下也有名為 HelloMIDlet 的類別,將造成之後令人感到疑惑的執行結果。很不巧地, d:midp-fcsclasses 目錄中真的有一個名為 HelloMIDlet.class,所以在執行下面步驟前,請先將這個檔案自 d:midp-fcsclasses 目錄中刪

16、除。 步驟 1 :撰寫程式原始碼 請先撰寫您的第一個 MIDlet,我們將它取名為 H elloMIDlet. java,程式 碼如下: HelloMIDlet.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMIDlet extends MIDlet implements CommandListener private Command exitCommand; private Display display; public HelloMIDlet() d

17、isplay = Display.getDisplay(this); exitCommand = new Command(“Exit“, Command.SCREEN, 2); public void startApp() 第三章 撰寫您的第一個手機程式 3-17TextBox t = new TextBox(“Hello MIDlet“, “Test string“, 256, 0); t.addCommand(exitCommand); t.setCommandListener(this); display.setCurrent(t); public void pauseApp() pub

18、lic void destroyApp(boolean unconditional) public void commandAction(Command c, Displayable s) if (c = exitCommand) destroyApp(false); notifyDestroyed(); 步驟 2 :編譯 請撰寫一個名為 midjavac.bat 的批次 檔,內容如下: midjavac.bat javac -g:none -classpath d:midp-fcsclasses;. -bootclasspath d:midp-fcsclasses %1 因為排版的關係,將批

19、次檔的內容用數行呈現,且兩行之間有空白字元作為間隔。實際上的批次檔中整個指令必須在同一行。 JavaJava Java 手機程式設計入門 3 3-18接著你可以在命令列輸入: midjavac HelloMIDlet.java 如果程式沒有錯誤,那麼在目錄下就會產生 HelloMIDlet. class。 撰寫過 Java 程式的朋友或多或少都使用過-c lasspath 這個編譯器選項,但是鮮少有人用過 -bootclasspath 選項,如果您直接輸入 javac 然後按下 Enter 來查看這個 選項的意義,其實說明也不太清楚,這裡我要補說說明: 在前面章節中曾說過: J2ME 所 支援

20、的核心類別函式庫是標準核心類別函式庫的子集合 ,充其量也只是名稱上為子集合而已,這些類別函式庫子集合的實作卻不一定與標準的類別函式庫相同 。當時我也曾提到,要編譯 J2ME 的程式之前都必須先安裝 J2SE 。如果我們只使用: javac -g:none -classpath d:midp-fcsclasses;. %1 來編譯我們的程式,那麼當程式中用到 MIDP 與 J2SE 之中同名的類別時,編譯器預設會使用 J2SE 的版本,雖然這些類別的名稱相同,可是實際上內部的實作卻完全不一樣。雖然使用了J2SE 版本的類別來編譯我們的程式可以通過編譯,可是卻完全第三章 撰寫您的第一個手機程式 3

21、-19不 能 在 支 援 MIDP 的 手 機上執行。所以我們必須利用-bootclasspath 選項來改變 Java 編譯器的預 設行為,讓編譯器去使用 midp 版的類別函式庫(放在 d:midp-fcsclasses 目錄下) 。 步驟 3 :預先審核 請撰寫一個名為 midver.bat 的批 次檔,內容如下: midver.bat d:midp-fcsbinpreverify -classpath d:midp-fcsclasses;. -d %1 %2 因為排版的關係,將批次檔的內容用數行呈現,且兩行之間有空白字元作為間隔。實際上的批次檔中整個指令必須在同一行。 接著你可以在命令

22、列輸入: midver HelloMIDlet HelloMIDlet 如果預先審核的過程沒有發生問題,就會在您的目錄下建立一個名為 HelloMIDlet 的子目錄,並將預先審核過的類別檔放到此目錄下。 JavaJava Java 手機程式設計入門 3 3-20批次檔內的第一個命令列參數(%1),是為了讓 preverify將預先審核的結果放到與命令列參數同名的目錄下。 preverify預設會將預先審核的結果放到 output 目錄下,但是為了不造成混淆,所以我們利用-d 選項改變預設放置預先審核結果的目錄。第二個參數則是您想要轉換的類別檔名稱。 我們的批次檔是將預先審核之後的類別檔放入與

23、類別同名的目錄之中。也就是說,如果您之前完成了預先審核,目錄下會出現一個名為 HelloMIDlet 的 子目錄,這會造成您下一次重新編譯時產生如下錯誤訊息: HelloMIDlet.java:4: HelloMIDlet clashes with package of same name public class HelloMIDlet extends MIDlet implements CommandListener 1 error 這是因為編譯器發現目錄下有一個名為 HelloMIDlet 的目錄,對 Java 來說,意思就是有一個名為 HelloMIDlet 的package。編譯器不

24、准您的類別名稱和 package 名稱相同,所以第三章 撰寫您的第一個手機程式 3-21導致編譯錯誤。要解決這個問題,您可以在每次編譯前先刪掉前一次預先審核所產生的目錄即可。 其實在此處您就可以開始測試您撰寫的 MIDlet。請換到經過預先審核之類別檔的所在目錄,然後輸入: d:midp-fcsbinmidp HelloMIDlet 如果執行無誤,那麼模擬器會出現,內容如下: 在此要特別注意的是,如果您不小心讓 MIDP 模擬器執行了沒有經過預先審核的類別檔,螢幕上會出現錯誤訊息如下: ALERT: Error verifying class HelloMIDlet JavaJava Java

25、 手機程式設計入門 3 3-22步驟 4 :撰寫描述檔 請撰寫一個名為 HelloMIDlet.jad 的描述檔,內容如下: HelloMIDlet.jad MIDlet-Name: HelloWorld MIDlet-Version: 1.0.0 MIDlet-Vendor: Sun Microsystems, Inc. MIDlet-Description: Sample Hello World MIDlet MIDlet-Info-URL: http:/ MIDlet-Jar-URL: http:/127.0.0.1/HelloMIDlet.jar MIDlet-Jar-Size: 10

26、20 MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC-1.0 MIDlet-1: HelloWorld, HelloMIDlet 步驟 5 :合成 JAR 檔 請撰寫一個名為 midjar.bat 的批 次檔,內容如下: midjar.bat jar -cfm %1 %2 -C .%3 . 因為排版的關係,將批次檔的內容用數行呈現,且兩行之間有空白字元作為間隔。實際上的批次檔中整個指令必須在同一行。 接著你可以在命令列輸入: midjar HelloMIDlet.jar HelloMIDlet.jad HelloM

27、idlet 第三章 撰寫您的第一個手機程式 3-23如果過程沒有發生問題,就會在您的目錄下建立一個名為HelloMIDlet.jar 的包裹檔。 HelloMIDlet.jar 的內容如下: 請開啟 Manifest.mf,其內容應該 如下: JavaJava Java 手機程式設計入門 3 3-24如果您的並非如此,可能是因為指令下達錯誤,請再重新檢查。否則在之後步驟雖然不會發生錯誤,但是在將來配合網頁伺服器來執行的時候將會出現錯誤。 步驟 6 :測試與除錯 請撰寫一個名為 midjartest.bat 的批次檔,內容如下: midjartest.bat d:midp-fcsbinmidp

28、-classpath d:midp-fcsclasses;%1 -descriptor %2 因為排版的關係,將批次檔的內容用數行呈現,且兩行之間有空白字元作為間隔。實際上的批次檔中整個指令必須在同一行。 接著你可以在命令列輸入: midjartest HelloMIDlet.jar HelloMidlet.jad 如果執行過程沒有錯誤,則會出現 MIDP 模擬器,內容如下: 按下圖上用圓圈框住的手機按鈕就可以執行程式,內容如下 第三章 撰寫您的第一個手機程式 3-25您也可以隨時按下用矩形框住的手機按鈕離開程式。 如果之前您的類別檔沒有經過預先審核的動作,那麼在按下上述圓形紅色方框執行程式時

29、會出現錯誤訊息如下: ALERT: Error verifying class HelloMIDlet 接著 MIDP 模擬器會立 刻停止執行而跳出。 JavaJava Java 手機程式設計入門 3 3-26步驟 7 :將程式下載到實體機器上執行 當您拿到可以執行的 M IDlet 的手機時,應該 至少有兩種方法可以讓 MIDlet 下載到該手機上: 1. 透過網頁伺服器。 2. 透過支援 MIDlet 的手 機所提供的套件中與 PC 的連接線。有關 MIDP 和網頁伺服器搭配的部分我們將在後面的章節位各位解說。而利用連接線將 MIDlet 下 載到手機上這個動作則每家廠商各自有各自的解決方

30、案,到時候還請您自行參考特定手機的使用說明書。 最後,這些麻煩的步驟肯定讓您覺得很不方便,所以我們可以再額外撰寫一個名為 midjaremu.bat 的批次 檔,讓這些繁複的步驟一次做完: midjaremu.bat call midjavac %1 call midver %2 %2 call midjar %3 %4 %2 call midjartest %3 %4 接著你可以在命令列輸入: midjaremu HelloMIDlet.java HelloMIDlet HelloMIDlet.jar HelloMidlet.jad 第三章 撰寫您的第一個手機程式 3-27如果中間任何一個步

31、驟沒有發生錯誤的話,這個批次檔可以幫您將所有的步驟一次搞定。但是這種方便的工具也有其缺點,一般常常發生的問題在您修改了程式之後,您的程式有誤,導致第一個編譯步驟就發生錯誤,無法產生您預期中的新版類別檔,可是之後的步驟卻仍然可以執行成功,這是因為前一版編譯成功的舊版類別檔還存在目錄之下。這樣一來,您總是執行到舊版的程式,自然並非您所預期的結果,所以請務必注意每一個步驟的輸出結果,任何一個步驟發生錯誤都可能讓您執行到舊版程式。所以建議您每次重新編譯時先刪去上一次所產生的所有檔案。 最後要額外告訴您的是,前面我曾提到,如果您只是單純想要在 MIDP 模擬器上執行的話,您可以省略合成 JAR 檔的步驟

32、。少了這個步驟,很自然的上述的指令也必須經過修改: 請撰寫一個名為 midtest.bat 的 批次檔,內容如下: JavaJava Java 手機程式設計入門 3 3-28midtest.bat d:midp-fcsbinmidp -classpath d:midp-fcsclasses;.%1 -descriptor %2 因為排版的關係,將批次檔的內容用數行呈現,且兩行之間有空白字元作為間隔。實際上的批次檔中整個指令必須在同一行。 另外,-classpath 後 面所接的參數是 d:midp-fcsclasses;. %1,沒有 任何空白字元,絕對不是我打字錯誤喔! 接著你可以在命令列輸

33、入: midtest HelloMIDlet HelloMidlet.jad 如果執行過程沒有錯誤,一樣會出現 MIDP 模擬器。 當然,如果您要將這個繁複的過程自動化,您仍然可以撰寫一個批次檔來簡化您的工作,請額外撰寫一個名為 midemu.bat 的批次檔,讓這些繁複的步驟一次做完: midemu.bat call midjavac %1 call midver %2 %2 call midtest %2 %3 接著你可以在命令列輸入: 第三章 撰寫您的第一個手機程式 3-29midemu HelloMIDlet.java HelloMIDlet HelloMidlet.jad 如果中間任

34、何一個步驟沒有發生錯誤的話,這個批次檔可以幫您將所有的步驟一次搞定。就如同前面所說,方便的工具也有缺點,使用時請務必小心觀看每一個步驟的執行結果。 MIDP 參考實做對中文的支援 請嘗試修改 HelloMIDlet.java,內容如下: HelloMIDlet.java import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloMIDlet extends MIDlet implements CommandListener private Command exitComman

35、d; private Display display; public HelloMIDlet() display = Display.getDisplay(this); exitCommand = new Command(“離開 “, Command.SCREEN, 2); JavaJava Java 手機程式設計入門 3 3-30 public void startApp() System.out.println(“MIDlet啟動 “) ; TextBox t = new TextBox(“哈囉 MIDlet“,“測試 string“, 256, 0); t.addCommand(exitCommand); t.setCommandListener(this); display.setCurrent(t); public void pauseApp() public void destroyApp(boolean unconditional) public void commandAction(Command c, Displayable s) if (c = exitCommand) destroyApp(false); notifyDestroyed(); 程式的執行結果如下所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报