游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1730|回复: 0

使用Netbeans IDE 5.0解决Java ME开发中的设备分裂问题 wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2006-3-28 07:36:00 | 显示全部楼层 |阅读模式

  设备分裂问题给Java ME应用程序开发带来了不小的麻烦,在不同设备之间移植应用程序通常会遇到各种各样的问题。本文介绍如何使用Netbeans IDE 5.0提供的预处理代码功能解决设备分裂问题。
  尽管Java ME平台的发展是有标准可依的,JCP组织通过JSR规范了Java ME平台的特性。但是,由于规范中包含众多的可选特性,这样各个厂商在实现过程中可能采取不同的方案。以MMAPI(JSR 135)的实现为例,Nokia 7610和SonyEricsson K700都支持MMAPI,同时也都支持图像捕获的功能,但是在支持的图片格式上以及图片的尺寸上却存在着差别。Nokia 7610支持PNG和JPEG格式,但是SonyEricsson K700只支持JPEG格式,且图片的尺寸必须为120*160。这样就造成了一套应用程序很难在不同机型之间移植的问题,如果为每个机型都维持一套代码又显得效率不高。如何解决上述问题呢?
Mobility Pack提供的预处理代码功能正是为这个问题设计的,你可以通过预处理功能,维护着一套代码,但是却可以编译出多套应用程序。每套应用程序可以针对一个机型或者一系列的机型。下面通过一个例子yanshi如何使用预处理代码的功能。

首先你需要安装Netbeans IDE 5.0和Mobility Pack 5.0,然后将Motorola J2ME SDK 5.4.2和SonyEricsson J2ME SDK 2.2.3集成到Netbeans IDE中。方法参考下面的文章

安装Netbeans IDE 4.1中文版

使用Netbeans IDE 4.1和Mobility Pack开发J2ME应用程序

使用Netbeans IDE集成Motorola J2ME SDK 5.4.2

下面新建一个Mobile项目,命名为procode。然后新建TestMIDlet,我们的目的是演示如何使用预处理代码,因此例子比较简单,TestMIDlet代码如下所示:

package com.sun.df;


import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;


/**

*

* @author mingjava

* @version

*/

public class TestMIDlet extends MIDlet {


private Display display = null;

private MainCanvas canvas = null;


public void startApp() {

if(display == null){

display = Display.getDisplay(this);

canvas = new MainCanvas();

}

display.setCurrent(canvas);

}


public void pauseApp() {

}


public void destroyApp(boolean unconditional) {

}

}

Netbeans IDE之所以可以根据预处理代码编译出多套应用程序,原因在于它将项目与配置绑定到一起。集成了Motorola和SonyEricsson的SDK后,我们就可以把A780和SonyEricsson_K700_Emu的配置添加到项目中,方法是选择Set Active project Configuration——add Configuration to project。如下图所示:



MainCanvas的任务是在手机的屏幕上显示一个字符串,这个字符串应该根据机型不同而不同。例如在Motorola A780上显示A780,在K700上显示K700。我们在MainCanvas的构造器中对变量message进行赋值,在代码编辑器中选择右键,Preprocessor Blocks——Create if/Else Block,向MainCanvas中插入预处理代码,如下图所示:





MainCanvas的源码如下所示:

package com.sun.df;

import javax.microedition.lcdui.Canvas;

import javax.microedition.lcdui.Graphics;


/**

*

* @author mingjava

*/

public class MainCanvas extends Canvas {


private String message = "WTK 2.2";

public MainCanvas() {

//#if A780

//# message = "Motorola A780";

//#elif SonyEricsson_K700_Emu

//# message = "SonyEricsson K700";

//#endif

}


public void paint(Graphics g){

int color = g.getColor();

g.setColor(0xFFFFFF);

g.fillRect(0,0,getWidth(),getHeight());

g.setColor(color);


g.drawString(message,getWidth()/2,getHeight()/2,Graphics.HCENTER|Graphics.BASELINE);


}

}

在Motorola A780和SonyEricsson K700的模拟器上运行TestMIDlet,界面如下所示。我们通过一套代码维护了多套应用程序。选择项目,build all project configuration,可以在项目的dist目录生成多套MIDlet套件。由此可见,预处理代码功能的确是解决设备分裂问题的利器。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 01:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表