J2me api 移植到OPhone,经验谈

问题描述

中国拥有世界最庞大的电信客户群,仅移动用户就达4亿,3G在中国有最大的市场做后盾,无论现在的市场发展如何的困难,3G费用的降低是大势所趋,不久的将来,必然形成巨大的3G浪潮,3G手机会如雨后春笋一般,充满祖国大地,如今各大移动通信运营商和移动终端开发商都看到广大的前景,在为3G做最后的准备。最近作为中国移动业务最大的运营商中国移动公司推出了自己的开发平台:OPhoneOS系统。OPhoneOS采用linux2.6内核,兼容Android应用。OPhone是中国移动在这次3G浪潮来临前打造的主力航空母舰,与中移动无线业务平台的对接,OPhone将承载大量3G业务应用。大量的软件开发企业将会把新的阵地放到移动平台上来,软件如:手机电视、炒股、网游,企业应用MIS,移动办公,都将会是移动设备发展的热点,这样也就需要大量的开发人员,由于手机开发人员稀少,收入比一般pc开发人员会更高。由于现在中国移动的大力推广,如果企业和创业者依托mmarket也会有不错的前景,OPhone作为中国移动大力推广的战略平台潜力巨大。Android移植除了硬件外最重要的是Java平台之间的移植,目前市面上JavaVM主要使用的是Sun公司的JavaMicroEdition。而GoogleAndroid平台采用的是自己开发的Dalvik。如何从过去J2ME移植到谷歌手机平台呢?虽然是不同的开发环境,但是所要实现的功能都是相近的,因此从功能的角度可以很好的理解OPHONEOS平台和J2ME平台之间的联系和区别。总结一下,可以发现从以下四个方面可以很好的理解两个平台之间移植。如果代码框架写得好,逻辑部分基本不需要怎么变化,只需要把和平台相关的接口转换一下就可以了。  1)用户界面  这一点是J2ME移植到Dalvik上最麻烦的地方,Android的图形类和SunJaveME有了很大的不同,同时m3到m5SDK上也有更大改变的趋势,导致了移植时出现很多需要自己去实现相关类,使最终程序的运行效率可能会受影响,真机没有出现的情况下通过开发板可以适当的测试出性能损失。这一点需要花费很长时间去学习,也是未来我们着重需要讲解的。  2)数据存储  这方面就显示出Android平台比SunJava强大的地方了,Android平台附带了一个SQLite数据库,和SunJ2ME中的RecordManagementSystem(RMS)相比在功能上有了很大的提升,同时在性能上也会有不俗的表现,在过去开发J2ME软件时一直都采取的是如果数据比较简单使用自定义的二进制格式或XML代替。  3)网络数据  这部分Android平台的做法是importSun中的I/O读写库InputStream这样的类,同时网络相关的仍然采用Sun的URLConnection类进行操作,基本上没有变化,移植时注意下设备的栈空间简单的调整下就可以了。  4)媒体播放这部分在Android系统上就有了大幅的改变,官方推荐使用MediaPlayer播放类,该类支持mp3、mid、wav、mp4等常规媒体格式的播放,相比J2ME中提供的就灵活强大的多。下面我们一步一步实现J2MEAPI在OPHONEOS上的移植。1、入口程序MIDlet学过J2ME的开发人员都知道J2ME有一个主体类MIDlet类,它是程序管理接口,调用startApp(),进入应用程序。同样,在OPHONEOS平台中同样有一个主体类Activity,调用onCreate(savedInstanceState)进入某个交互界面。下面我们将通过继承Activity模拟实现J2ME中的MIDlet类和方法。publicabstractclassMIDletextendsActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);startApp();}publicabstractvoiddestroyApp(booleanunconditional);publicStringgetAppProperty(Stringkey){returnnull;}publicabstractvoidstartApp();publicvoidnotifyDestroyed(){}publicvoidnotifyPaused(){}publicvoidpauseApp(){}publicvoidplatformRequest(StringURL){}publicvoidresumeRequest(){}}2、Canvas同样在J2ME中画板Canvas类与OPhoneOS中的View类相似。publicabstractclassCanvasextendsDisplayable{publicCanvas(MIDletcontext){super(context);}Graphicsg=newGraphics();publicvoidonDraw(android.graphics.Canvascanvas){g.bind(canvas);paint(g);}intgetGameAction(intkeyCode){return0;}intgetKeyCode(intgameAction){return0;}StringgetKeyName(intkeyCode){return"key";}booleanhasPointerEvents(){returntrue;}booleanhasPointerMotionEvents(){returntrue;}booleanhasRepeatEvents(){returntrue;}protectedvoidhideNotify(){}booleanisDoubleBuffered(){returntrue;}protectedvoidkeyPressed(intkeyCode){}protectedvoidkeyReleased(intkeyCode){}protectedvoidkeyRepeated(intkeyCode){}protectedabstractvoidpaint(Graphicsg);protectedvoidpointerDragged(intx,inty){}protectedvoidpointerPressed(intx,inty){}protectedvoidpointerReleased(intx,inty){}voidrepaint(){}voidrepaint(intx,inty,intwidth,intheight){}voidserviceRepaints(){}voidsetFullScreenMode(booleanmode){}protectedvoidshowNotify(){}protectedvoidsizeChanged(intw,inth){}}3、GraphicsJ2ME中的Graphics类和OPhoneOS中的paint类相似。在移植中,要用OPhoneOS类库实现J2ME中的Graphics类,我们在实现的过程中可以对Graphics对象进行修饰,通过整合OPHONEOS中Canvas并调类库中的Paint类和Color类的方法来实现。比如:GraphicspublicclassGraphics{publicfinalstaticintVCENTER=0;publicfinalstaticintTOP=1;publicfinalstaticintSOLID=2;publicfinalstaticintRIGHT=3;publicfinalstaticintLEFT=4;publicfinalstaticintHCENTER=5;publicfinalstaticintDOTTED=6;publicfinalstaticintBOTTOM=7;publicfinalstaticintBASELINE=8;Canvasdist;privatefinalPaintpaint=newPaint();publicvoidbind(Canvascanvas){dist=canvas;}publicvoidsetColor(interaseColour){}publicvoiddrawImage(Imageimg,intx,inty,intanchor){dist.drawBitmap(img.getTp(),x,y,paint);}}}上面是我们重新定义的Graphics类,在其方法的实现上,我们调用了OPHONEOS的一些具体实现方法,从而用OPHONEOS类库实现了J2ME的框架,做到了两个平台之间很好的移植。从上面几个例子可以看出两个平台的框架具有很多相似性,这就为两个平台之间的移植创造了条件。同时我们也会看到,两个平台之间存在一定的差异性,一些在J2ME中的类和方法无法通过直接继承或者调用OPhoneOS来实现,这时候就需要移植人员,自己来实现一些相关的类,这也是移植过程中需要我们去努力克服的困难。相关教程参考http://www.oms-sdn.com/?id=logo网站

解决方案

解决方案二:
移植api后,发现能够进行javame程序的2次开发并且能够增加ohpone的特有功能,在其他javame的运行环境中是能实现吗?我看很悬~~~~~~
解决方案三:
有些问题我不明白,都说J2ME的程序能移植到Ophone上?但是Ophone是基于什么的?这些都好像很复杂啊?
解决方案四:
一大堆的这个,"publicvoidbind(Canvascanvas){dist=canvas;}publicvoidsetColor(interaseColour){}publicvoiddrawImage(Imageimg,intx,inty,intanchor){dist.drawBitmap(img.getTp(),x,y,paint);}Bind方法是做什么用的?,看不懂。"
解决方案五:
该回复于2009-09-11 13:40:16被版主删除
解决方案六:
,楼主可以多说一下这方面的知识,了解到,可以先移植低级UI和相关的IO操作类,实现部分常用的高级UI,可以满足大部分运行软件的移植。
解决方案七:
哎不该不读书啊现在好了想了解下什么也看不懂
解决方案八:
这个和读书一点关系也没有只要你努力了现在开始一样能学会的
解决方案九:
连接错了吧,直接跳转到是ophonesdn.com.LZ是这么?
解决方案十:
学习一下啊
解决方案十一:
要想挣钱多,就去做。没什么累不累的。
解决方案十二:
Iphone也正式宣布走入中国。说是苹果监督联通销售,能卖多少,怎么抗衡水货泛滥的情况。看看再说吧。
解决方案十三:
呵呵,既然说到两phone之战,个人认为联通干不过移动。移动太有钱了。
解决方案十四:
我现在用天翼,实话说上网很差,或许我应该再等等3G网络覆盖。另外两款不知道,因为我住在机场附近,所以3G当ADSL用。但是话说回来API转OPHONE上,作为新事物,也只有慧眼识俊的人去抢先登陆。这也就是第一个吃螃蟹的人。吃肉还是被夹自己知道。
解决方案十五:
移动是有钱,国内的手机市场它就占了2/3,人家家底厚,转行当发行商也是可以理解。
解决方案:
有钱就是爷。世界真理。
解决方案:
dingadinga
解决方案:
UP
解决方案:
移动的用户多多啊,比联通多多啦
解决方案:
移动移植,快速介入,寻找,查询,验证,交换,中断。
解决方案:
学习中!
解决方案:
学习了
解决方案:
恩,学习学习
解决方案:
顶一下~~~~~~~~~~~~~~
解决方案:
顶一下
解决方案:
up!dsadas
解决方案:
学习!谢谢楼主!
解决方案:

解决方案:
啊,还可以这样吗?
解决方案:
好啊~~~
解决方案:
谢谢楼主啊
解决方案:
太感谢了
解决方案:
好东西啊thinks
解决方案:
恩还不错啊!!!!!!
解决方案:
恩还不错啊!!!!!!
解决方案:
1又一个平台,平台统一对开发人员最好
解决方案:
顶一下
解决方案:
好东西顶你!
解决方案:
哈哈,是这个样的。有道理有道理、
解决方案:
好东西好东西
解决方案:
同上同上~
解决方案:
高手
解决方案:
顶下,不做移动的客户,就做移动的主。。。
解决方案:
非常感谢楼主。
解决方案:
有钱未必就是爷,他有可能是妞。
解决方案:
顶!
解决方案:
ding!
解决方案:
拜读了,顶
解决方案:

解决方案:
是有期待也有无奈啊!只要有耐心,多一个平台其实就是多一个把代码改改就拿去骗钱的机会。不过话说最近耐心好被磨得太多了啊,还是憧憬刚学软件那会“一次编码,任意平台运行”的梦想啊!
解决方案:
CGK

时间: 2024-10-28 17:41:41

J2me api 移植到OPhone,经验谈的相关文章

流媒体程序开发之H264解码器移植到OPhone

1.移植目标 将H.264解码器移植到OPhone操作系统之上(NDK+C),并写一个测试程序(OPhoneSDK+Java)测试解码库是否正常运行,下面是解码时的截图: 开发之H264解码器移植到OPhone-网络流媒体解码器"> OPhone的模拟器和Mobile的模拟器一样是模拟ARM指令的,不像Symbian模拟器一样执行的是本地代码,所以在模拟器上模拟出来的效率会比真实手机上的效率要低,之前这款解码器已经优化到在nokia 6600(相当低端的一款手机,CPU主频才120Hz)上

流媒体程序开发之:H264解码器移植到OPhone

1.   移植目标        将H.264解码器移植到OPhone操作系统之上(NDK+C),并写一个测试程序(OPhoneSDK+Java)测试解码库是否正常运行,下面是解码时的截图:         OPhone的模拟器和Mobile的模拟器一样是模拟ARM指令的,不像Symbian模拟器一样执行的是本地代码,所以在模拟器上模拟出来的效率会比 真实手机上的效率要低,之前这款解码器已经优化到在nokia 6600(相当低端的一款手机,CPU主频才120Hz)上做到在线播放.   2. 面向

如何把一个j2me游戏移植到android

问题描述 希望最好有个范例或者能教我qq283413152邮箱langkexiaoyi@gmail.com 解决方案 解决方案二:生成apk包,在Android虚拟机上运行解决方案三:引用1楼houtian80的回复: 生成apk包,在Android虚拟机上运行 怎么生成apk解决方案四:把你J2ME的代码放在android的项目那里,根据android的用法来移植:比如,android是activit类是J2ME的MIDlet类,你就将MIDlet的东西写在android那个activit类里

【Windows10 IoT开发系列】API 移植工具

原文:[Windows10 IoT开发系列]API 移植工具 Windows 10 IoT Core 中是否提供你的当前 Win32 应用程序或库所依赖的 API? 如果不提供,是否存在可使用的等效 API? 此工具可以为你回答这些问题,并协助你将你的当前 Win32 应用程序和库迁移到 Windows IoT Core. Windows 10 IoT 核心版 API 移植工具可在 ms-iot/iot-utilities  github 存储库中找到.下载存储库 zip 并将 IoTAPIPo

Nokia的J2ME扩展API——UI API使用之DeviceControl类

Nokia在标准的J2ME API的基础上,在所有Nokia的手机中扩展了一个功能,这些功能以扩展API的形式提供给开发人员,这些扩展API就是著名的Nokia UI API.      关于Nokia UI API的文档,可以在Nokia Developer's Suit安装目录下的Devices下的任意一个模拟器的docs目录中找到.       DeviceControl类是一个控制手机背景灯闪烁以及手机震动的类,该类属于com.nokia.mid.ui包,在使用以前需要引入该包.其中包含

学习J2ME可以从事的工作种类

学习J2ME可以从事的工作种类 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb          现在J2ME技术可以说相当的火暴,这里介绍一些学好了J2ME之后可以从事的工作的种类: 1.  J2ME游戏开发人员 根据游戏策划或者文档要求,在某种特定的机型(以Nokia S40或S60居多)开发游戏程序. 这是现在大部分J2ME程序员从事的工作. 需要熟练掌握:高级用户界面.低级用户界面.线程,如果是网络游戏,还需要熟练网络编程. 2.  J2ME应用开发人员

J2ME程序开发新手入门九大要点

程序     一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识: 1.Java语法基础:包括基本数据类型.关键字.运算符等等     2.面向对象的思想:类和对象的概念,继承和多态等等. 3.异常处理 4.多线程 J2ME中没有用

J2ME程序开发全方位基础讲解汇总

程序     一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识:   1.Java语法基础:包括基本数据类型.关键字.运算符等等   2.面向对象的思想:类和对象的概念,继承和多态等等.   3.异常处理   4.多线程 J2ME

J2ME手机程序开发中的九大注意要点

程序 一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识: 1.Java语法基础:包括基本数据类型.关键字.运算符等等 2.面向对象的思想:类和对象的概念,继承和多态等等. 3.异常处理 4.多线程 J2ME中没有用到的Java基础