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

如何將 J2ME API 移植至 OPhone 平台

     編輯:J2ME

隨著 Android 紅火與 Windows Mobile 跟進,中國移動 OPhone 看似他人技術。本文探討如何將 J2ME API 移植至 OPhone。

中國擁有全球最大電信客群,僅移動用戶達 4 億。3G 費用降低是大勢所趨,不久將形成巨大 3G 浪潮。中國移動推出 OPhone OS 系統,採用 Linux 2.6 核心,相容 Android 應用。OPhone 為中國移動 3G 戰略旗艦,承載海量 3G 業務應用。大量軟體企業將陣地轉向移動平台:手機電視、炒股、網遊、企業 MIS、移動辦公等將成熱點,需大量開發人員,薪資高於一般 PC 開發。依託 MMArket 亦有前景。

Android 移植除硬體外,核心在 Java 平台間移植。市面主流 Java VM 為 Sun Java ME,Google Android 採用自家 Dalvik。如何從 J2ME 移植至 Android?

雖開發環境不同,但實現功能相近,可從功能角度理解 OPhone OS 與 J2ME 聯繫與差異。若代碼框架佳,邏輯部分基本不變,僅需轉換平台相關介面。總結四方面:

1) 使用者界面

最麻煩處。Android 圖形類與 Sun Java ME 差異大,且 SDK 變化快,移植常需自行實現相關類,可能影響效率。需花大量時間學習,為未來重點講解。

2) 資料儲存

Android 附帶 SQLite 資料庫,功能與效能遠超 J2ME 的 RMS。過去 J2ME 開發常用自定義二進制格式或 XML 替代。

3) 網路資料

Android 採用 Sun I/O 庫(InputStream 等)與 URLConnection 類,基本無變化,移植時注意堆疊空間調整即可。

4) 多媒體播放

Android 官方推薦 MediaPlayer,支援 mp3、mid、wav、mp4 等常規格式,比 J2ME 靈活強大得多。

逐步實現 J2ME API 在 OPhone OS 上的移植

1. 入口程式 MIDlet

J2ME 主體類 MIDlet,調用 startApp() 進入應用。OPhone OS 對應 Activity,調用 onCreate(savedInstanceState) 進入交互界面。透過繼承 Activity 模擬實現 MIDlet:

public abstract class MIDlet extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startApp();
    }
    public abstract void destroyApp(boolean unconditional);
    public String getAppProperty(String key) { return null; }
    public abstract void startApp();
    public void notifyDestroyed() {}
    public void notifyPaused() {}
    public void pauseApp() {}
    public void platformRequest(String URL) {}
    public void resumeRequest() {}
}

2. Canvas

J2ME Canvas 類似 OPhone OS View 類:

public abstract class Canvas extends Displayable {
    public Canvas(MIDlet context) { super(context); }
    Graphics g = new Graphics();
    public void onDraw(android.graphics.Canvas canvas) {
        g.bind(canvas); paint(g);
    }
    // ... 其餘方法存根實現
    protected abstract void paint(Graphics g);
}

3. Graphics

J2ME Graphics 類似 OPhone OS Paint 類。移植中用 OPhone OS 類庫實現 Graphics,可修飾 Graphics 物件,整合 Canvas 並調用 Paint、Color 方法。例如:

public class Graphics {
    public final static int VCENTER = 0; TOP = 1; SOLID = 2; RIGHT = 3; LEFT = 4; HCENTER = 5; DOTTED = 6; BOTTOM = 7; BASELINE = 8;
    Canvas dist;
    private final Paint paint = new Paint();
    public void bind(Canvas canvas) { dist = canvas; }
    public void setColor(int eraseColour) {}
    public void drawImage(Image img, int x, int y, int anchor) {
        dist.drawBitmap(img.getTp(), x, y, paint);
    }
}

以上重新定義的 Graphics 類,在方法實現上調用 OPhone OS 具體方法,用其類庫實現 J2ME 框架,達到平台間良好移植。

從例子可見兩平台框架有許多相似性,創造移植條件。但也存在差異,部分 J2ME 類無法直接繼承或調用 OPhone OS 實現,需移植人員自行實現相關類,這是移植過程中需克服的困難。

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