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来实现,这时候就需要移植人员,自己来实现一些相关的类,这也是移植过程中需要我们去努力克服的困难。
- ››OPhone的未来任重而道远
- ››OPhone已死 是中移动付出代价的时候了
- ››OPhone开发之下载
- ››J2ME 与 Android 、Ophone OS图形开发探讨
- ››移植Windows自宿主WCF服务到Linux/Mono2.8
- ››J2ME如何移植到ophone
- ››J2ME Personal Information Management (PIM) 概览...
- ››Ophone用户抱怨成移动“小白鼠” 找不到3G信号
- ››移植代码到symbian的注意事项
- ››Ophone及Android入门教程
- ››ophone与Android差异性及创新
- ››移植android 到定制开发板
更多精彩
赞助商链接