本文基於 Windows 2000、Motorola J2ME SDK Drop 7,介紹 MIDlet 開發全流程。Motorola 率先開放 SDK,支援 iDEN 網絡手機,後續擴展至 GSM。
Motorola_SDK.exe(~3MB)。bin、lib、docs、demo 等)。繼承 javax.microedition.midlet.MIDlet,實現三大生命週期方法:
protected void startApp()
protected void pauseApp()
protected void destroyApp(boolean unconditional)
流程圖見文檔。
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HelloMIDlet extends MIDlet {
private Display display; private Form form;
HelloMIDlet() {
display = Display.getDisplay(this);
form = new Form("Hello MIDlet");
form.append(new StringItem("Hello","MIDlet"));
}
protected void startApp() { display.setCurrent(form); }
protected void pauseApp() {}
protected void destroyApp(boolean u) {}
}
javac -O -bootclasspath D:\MotoSDK\lib HelloMIDlet.java
D:\MotoSDK\bin\preverify -classpath D:\MotoSDK\lib;. -d . HelloMIDlet
runEmul HelloMIDletrunMotoi1000 HelloMIDletrunMotoiDEN HelloMIDletrunStarTac HelloMIDletrunMyDevice HelloMIDlet(需 .props 文件)非 demo 目錄下可用完整 java 命令啟動模擬器,指定 -deviceFile 載入裝置配置。
默認編譯中文正常顯示於 UI,但控制台亂碼。修改 compileAll.bat 添加 -encoding ISO8859_1:
javac -encoding ISO8859_1 -O -bootclasspath ...lib %COMPILECLASS%
原理:阻止編譯器將 Big5 碼轉 Unicode 再轉 UTF-8,改為逐字節編碼,KVM 直接輸出即還原 Big5。實測真機上亦需此選項。
Bounce、PaddleBall、Scribble、FontDemo、GraphicsDemo、RecordStoreDemo、UDP Tutorial、各類測試用例(Alert、ChoiceGroup、DateField、Form、Gauge、KeyEvents、TextBox、TextField、Ticker)。