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

Sony Ericsson JP-7 平台 MIDlet 開機自啟動實現

     編輯:Java 相關知識

前言

開機自動啟動 MIDlet 是 J2ME 開發者長久願望。Sony Ericsson JP-7 (K800, W950, P1i 等) 通過 Push Registry 機制實現此功能。注意:早期機型(如 K790)不支援。

靜態註冊 (JAD/MANIFEST)


MIDlet-Push-1: autostart://:, com.example.AutoStartStatic, *
  • 協議固定為 autostart://:(注意雙冒號)。
  • 中間為 MIDlet 類全名。
  • * 表示接受任何發送者(此處無發送者概念)。

動態註冊 (代碼控制)


public void registerAutoStart() {
    String[] conns = PushRegistry.listConnections(false);
    if (conns.length == 0) {
        try {
            PushRegistry.registerConnection("autostart://:", "com.example.AutoStartDyn", "*");
            showStatus("已註冊開機自啟動");
        } catch (Exception e) {
            showStatus("註冊失敗: " + e);
        }
    } else {
        showStatus("已存在註冊");
    }
}

public void unregisterAutoStart() {
    if (PushRegistry.unregisterConnection("autostart://:")) {
        showStatus("已取消註冊");
    } else {
        showStatus("無註冊或取消失敗");
    }
}

MIDlet 入口處理


public class AutoStartDyn extends MIDlet {
    public void startApp() {
        // 判斷是否為開機自啟動喚醒
        String[] args = getAppProperty("MIDlet-Args"); // 或檢查啟動上下文
        if (isAutoStart()) {
            // 執行後台任務:同步數據、檢查更新、上報心跳
            performBackgroundTask();
            notifyDestroyed(); // 完成後靜默退出,不打擾用戶
        } else {
            // 用戶手動啟動,進入正常 UI
            showMainUI();
        }
    }
    // ...
}

注意事項

  • 權限:需在 JAD 聲明 MIDlet-Permissions: javax.microedition.io.PushRegistry。
  • 用戶體驗:自啟動後建議無 UI、靜默完成任務後退出,避免干擾用戶。
  • 電量:頻繁喚醒執行耗電任務會縮短待機,合理設置間隔。
  • 測試:真機重啟驗證,模擬器多不支援 autostart 協議。

參考資料

總結

JP-7 平台通過 autostart://: Push 註冊實現開機自啟,提供靜態/動態兩種方式。合理利用可構建後台同步、推送代收等增值服務,但必須克制介面彈出、控制喚醒頻率,尊重用戶體驗與電量。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved