首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 無線通訊程式設計入門:架構、MIDP API、WMA 訊息傳遞與實機開發實戰

     編輯:J2ME

第一部分:J2ME 體系架構速覽

(同前文,略)核心:CLDC + MIDP 構成手機開發基礎,MIDlet 為應用單元。

第二部分:MIDP 核心 API 概覽

包功能領域
javax.microedition.lcduiUI (High-level: Form/List/Alert/TextBox; Low-level: Canvas/Graphics)
javax.microedition.rms持久化儲存 (RecordStore)
javax.microedition.io網路 (GCF: HTTP/Socket/Datagram)
javax.microedition.midlet應用生命週期與環境互動

關鍵 UI 元件

  • Form 容器承載 StringItem、TextField、DateField、ChoiceGroup。
  • List、Choice 提供單/多選介面。
  • Canvas + Graphics 實現遊戲級繪圖與按鍵事件 (keyPressed/repeated/released)。

MIDlet 生命週期

new() → Paused --startApp()--> Active --pauseApp()--> Paused
                              ↑___________________________|
                              destroyApp() → Destroyed

AMS (Application Management Software) 控制狀態轉換;開發者可透過 notifyPaused/destroyed、resumeRequest 請求狀態變更。

第三部分:無線訊息傳遞 (WMA / JSR-120)

架構三層

  1. 介面層:javax.wireless.messaging (Message、MessageConnection、MessageListener)
  2. 實作層:協議具體實現 (SMS、CBS、MMS)
  3. 傳輸層:底層通訊協議驅動

核心 API 用法

// 客戶端發送 SMS
MessageConnection conn = (MessageConnection) Connector.open("sms://+886912345678:5000");
TextMessage msg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setPayloadText("Hello SMS");
conn.send(msg);

// 伺服器端接收 (需註冊 Listener)
MessageConnection serverConn = (MessageConnection) Connector.open("sms://:5000");
serverConn.setMessageListener(new MessageListener() {
    public void notifyIncomingMessage(MessageConnection c) {
        Message m = c.receive();
        // 處理 TextMessage / BinaryMessage
    }
});

SMS 與 CBS 差異

  • SMS:點對點,160 字元,雙向,經 SMSC 儲存轉發。
  • CBS:小區廣播,單向下發,主題分類 (Channel/Message ID/Update Number/Language),無需目標位址。

第四部分:Motorola 388 實機開發環境 (MotoJ2SDK + JCreator)

  1. 安裝 JDK 1.3、MotoJ2SDK、JCreator LE。
  2. 啟動 runConstructor.bat 建立模擬器設定檔。
  3. JCreator 設定:
    • JDK Profile → 指向 JDK、MotoJ2SDK lib/docs 路徑。
    • Compiler 參數:-O -bootclasspath D:/MotoJ2SDK/lib
    • Tools 新增 Preverify、Run Emulator、Create Jar 三個 DOS 命令,參數詳見原文。
  4. 撰寫 Canvas 子類處理 keyPressed 顯示按鍵碼,編譯預驗證打包後在模擬器執行。

第五部分:鍵盤 ASCII 碼擷取範例

public class KeyEventsDemoCanvas extends Canvas {
    private int lastKey;
    protected void paint(Graphics g) {
        g.drawString("Press a key!", 0, 0, Graphics.TOP|Graphics.LEFT);
        if (lastKey != 0) {
            g.drawString("Key Code: " + lastKey, 0, g.getFont().getHeight(), Graphics.TOP|Graphics.LEFT);
            g.drawString("Action: " + getGameAction(lastKey), 0, 2*g.getFont().getHeight(), Graphics.TOP|Graphics.LEFT);
            g.drawString("Key Name: " + getKeyName(lastKey), 0, 3*g.getFont().getHeight(), Graphics.TOP|Graphics.LEFT);
        }
    }
    protected void keyPressed(int keyCode) { lastKey = keyCode; repaint(); }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved