WEB开发网
开发学院手机开发Ophone 开发 J2ME如何移植到ophone 阅读

J2ME如何移植到ophone

 2010-10-05 01:56:49 来源:WEB开发网   
核心提示:下面我们一步一步实现J2ME API在OPHONE OS上的移植,1、 入口程序MIDlet 学过J2ME的开发人员都知道J2ME有一个主体类MIDlet类,J2ME如何移植到ophone(2),它是程序管理接口,调用startApp(),这时候就需要移植人员,自己来实现一些相关的类,进入应用程序,同样

下面我们一步一步实现J2ME API在OPHONE OS上的移植。

1、 入口程序MIDlet

学过J2ME的开发人员都知道J2ME有一个主体类MIDlet类,它是程序管理接口,调用startApp(),进入应用程序。

同样,在OPHONE OS平台中同样有一个主体类Activity,调用onCreate(savedInstanceState)进入某个交互界面。

下面我们将通过继承Activity模拟实现J2ME中的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); 
} 
int getGameAction(int keyCode) { 
return 0; 
} 
int getKeyCode(int gameAction) { 
return 0; 
} 
String getKeyName(int keyCode) { 
return "key"; 
} 
boolean hasPointerEvents() { 
return true; 
} 
boolean hasPointerMotionEvents() { 
return true; 
} 
boolean hasRepeatEvents() { 
return true; 
} 
protected void hideNotify() { 
} 
boolean isDoubleBuffered() { 
return true; 
} 
protected void keyPressed(int keyCode) { 
} 
protected void keyReleased(int keyCode) { 
} 
protected void keyRepeated(int keyCode) { 
} 
protected abstract void paint(Graphics g); 
protected void pointerDragged(int x, int y) { 
} 
protected void pointerPressed(int x, int y) { 
} 
protected void pointerReleased(int x, int y) { 
} 
void repaint() { 
} 
void repaint(int x, int y, int width, int height) { 
} 
void serviceRepaints() { 
} 
void setFullScreenMode(boolean mode) { 
} 
protected void showNotify() { 
} 
protected void sizeChanged(int w, int h) { 
} 
}

3、Graphics

J2ME中的Graphics类和OPhone OS中的paint类相似。在移植中,要用OPhone OS类库实现J2ME中的Graphics类,我们在实现的过程中可以对Graphics对象进行修饰,通过整合OPHONE OS 中Canvas并调类库中的Paint类和Color类的方法来实现。比如:

Graphics
 

public class Graphics { 
public final static int VCENTER = 0; 
public final static int TOP = 1; 
public final static int SOLID = 2; 
public final static int RIGHT = 3; 
public final static int LEFT = 4; 
public final static int HCENTER = 5; 
public final static int DOTTED = 6; 
public final static int BOTTOM = 7; 
public final static int 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的一些具体实现方法,从而用OPHONE OS类库实现了J2ME的框架,做到了两个平台之间很好的移植。

从上面几个例子可以看出两个平台的框架具有很多相似性,这就为两个平台之间的移植创造了条件。同时我们也会看到,两个平台之间存在一定的差异性,一些在J2ME中的类和方法无法通过直接继承或者调用OPhone OS来实现,这时候就需要移植人员,自己来实现一些相关的类,这也是移植过程中需要我们去努力克服的困难。

上一页  1 2 

Tags:J2ME 移植 ophone

编辑录入:coldstar [复制链接] [打 印]
赞助商链接