- 浏览: 235592 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
lliiqiang:
打开多个页面就没有办法同时提交了。
jsp 表单防止重复提交(简单版) -
mponeno:
check,只是判断空的,应该没什么所谓,用StringUti ...
java判断文件是否为图片 已图片后缀名为依据 -
puqingluochen:
源码能打包发给我吗,谢谢了。
Extjs Grid 编辑 新增 删除 保存 (爽) -
java麦克斯泰:
getJSONString()
这个方法都没调用 不是完整 ...
extjs tree异步加载 完整版 -
yehoubin:
你好,我的虚拟机上的是Mac OS X leopard的,可以 ...
iPad 和 iPhone Simulator Mac.OS.X.Leopard
中国拥有世界最庞大的电信客户群,仅移动用户就达7亿,3G在中国有最大的市场做后盾,无论现在的市场发展如何的困难,3G费用的降低是大势所趋,不久的将来,必然形成巨大的3G浪潮,3G手机会如雨后春笋一般,充满祖国大地,如今各大移动通信运营商和移动终端开发商都看到广大的前景,在为3G做最后的准备。最近作为中国移动业务最大的运营商中国移动公司推出了自己的开发平台:OPhone OS系统。OPhone OS采用linux2.6内核,兼容Android应用。
OPhone是中国移动在这次3G浪潮来临前打造的主力航空母舰,与中移动无线业务平台的对接,OPhone将承载大量3G业务应用。大量的软件开发企业将会把新的阵地放到移动平台上来,软件如:手机电视、炒股、网游,企业应用MIS,移动办公,都将会是移动设备发展的热点,这样也就需要大量的开发人员,由于手机开发人员稀少,收入比一般pc开发人员会更高。由于现在中国移动的大力推广,如果企业和创业者依托mmarket也会有不错的前景,OPhone作为中国移动大力推广的战略平台潜力巨大。
Android移植除了硬件外最重要的是Java平台之间的移植,目前市面上Java VM主要使用的是Sun公司的Java Micro Edition。而Google Android平台采用的是自己开发的Dalvik。如何从过去J2ME移植到谷歌手机平台呢?
虽然是不同的开发环境,但是所要实现的功能都是相近的,因此从功能的角度可以很好的理解OPHONE OS平台和J2ME平台之间的联系和区别。总结一下,可以发现从以下四个方面可以很好的理解两个平台之间移植。
如果代码框架写得好,逻辑部分基本不需要怎么变化,只需要把和平台相关的接口转换一下就可以了。
1)用户界面
这一点是J2ME移植到Dalvik上最麻烦的地方,Android的图形类和Sun Jave ME有了很大的不同,同时m3到m5 SDK上也有更大改变的趋势,导致了移植时出现很多需要自己去实现相关类,使最终程序的运行效率可能会受影响,真机没有出现的情况下通过开发板可以适当的 测试出性能损失。这一点需要花费很长时间去学习,也是未来我们着重需要讲解的。
2)数据存储
这方面就显示出Android平台比Sun Java强大的地方了,Android平台附带了一个SQLite数据库,和Sun J2ME中的Record Management System (RMS)相比在功能上有了很大的提升,同时在性能上也会有不俗的表现,在过去开发J2ME软件时一直都采取的是如果数据比较简单使用自定义的二进制格式 或XML代替。
3)网络数据
这部分Android平台的做法是import Sun中的I/O读写库InputStream这样的类,同时网络相关的仍然采用Sun的URLConnection类进行操作,基本上没有变化,移植时注意下设备的栈空间简单的调整下就可以了。
4)媒体播放
这部分在Android系统上就有了大幅的改变,官方推荐使用MediaPlayer播放类,该类支持mp3、mid、wav、mp4等常规媒体格式的播放,相比J2ME中提供的就灵活强大的多。
下面我们一步一步实现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来实现,这时候就需要移植人员,自己来实现一些相关的类,这也是移植过程中需要我们去努力克服的困难。
本文转自沈大海的笔记
http://student.csdn.net/space.php?uid=121497&do=blog&id=15791
发表评论
-
点阵字库在J2ME中的实现
2010-02-05 14:05 1169点阵字库在J2ME中的实现 关于点阵字库在J ... -
手机编程关于socket实例代码
2009-11-13 23:39 1195最近有很多网友也许是刚刚接触socket 这个套接字 协议通讯 ... -
KXML:J2ME中的XML语法分析利器
2009-11-19 15:19 1457Enhydra的KXML是一个只占 ... -
用J2ME实现简单电子邮件发送功能
2009-11-21 12:56 1038在GCF中并没有提供给我们能够发送电子邮件的API,J2ME的 ... -
J2ME 下的 Base64的编码与解码
2009-11-23 12:05 1253以前以为用J2EE里面的rt.jar 就能成功的引入到j2me ... -
五十音图
2009-11-27 11:34 1384日语的每个假名代表一 ... -
J2me蓝牙打印开发
2009-12-19 21:49 1765Java代码 Stringurl=ser ... -
WM 注册表 常用设置
2010-01-21 17:36 35701、注册表内容 大致上可以分为四组 HKEY_CLASSES_ ... -
iPad 和 iPhone Simulator Mac.OS.X.Leopard
2010-01-29 17:13 14483这两天玩了玩 XP 系统 通过vmware 装个 Mac. ... -
J2ME开发模拟器KEmulator简介及使用
2010-01-17 16:23 3822j2me开发中少不了每天跟 ... -
J2ME 使用的字体 Font 类
2009-12-23 10:01 1296在J2ME手机编程中使用字体 在J2ME手机编程中,可以 ... -
J2ME 发短信 实例
2009-12-21 20:17 1954package com.wanchong.duanxin; ... -
j2me中的文件操作包JSR75入门讲解
2009-12-13 15:38 2172JSR 75(PDA Optional Packages fo ... -
J2ME 文件下载实例 jar包为例
2009-12-13 14:56 3344package com.wanchong; /** * 作者 ... -
J2ME 文件操作
2009-12-13 12:04 1706package com.dw.contactadapter.b ... -
J2ME 图片下载实例 简洁明了
2009-12-13 11:43 1356package com.wanchong; /** * 作者 ... -
J2ME文件上传实例(FileConnector链接文件系统,非RMS)
2009-12-13 11:36 1392客户端: import java.io.InputStre ... -
汉诺塔程序的j2me实现(触摸屏)
2009-09-05 01:01 1404汉诺塔程序的j2me实现(触摸屏) import javax ... -
手机触摸屏程序开发
2009-08-09 17:32 1879使用J2ME技术实现手机触摸屏开发的方法: 首先的修改调试 ... -
Socket模拟Http协议
2009-05-20 14:55 1514接收数据方法: /**/ /// <summ ...
相关推荐
手机游戏是目前深受广大手机用户喜爱的一种娱乐软件,各大运营商都有自己的手机游戏平台,比如中国移动的百宝箱,MM平台,当然...有了这个优点也就意味着所有的J2ME程序都可以非常快速的迁移到OPhone(Adnroid)平台。
【标题】"J2ME移植Android引擎"涉及的是将基于Java Micro Edition (J2ME) 开发的游戏或应用转换到Android平台的过程。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统,而Android则是一个开源的操作系统,...
【劲乐团 J2ME 移植】是一款将热门的音乐节奏游戏《劲乐团》移植到Java ME(J2ME)平台上的作品。J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门用于开发在移动设备、嵌入式系统等资源受限的环境中的...
当需要将J2ME应用移植到Android时,会遇到一些兼容性问题,因为两者的核心库和API有所差异。本篇文章将深入探讨如何将J2ME中的`Image`、`Font`、`Graphics`等关键类进行封装,以便在Android平台上运行。 首先,我们...
j2me移植到android 代码替换开发包:替换j2me平台的Graphics ,Image ,HttpConntion,RecordStore,Player,Connector,Font,Canvas...
在实际应用中,移植J2ME到ARM-Linux系统可以为各种嵌入式设备提供丰富的Java应用程序支持,例如智能手机、数字电视、工业控制系统等。这种移植方案的可行性已经在实验中得到验证,表明了J2ME在嵌入式领域的广阔前景...
然而,随着智能手机的普及,Android成为了主流的操作系统,许多开发者和用户开始寻找将J2ME应用移植到Android平台的方法。本文将详细介绍J2ME应用移植到Android的步骤、挑战以及解决方案。 首先,理解两者之间的...
J2ME游戏移植到Android平台的技术要点 在本文中,我们将探讨如何将J2ME游戏移植到Android平台上。作为一名IT行业大师,我将详细地解释J2ME游戏移植到Android平台的技术要点。 首先, lets talk about the ...
【J2ME游戏移植到Android手机】是一个技术性较强的主题,涉及到两个不同的移动平台:Java ME(J2ME)和Android。J2ME是早期移动设备上广泛使用的开发框架,而Android则是现代智能手机的主要操作系统。当需要将J2ME...
### J2ME及其移植2011 #### Java家族及J2ME背景 - **Java的历史与发展** - Java自1995年由Sun Microsystems发布以来,迅速成为了跨平台编程的重要语言之一。随着时间的发展,Java逐渐演化为了适用于不同场景的多...
笔者最近需要移植一个J2ME的项目到Android平台上,所以抽空研究了一下Android平台的接口规范。 Android平台除了在一些接口上采用了和J2ME不一样的名称之外,基本的接口内容还是一样的,那么移植J2ME到Android平台最...
**Eclipse的J2ME和Ophone初学者配置指南** 在移动开发领域,Java ME(J2ME)和Ophone是两个重要的平台,用于构建功能手机和早期智能手机的应用程序。Eclipse作为流行的集成开发环境(IDE),为这两个平台提供了强大...
J2ME游戏移植机型 具体内容 jar包大小 屏幕尺寸 厂商 移植建议
### 浅谈J2me游戏如何快速移植到Android 对于许多从事J2ME开发工作的人员而言,可能会突然间面临一个紧迫的需求:那就是将原本在J2ME平台上的游戏移植到Android平台上。乍一看,这似乎是一项庞大且复杂的工程,但...
在本文中,我们将深入探讨如何将J2ME游戏移植到Android平台的关键点,以及两者之间的主要差异。 首先,让我们简要了解一下J2ME和Android的基础。J2ME(Java 2 Micro Edition)是Java 2的一个子集,设计用于嵌入式...
移植J2ME到BREW平台的过程通常包括以下几个关键步骤: 1. **理解目标平台**:首先,需要深入理解BREW平台的架构和运行机制,包括其内存管理、线程模型、图形库和网络API等。 2. **选择移植策略**:可以采用完全...