詳細介紹 MIDP 四大核心套件功能,並以「SaveMyMoney 行動銀行」雙畫面範例示範:畫面一顯示歡迎訊息與跑馬燈,畫面二動態顯示當前日期、時間、總記憶體、可用記憶體。
| 套件 | 功能說明 |
|---|---|
javax.microedition.midlet | 最內層,僅含 MIDlet 類,提供應用基礎生命週期支援。 |
javax.microedition.io | 含 HttpConnection,MIDlet 透過 HTTP 存取 Web 資料。 |
javax.microedition.lcdui | 液晶顯示 UI,功能對應 java.awt 但針對小螢幕手持裝置優化。 |
javax.microedition.rms | 記錄管理系統,支援資料庫儲存/檢索 MIDlet 資料。 |
public class MB extends MIDlet implements CommandListener {
private Display display;
private Form form1, form2;
private Ticker ticker1;
private static final Command okCmd = new Command("Info", Command.OK, 1);
private static final Command backCmd = new Command("Back", Command.BACK, 0);
private static final Command exitCmd = new Command("Exit", Command.STOP, 2);
public void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
ticker1 = new Ticker("Welcome to the World of Mobile Banking!");
form1 = new Form("SaveMyMoney");
form1.append(new StringItem("Welcome to SaveMyMoney Bank!", ""));
form1.addCommand(exitCmd);
form1.addCommand(okCmd);
form1.setCommandListener(this);
form1.setTicker(ticker1);
form2 = new Form("INFORMATION");
Calendar cal = Calendar.getInstance();
String month[] = {"January","February","March","April","May","June",
"July","August","September","October","November","December"};
String dateStr = cal.get(Calendar.DAY_OF_MONTH) + " " + month[cal.get(Calendar.MONTH)] + " " + cal.get(Calendar.YEAR);
String timeStr = cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);
Runtime rt = Runtime.getRuntime();
String totalMem = Long.toString(rt.totalMemory());
String freeMem = Long.toString(rt.freeMemory());
form2.append(new StringItem(" ", "DATE: " + dateStr));
form2.append(new StringItem(" ", "TIME: " + timeStr));
form2.append(new StringItem(" ", "Total Memory: " + totalMem));
form2.append(new StringItem(" ", "Free Memory: " + freeMem));
form2.addCommand(exitCmd);
form2.addCommand(backCmd);
form2.setCommandListener(this);
display.setCurrent(form1);
}
public void pauseApp() {}
public void destroyApp(boolean uc) { notifyDestroyed(); }
public void commandAction(Command c, Displayable d) {
String lbl = c.getLabel();
if ("Exit".equals(lbl)) destroyApp(true);
else if ("Back".equals(lbl)) display.setCurrent(form1);
else display.setCurrent(form2); // Info
}
}
Calendar 取得日期時間,配合月份陣列本地化。Runtime.getRuntime() 監控記憶體使用狀況。Command 語意類型 (OK/BACK/STOP) 決定軟鍵映射優先權。commandAction,狀態由表單實例保持。