澳门新葡亰app官方下载:让JavaME程序真正RunnbspAnywhere

[导读]Writeonce,runanywhere是JAVA的口号,但在J2ME平台上做的利用,要想不篡改代码就runanywhere,难度是很大年夜的。假如要把一个利用法度榜样做到让大年夜多半的机型都适用,就要斟酌到方方面面,其难度是相昔时夜的。


当前位置: 主页 >


[导读]Write once,run anywhere 是JAVA的口号,但在J2ME平台上做的利用,要想不篡改代码就run anywhere,难度是很大年夜的。假如要把一个利用法度榜样做到让大年夜多半的机型都适用,就要斟酌到方方面面,其难度是相昔时夜的。比如给百宝箱做游戏,上线机型大年夜多是MIDP1。0的机械,感到移植中最麻烦的还要数声音部分的API,必须根据各个机型来篡改

"Write once,run anywhere" 是JAVA的口号,但在J2ME平台上做的利用,要想不篡改代码就run anywhere,难度是很大年夜的。假如要把一个利用法度榜样做到让大年夜多半的机型都澳门新葡亰app官方下载适用,就要斟酌到方方面面,其难度是相昔时夜的。

比如给百宝箱做游戏,上线机澳门新葡亰app官方下载型大年夜多是MIDP1。0的机械,感到移植中最麻烦的还要数声音部分的API,必须根据各个机型来篡改。虽然图象还对照轻易做成自适应的,但声音部分就一样平常就只能根据各个机型来篡改。

下面供给一种办理规划,可以让J2ME法度榜样在运行时自动加载该机型支持的声音资本并用该

机型的声音API来播放。

关键问题: 1。各机型供给的播放音乐的API都有所不合,分外是较老的机型。

必要在运行时根据机型自动加载。

2。各机型支持的声音的资本文件也不合。必要在运行时根据机型自动加载。

3。各机型的JVM不合,多若干少有一些对照特其余BUG。

办理规划:

1. 原则:能用标准API就用标准API,不能用的话,就用各个机型自身的API。

// Player types

static final int STANDARD = 0; //For MIDI

static final int NOKIA = 1; //For ott

static final int SAMSUNG = 2; //For mmf

static final int NEC = 3; //For MIDI

static final String[] supportedPlayerTypes = {

"javax.microedition.media.Player", //STANDARD API

"com.nokia.mid.sound.Sound", // Nokia

"com.samsung.util.AudioClip", //samsung

"com.nec.media.AudioClip", //nec

};

下面使用反射机制来动态加载:

public void determinePlayerType() {

// use most -> less use

isSupportSound = true;

for (int i = 0; i 留意 :用 System.getProperty("microedition.platform")来确定机型是不保险的,由于有的机型只是简单地返回J2ME platform。

遗留问题:

[1] NecN澳门新葡亰app官方下载820 在运行 Class.forName("javax.microedition.media.Player");时刻会立即报“利用法度榜样掉足”,而不是抛出“ClassNotFoundException”非常。这是该机型JVM的特点(BUG),以是给NecN820的代码中必须注释掉落javax.microedition.media.Player的统统信息。这就得篡改代码,有违我们的初衷,切实着实是个遗憾。(预计NEC的机型都素这样的)

[2] 这个类还有待扩展,以支持更多机型。并加入震荡部分的AP澳门新葡亰app官方下载I。理论上可以包孕所有的机型。但实际澳门新葡亰app官方下载利用中只要包孕必要用到的机型相关API就可以了。

测试机型: 在 三星E708,MOTOV600,NOKIA 7650 ,NecN820(注释掉落javax.microedition.media.Player相关内容)上均测试经由过程。

另:关于法度榜样的编译,可以把各个机型的API做为LIB加入eclipse工程。

发表评论
加载中...

相关文章