作者:王森
█前言
本文內容的所有操作皆在Windows 200操作系統上經過測試。如果您在不同的平臺上驗證本文內容,例如Windows 98或是Windows Me,則我們無法保證會有相同的結果。
█簡介
不知從什幺時候開始,我們突然感覺到周圍的人各各擁有一隻手機。利用手機與別人溝通成了我們生活的一部份。北歐某些先進國家的人民可以利用手機購買自動售貨機所出售的商品;他們也可以在從事行動商務(m-commence) 交易時利用手機做爲一種認證工具。在日本,行動電話的許多附加功能更是年輕人文化的一部分。即將來臨的3G,無線寬頻的美夢帶給了人們對無線通訊未來的期待。
然後,有些廠商開始行銷它們自己生產的PDA,好象沒有一臺PDA在手,就不像現代人似的。各式各樣的PDA充斥市面,暢銷的與不暢銷的,讓人眼花撩亂。這時產生了一個大問題--要我們同時攜帶手機和PDA是一件很麻煩的事情-就算它們都還算輕薄短小。如果可以把手機和PDA合而爲一豈不是更方便嗎? 於是聽到消費者心聲的廠商,開始有推出手機和PDA合而爲一的產品,從NOKIA 9000、Motorola A6188(太極),到最近要推出的Ericsson R380、NOKIA 9210,都是手機與PDA結合的例子,雖然因爲售價的關係,但是這些產品仍然是許多人夢寐以求的高階產品。
儘管有了PDA與手機結合的產品出現,我們仍然覺得有所不足,我想大家一定發現了,就是應用程序的不足,雖然手機和PDA 結合了,可是這些產品上的PDA功能看起來似乎是死的。我們可以任意在PalmOS、Windows CE、EPOC等PDA上使用C/C++或是Java編寫這些平臺上的應用程序,但是卻從未有過機會將我們寫好的程序下載到這些手機上執行(即使有些手機的PDA也是使用EPOC,如Ericsson R380)。
相信廠商也聽到我們這些喜歡到處寫程序的工程師的心聲了,所以從2000年年底開始,即將陸陸續續有許多支持Java的手機即將推出,當然,這些廠商也提供了在手機上開發程序的SDK,我們終於可以在手機上面寫些小程序自娛了!這是以前等了很久的美夢。
手機平臺的多樣性與複雜性,和PDA比較起來可以說是有過之而無不及,於是大家就可以知道 - 哈!又是Java派上用場的時候了。我們都知道在瀏覽器上執行的Java程序叫做Applet,在PalmOS上執行的Java程序叫做Spotlet,然而在手機上執行的應用程序我們稱做MIDlet,相信對大家來說都是一個陌生的名詞,這也就是本篇文章所要介紹的主角。
支持Java的手機大廠目前已知有NOKIA (預計在2001年年初推出一款支持Java的手機NOKIA 9210)、Motorola(會先在支持integrated Digital enhanced network(iDen)網絡的手機上支持Java,然後再推出支持Java的GSM手機,該公司的手機大致會在2002年前全部支持Java)以及NTT DoCoMo(將在明年第二季度左右推出支持Java的手機)。
雖然這些大公司都準備支持Java,不過在決定編寫本文時,只有Motorola將其SDK開放於網站上供程序開發者下載測試,所以本文內容都是根據Motorola J2ME SDK所編寫。又由於這些手機市面上無法取得,所以我們的程序都是在SDK內附的模擬器中執行,相信最後這些手機上市時,我們所編寫的MIDlet應該會很容易併成功地在Motorola的手機上執行纔對。
█如何取得Motorola J2ME SDK
我們要做的第一件事情當然還是要先取得SDK羅!
請直接到https://commerce.motorola.com/idenonline/ideveloper/下載Motorola J2ME SDK Drop 7。如果您不是iDEN® Developer的會員,請先在網絡上註冊(免費)。註冊成功之後,Motorola會將密碼寄到您的email信箱之中,然後使用該密碼登入網頁上的My Development Center。進入之後選擇網頁上頭的TOOLS & RESOURCES以進入可下載的開發工具的網頁,請選擇Motorola J2ME SDK Components Developer Edition, Drop 7.0下方的下載超連結以下載SDK,整個SDK的大小約爲3 MB左右。
請注意下載前的Download Page for Motorola J2ME™ SDK安裝說明,裏頭會告訴你安裝密碼,請先行記下。稍後當您在您的電腦上安裝Motorola J2ME SDK的時候,會詢問您安裝密碼,所以請務必記下該密碼。
█Motorola J2ME SDK的安裝
安裝需求
根據官方需求,安裝Motorola J2ME SDK的基本配備爲:
Pentium 100 MHz微處理器
64 MB RAM
Windows NT WorkStation 4.0配合Service Pack 3 / Win98
(本文是在Windows 2000 Professional中文版上測試)
約6 MB的硬盤空間
Java 2 SDK 1.2.2
(本文使用Java 2 SDK 1.3.0_01作測試)
安裝Motorola J2ME SDK
要安裝新版Motorola J2ME SDK之前,請先確認您已經將舊版的Motorola J2ME SDK完全刪除。您可以由控制檯裏頭的 「新增/刪除程序」的功能刪除舊版Motorola J2ME SDK。之後再將舊版Motorola J2ME SDK安裝所在路徑清除即可。
解開您從Motorola網站上下載的ZIP文件,您會看到一個名爲Motorola_SDK.exe的文件,雙擊此文件即可開始安裝動作。請注意,在安裝時系統會要求您輸入密碼,請輸入之前所紀錄的安裝密碼即可。
█Motorola J2ME SDK目錄結構
當您成功地安裝Motorola J2ME SDK之後,其目錄結構如下圖:
█MIDlet程序結構
在手機上執行的程序我們統稱MIDlet,其程序結構很簡單,與大家熟悉的Applet結構有異曲同工之妙。
每一個MIDlet程序都必須繼承自javax.microedition.midlet.MIDlet類別,並實做三個函式,它們分別是:
protected void startApp()
protected void pauseApp()
protected void destroyApp(Boolean unconditional)
而一個MIDlet程序的起始與結束之流程我們以下圖來表示:
█編寫並編譯MIDlet
請先到您的Motorola J2ME SDK安裝目錄下的demo/midlets目錄底下新建一個名爲HelloMIDlet.java的文件,其內容爲:
HelloMIDlet.java
import javax.microedition.lcdui.*; import javax.microedition.midlet.*;
public class HelloMIDlet extends MIDlet {
HelloMIDlet() { }
protected void startApp() throws MIDletStateChangeException { }
protected void pauseApp() { }
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } } |
在demo/midlets目錄之中您會看到一個名爲compileAll.bat的批處理文件,前面有提到,這個批處理文件除了可以幫助您編譯所有內附範例程序之外,還可以簡化您自己所編寫的MIDlet之編譯流程。
請在命令列視窗輸入:
| compileAll_HelloMIDlet.java |
如果成功編譯,屏幕上輸出的結果如下圖所示:
從屏幕上的輸出,您可以發現,要讓MIDlet可以在手機上執行,大體上還是要經過兩個動作(與Spotlet相似),分別是編譯(compiling)以及預先審覈(Preverifying)。
有關預先審覈這個動作,筆者已經在RUN!PC 11月號的文章「利用Java 編寫PalmOS應用程序基礎篇」之中有向讀者們提過,如果對這個方面有所疑問的朋友,請再將您的RUN!PC 11月號翻出來複習一下吧!
從這個簡短的MIDlet製作流程裏頭,相信大家可以發現,比起純粹用Sun的CLDC編寫能在KVM上執行的Spotlet要簡單上許多。原因是compileAll.bat這個批處理文件幫我們做掉大部分dirty work。
那幺,如果您寫好的程序並非放在demo/midlets目錄之中,是否就無法編譯了? 從compileAll.bat裏頭,我們可以發現它幫我們完成上述兩項工作的指令。如果我們寫好的程序放在demo/midlets目錄以外的地方,您可以執行下面的指令,您仍然可以成功地製作MIDlet:
(我們假設您的Motorola J2ME SDK安裝在D:/MotoSDK目錄之中,並將您自行撰寫的HelloMIDlet.java置於d:/jdk1.3.0_01/my目錄之中。同時我們假設您在d:/jdk1.3.0_01/my目錄底下執行下面指令。) |
編譯: javac -O -bootclasspath d:/MotoSDK/lib HelloMIDlet.java | 注意: 1. -bootclasspath指向類別函式庫的所在位置。 |
預先審覈:
d:/MotoSDK/bin/preverifier -classpath d:/MotoSDK/lib;. -d . HelloMIDlet | 注意: 1. -classpath指向類別函式庫的所在位置,也要指向我們所撰寫的MIDlet所在的位置。 2. -d指向您希望預先編譯類別檔產生之後所放置的路徑,如果寫"."表示本目錄,會覆蓋掉原先未經過預先編譯的類別檔。如果您沒有指定,則默認值爲"./output"目錄。 |
|
當然,如果您嫌自己手動操作很麻煩,您可以將compileAll.bat複製到其它目錄之中,並更改其編譯指令與預先審覈指令之中和類函數庫有關的相關設定即可。
提到compileAll.bat,順便向各位讀者說明一下,在前面有提到,compileAll.bat可以幫助您編譯所有位於demo/midlets目錄下的範例程序,您只要在命列列下直接輸入: compileAll即可。compileAll.bat會自動當您編譯的package有以下幾項:
com.mot.j2me.midlets.bounce com.mot.j2me.midlets.imagetests com.mot.j2me.midlets.paddleball com.mot.j2me.midlets.scribble com.mot.j2me.midlets.tests com.mot.j2me.midlets.tutorials |
如果您希望compileAll.bat自動幫您編譯其它package底下的程序,請您開啓compileAll.bat,修改其COMPILECLASS環境變數的設定即可。
█修改並執行MIDlet
寫好程序之後,大家最希望的事情當然就是讓它在手機上執行,不過由於目前大家無法取得Motorola這些支持Java的手機,所以我們只能在Motorola J2ME SDK內附的模擬器上執行我們寫好的MIDlet。相信手機正式推出時,應該可以順利地在手機上執行。底下筆者將告訴您如何使用Motorola J2ME SDK內附的模擬器來測試您所編寫的MIDlet。
在這之前,由於之前我們所編寫的範例程序只是簡單的MIDlet空殼,我們必須讓它能夠在模擬器上顯示出一些信息纔可以,因此請修改上一個程序範例,使它的內容如下:
HelloMIDlet.java
import javax.microedition.lcdui.*; import javax.microedition.midlet.*;
public class HelloMIDlet extends MIDlet {
private Display firstDisplay ; private Form firstForm ; HelloMIDlet() { firstDisplay = Display.getDisplay(this) ; firstForm = new Form("Hello MIDlet") ; StringItem firstStrItem = new StringItem("Hello","MIDlet") ; firstForm.append(firstStrItem) ; }
protected void startApp() throws MIDletStateChangeException { firstDisplay.setCurrent(firstForm) ; }
protected void pauseApp() { }
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } } |
請將此文件放置在/demo/midlets目錄下。編譯完成之後,請將目錄切換到scripts子目錄之中,您會在此目錄裏發現一些寫好的批處理文件。請在該目錄下執行這些批處理文件指令以啓動模擬器。執行的指令與執行結果如下所示:
指令: runEmul HelloMIDlet
輸出結果:
指令: runMotoi1000 HelloMIDlet
輸出結果:
指令: runMotoiDEN HelloMIDlet
輸出結果 :
指令: runStarTac HelloMIDlet
輸出結果:
指令: runMyDevice HelloMIDlet |
輸出結果 Error loading property file: C:/properties/mydevice.props (系統找不到指定的路徑。) |
會出現錯誤訊息是因爲您沒有指定屬於使用者自訂的手機外觀的緣故,後面將會教您如何設定使用者自訂的手機外觀。 |
如果我們將寫好的程序放在demo/midlets目錄以外的地方,您可以執行下面的指令,仍然可以成功地啓動模擬器並執行MIDlet:
(我們假設您的Motorola J2ME SDK安裝在D:/MotoSDK目錄之中,並將您自行編寫的HelloMIDlet.java置於d:/jdk1.3.0_01/my目錄之中。同時我們假設您在d:/jdk1.3.0_01/my目錄底下執行下面指令。)
■ 執行一般仿真器 java -Djava.library.path=d:/MotoSDK/lib -classpath d:/MotoSDK/bin/Emulator.jar;d:/MotoSDK/bin/ConfigTool.jar com.mot.tools.j2me.emulator.Emulator -classpath.;d:/MotoSDK/lib javax.microedition.midlet.AppManager HelloMIDlet-JSA 1 1 | 請注意: 第一個-classpath設定,-classpath 與路徑名稱之間有空格。 第二個-classpath設定,-classpath 與路徑名稱之間沒有空格。 |
|
■ 執行仿真器並套用i1000手機外觀 java -Djava.library.path=d:/MotoSDK/lib -classpath d:/MotoSDK/bin/Emulator.jar;d:/MotoSDK/bin/ConfigTool.jar com.mot.tools.j2me.emulator.Emulator -classpath.;d:/MotoSDK/lib -deviceFile resources/Motorolai1000.props javax.microedition.midlet.AppManager HelloMIDlet -JSA 1 1 | 請注意: 第一個-classpath設定,-classpath與路徑名稱之間有空格。 第二個-classpath設定,-classpath與路徑名稱之間沒有空格。 |
|
■ 執行仿真器並套用iDEN手機外觀 java -Djava.library.path=d:/MotoSDK/lib -classpath d:/MotoSDK/bin/Emulator.jar;d:/MotoSDK/bin/ConfigTool.jar com.mot.tools.j2me.emulator.Emulator -classpath.;d:/MotoSDK/lib -deviceFile resources/MotorolaiDENPlatform.props |
javax.microedition.midlet.AppManager HelloMIDlet -JSA 1 1 | 請注意: 第一個-classpath設定,-classpath與路徑名稱之間有空格。 第二個-classpath設定,-classpath與路徑名稱之間沒有空格。 |
|
■ 執行仿真器並套用StarTac手機外觀 java -Djava.library.path=d:/MotoSDK/lib -classpath d:/MotoSDK/bin/Emulator.jar;d:/MotoSDK/bin/ConfigTool.jar com.mot.tools.j2me.emulator.Emulator -classpath.;d:/MotoSDK/lib -deviceFile resources/StarTac.props |
javax.microedition.midlet.AppManager HelloMIDlet -JSA 1 1 | 請注意: 第一個-classpath設定,-classpath與路徑名稱之間有空格。 第二個-classpath設定,-classpath與路徑名稱之間沒有空格。 |
|
■ 執行仿真器並套用使用者自訂手機外觀 java -Djava.library.path=d:/MotoSDK/lib -classpath d:/MotoSDK/bin/Emulator.jar;d:/MotoSDK/bin/ConfigTool.jar com.mot.tools.j2me.emulator.Emulator -classpath.;d:/MotoSDK/lib -deviceFile < 您的props文件所在的絕對路徑 > |
javax.microedition.midlet.AppManager HelloMIDlet -JSA 1 1 | 請注意: 第一個-classpath設定,-classpath與路徑名稱之間有空格。 第二個-classpath設定,-classpath與路徑名稱之間沒有空格。 如果您將您的props檔放在d:/MotoSDK/bin的resources目錄之下,則上述指令只要改成: -deviceFile resources/< 您的props檔名 > |
|
|
注意,當您您直接使用上述指令激活仿真器,如果出現底下錯誤訊息: Error loading property file: resources/defaultdevice.props (系統找不到指定的路徑 。) |
這是因爲您沒有將d:/MotoSDK/bin目錄下的resources子目錄複製到d:/JDK1.3.0_01/my目錄之下的緣故。 |
對MIDlet進行除錯 |
撰寫PalmOS上的Spotlet時,我們可以利用System.out.println()函式幫我們印出一些訊息以幫助除錯,那麼在手機上的MIDlet呢? 原則上,我們還是可以利用System.out.println()函式做一些輸出。當仿真器執行時,就會在命令列上輸出一些訊息。 | 另外,在PalmOS上,有KVMutil.prc可以幫助我們紀錄程序所輸出的訊息。那手機上呢? 因爲沒有實際的機器可以測試,因此這個問題到現在還不得而知,相信Motorola到時候會有完善的解決方案吧! | 在Motorola J2ME SDK內附的說明文件之中,概略地提到了除錯的問題,裏頭提到,往後如果我們要進行上機除錯(on-device debugging)的話,必須要滿足幾個條件: | 1. 機器本身要具備除錯相關功能,並與KDWP(Kvm Debug Wire Protocol)兼容。因爲除錯時,除錯工具需要利用KDWP和機器上交談以取得除錯信息。 2. 製造廠商本身要提供下載MIDlet到手機上以進行除錯的方法。 3. 提供對MIDlet除錯的工具,必須支持手機在利用KDWP除錯時所此用的傳輸媒介(例如序列阜或UDP)。 | 嗯,看起來除錯方式有解,MIDlet程序的撰寫應該是很方便的事情了。 |
|
Motorola J2ME SDK對中文的支持 |
相信看過RUN!PC 11月號的文章「利用Java 撰寫PalmOS應用程序基礎篇」的讀者,在撰寫PalmOS上的Spotlet時一定會遇到中文無法正常顯示的問題。中文的問題分成兩個部分,一個是在使用者接口上的中文問題,一個是在命令列輸出(利用System.out.println()函式所做的輸出)上的中文問題,請大家做個小實驗,將前面我們所撰寫的程序改如下: | HelloMIDlet.java import javax.microedition.lcdui.*; import javax.microedition.midlet.*;
public class HelloMIDlet extends MIDlet { private Display firstDisplay ; private Form firstForm ; HelloMIDlet() { firstDisplay = Display.getDisplay(this) ; firstForm = new Form("哈囉!MIDlet") ; StringItem firstStrItem = new StringItem("哈囉","米德列特") ; firstForm.append(firstStrItem) ; System.out.println("MIDlet激活") ; }
protected void startApp() throws MIDletStateChangeException { firstDisplay.setCurrent(firstForm) ; }
protected void pauseApp() { }
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } } |
| |
|
將本MIDlet編譯並經過預身審覈之後,我們開啓仿真器來執行此MIDlet,底下爲執行結果: 使用者接口輸出 | 命令列輸出 |
|
| 我們從結果發現,預設的編譯指令會讓使用者接口正常輸出中文,而命令列無法輸出正確的中文。 |
| 接着請將compileAll.bat之中原本的指令 javac -O -bootclasspath ../../lib %COMPILECLASS% |
修改爲 javac -encoding ISO8859_1 -O -bootclasspath ../../lib %COMPILECLASS% |
| 之後,重新編譯此MIDlet執行結果: | 使用者接口輸出 | 命令列輸出 |
|
| 我們從結果發現,預設的編譯指令會讓使用者接口無法正常輸出中文,而命令列卻可以輸出正確的中文。 |
| 這個結果與PalmOS上所做的中文測試結果有所不同。 | 當您撰寫Spotlet時,如果您使用 javac 。。。指令時,您會發現仿真器上的使用者接口輸出是亂碼,可是命令列上的輸出卻可以正常輸出中文。但是如果您使用的是javac -encoding ISO8859_1 。。。指令,則CLDC內附仿真器上的使用者接口輸出或是命令列上的輸出全部都變成亂碼,無法正常輸出中文(這個部分是因爲CLDC內附仿真器實做的問題,造成與實際機器的結果有差)。 | 總之,如果之前您所撰寫的Spotlet無法在裝有中文系統的實體機器或POSE上正常輸出中文,請您也如法炮製,在編譯指令中加入 -encoding ISO8859_1 ,就可以在實體機器或POSE上看到正常的中文字了。 | 會產生此問題的主因,主要是因爲編譯好的Java類別檔(byte code)之中,所有的文字編碼都採用UTF8。舉例來說,當您在程序代碼裏用到"激活"這兩個中文字時, | "起"這個字的Big5編碼爲B1D2。 "動"這個字的Big5編碼爲B0CA。 |
我們會使用javac xxxx.java來編譯原始碼以產生類別檔。其實這行指令,在繁體中文的Windows環境底下,相當於javac -encoding "Big5" xxxx.java。也就是說,當編譯器讀取到Big5編碼範圍的中文字時,會自動將此Big5碼經過「Big5 e Unicode 對照表」將Big5轉爲Unicode,也就是說,經過查表之後, | "起"這個字的Unicode編碼爲555F。 "動"這個字的Unicode編碼爲5272。 |
然後再利用UTF8編碼將此Unicode轉爲UTF8,儲存在類別檔之中,因此,如果您用UltraEdit之類的文字編輯器查看類別文件時,您會看到, | "起"這個字的UTF8編碼爲E5959F。 "動"這個字的UTF8編碼爲E58B95。 |
| 接着,當我們在程序執行時如果要將中文輸出,則JVM會負責讀進UTF8碼,然後將其轉回Unicode,最後依據您所使用的作業環境預設的編碼轉回Big5,再輸出至屏幕上。 | 可是經過測試結果,KVM似乎只有做到把UTF8讀進來,轉換回Unicode之後就直接輸出了。少了轉回Big5的步驟,因此,操作系統把Unicode當作Big5來處理,自然就找不到該碼所對應的中文字了,也因此輸出的是一堆 ????? 的符號。這也是我們在PalmOS上即使裝了中文系統,也無法正常顯示中文的緣故。 | OK,既然知道KVM只幫我們做了一半的工作,那事情就好辦了,我們只要讓UTF8轉回之後,仍然保有Big5的編碼方式即可,於使我們使用指令 javac -encoding ISO8859_1 xxxx.java,請編譯器不要將程序代碼中中文Big5編碼的兩個byte視爲一體(因爲視爲一體就會引發查詢Big5 --> Unicode對照表的工作),只要將中文當作是普通的西歐字母字集即可,因此,當我們使用了上述指令,您會發現類別檔之中的中文變成, | "起"這個字的UTF8編碼爲C2B1 C392。 "動"這個字的UTF8編碼爲C2B0 C38A。 |
| 大家可以發現編譯器把B1、D2、B0、CA個別當作一個碼來處理。於是,當KVM讀到此編碼時,就會將他們轉回B1D2以及B0CA,然後KVM直接輸出,就可以正常地使用中文了。 | 最後總結整個問題,就筆者的推斷,CLDC內附的仿真器再沒有使用 javac -encoding ISO8859_1 xxxx.java 指令之前,會在使用者接口會是命令列輸出亂碼,這纔是正常的結果, 而Motorola J2ME SDK內附仿真器的使用者接口中文之所以沒問題,很可能只是因爲仿真器在實做的差異。因此以KVM的輸出結果來看,很可能在實際的手機上,我們都必須加上 -encoding ISO8859_1 選項才能正確輸出中文吧! 在此特別感謝靜宜大學資管系的唐愷隆([email protected])同學。因爲筆者與他經過熱烈的討論之後,我們才能對J2ME的中文問題有更深入的認識。 |
|
援Motorola J2ME SDK的開發工具 |
撰寫本文的時候,支持MIDlet開發的整合環境(IDE)只有Motorola J2ME SDK內附文件之中所提到的CodeWarrior而已。相信其它廠商,如Borland,應該也會很快地利用其產品JBuilder的OpenTools API來支持MIDlet的開發纔對,更何況Borland JBuilder目前已經有Spotlet的解決方案了。 | 因爲筆者無法拿到CodeWarrior作測試,所以無法在此提供大家相關信息,相信如果有機會的話,會另外以專文向大家介紹如何利用CodeWarrior撰寫MIDlet。 | Motorola J2ME SDK內附文件在附錄的部分有對利用CodeWarrior開發MIDlet做簡單的介紹,相信對初學者來說,已經相當足夠了。 |
|
Motorola J2ME SDK內含的輔助開發工具 |
在Motorola J2ME SDK之中內含三項輔助開發工具,可以便利我們的程序開發工作,它們分別是: | - J2ME仿真器(J2ME Emulator)
讓您可以在您的PC上仿真Motorola將來會支持J2ME的手機裝置。如此一來就可以在PC上直接測試寫好的程序。 - Bytecode驗證器(Bytecode Verifier)
此驗證器用來驗證類別檔(classfile)之中的bytecode不會對內存做非法的存取。並確認加載虛擬機器的類別文件所做的所有動作皆符合Java虛擬機器規格(Java Virtual Machine Specification)。 - 組態編輯器(Configuration Editor)
讓您能夠建立或修改device profile。 在Motorola J2ME SDK內附的文件之中對這三個工具有詳細的說明,筆者在此就不再贅述了。
|
|
總結 |
呼!好累人,終於到了該做總結的時候了! 大家以爲MIDlet就這樣結束了嗎?不! MIDlet還有許多好玩的玩意兒呢! 我們將在本系列之後的文章中爲大家更深入探討MIDlet。咱們下次見。 |
|
附錄:範例程序 |
Motorola J2ME SDK之中內附許多有趣的範例,它們位於demo/midlets/目錄底下。有興趣繼續精進的讀者可以藉由這些範例學到更多有關MIDlet的深入技巧,由於這些範例的執行畫面過大,所以在本文之中就將他們省略,請讀者們自行參考說明文件。 | 這些範例程序有: | - Bounce
com.mot.j2me.midlets.bounce.Bounce - PaddleBall
com.mot.j2me.midlets.paddleball.PaddleBall - Scribble
com.mot.j2me.midlets.scribble.Scribble - FontDemo
com.mot.j2me.midlets.tutorials.FontDemo - GraphicsDemo
com.mot.j2me.midlets.tutorials.GraphicsDemo - RecordStoreDemo
com.mot.j2me.midlets.tutorials.RecordStoreDemo - UDP Tutorial Application
com.mot.j2me.midlets.tutorials.UDPReceive - AlertTest
com.mot.j2me.midlets.tests.AlertTest
| - ChoiceGroupTest
com.mot.j2me.midlets.tests.ChoiceGroupTest - DateFieldTest
com.mot.j2me.midlets.tests.DateFieldTest - FormTest
com.mot.j2me.midlets.tests.FormTest - GaugeTest
com.mot.j2me.midlets.tests.GaugeTest - KeyEventsTest
com.mot.j2me.midlets.tests.KeyEventsTest - TextBoxTest
com.mot.j2me.midlets.tests.TextBoxTest - TextFieldTest
com.mot.j2me.midlets.tests.TextFieldTest - TickerTest
com.mot.j2me.midlets.tests.TickerTest
|
|
|