J2ME移植Android

J2ME到Android应用移植指南:使用SDK 1.16 本文还有配套的精品资源,点击获取 简介:J2ME是Java平台的一个子集,用于开发资源有限的设备。随着Android平台的普及,开发者需要将J2ME应用程序迁移到Android上。j2me_android_sdk1.16是一个SDK,旨在简化J2ME到Android的移植过程。该SDK通过封装J2ME API,让开发者可以使用熟悉的J2ME接口构建Android应用。为了成... 阅读详情
 

本文主要介绍如何把J2ME游戏移植到Android平台的方法,如果你是个J2ME的游戏开发者,并且想把一些J2ME游戏快速地迁移到Android平台,那么相信本文会对你有所帮助。当然,如果您非说可以安装个JVM来实现,那您可以直接跳过本文了。

由于手比较懒,对J2ME的描述不是很详细,还望多包涵。废话不多说,请看下文:

 

1.      平台比较

J2me:

      开发平台

Android:

      操作系统

 

2.      工程结构比较(源代码,资源文件夹,图片,数据)

J2me:

      Res:资源文件

      Src:源代码

Android:

      Src:源代码

      Res\drawable:图片

      Res\raw:声音

      Res\values:字符串

      Assets:数据文件

 

3.      安装包比较

J2me:

      Jad,jar

Android:

      apk

 

4.      代码结构比较

J2me:

      MIDlet,Canvas

Android:

      Activity,View

都采用继承的方式,都只有一个MIDlet/Activity,一般都只有一个Canvas/View

 

5.      代码细节比较

 

l  全屏设置

J2me:

      在Canvas类中调用SetFullScreenMode(Boolean)

Android:

      在Activity类中调用

      //设定全屏显示   

      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                

                                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

     

      requestWindowFeature(Window.FEATURE_NO_TITLE);

 

2  获得屏幕尺寸

J2me:

      Canvas类的getHeight()和getWidth()方法

Android:

      int screenWidth,screenHeight;

      WindowManager windowManager = getWindowManager();

      Display display = windowManager.getDefaultDisplay();
            screenWidth = display.getWidth();
              screenHeight = display.getHeight();

 

3 Display

J2me:

      Display dis=Display.getDisplay(MIDlet);

Android:

      Display display = windowManager.getDefaultDisplay();

 

4 画布类

J2me:

      Canvas

Android:

      继承View类,定义构造方法:

      public MyView(Context context)

      {

              super(context);

      }

5 屏幕绘制方法

J2me:

      Paint(Graphics)

Android:

      void onDraw(Canvas g)

 

6 Graphics

J2me:

Android:

 

7 Image的创建

J2me:

      Image.createImage(path);

Android:

      img = BitmapFactory.decodeResource(getResources(),R.drawable.map0);

 

8 Font的创建,Font使用,字体设置

J2me:

Android:

 

9 drawImage

J2me:

Android:

      public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

      多个重载

 

10 字符串绘制

J2me:

Android:

      public native void drawText(String text, float x, float y, Paint paint);

      多个重载

 

11 setClip

J2me:

Android:

      public boolean clipRect(float left, float top, float right, float bottom,Region.Op op)

      最后一个参数为:Region.Op.REPLACE

 

12旋转

J2me:

      drawRegion()

      drawImage() 

Android:

      还没找到好的方法,不过可以先创建一张翻转后的图片,再使用,封装好的代码如下:

      //创建翻转图片

public Bitmap createTransImage(Bitmap img,int trans)

{

//   Bitmap img;

try

{

//         img = BitmapFactory.decodeResource(getResources(),sImg);

 

int width = img.getWidth();

int height = img.getHeight();

 

int newWidth = 200;

int newHeight = 200;

 

// calculate the scale - in this case = 0.4f

float scaleWidth = ((float) newWidth) / width;

float scaleHeight = ((float) newHeight) / height;

 

// createa matrix for the manipulation

Matrix matrix = new Matrix();

// resize the bit map

matrix.postScale(scaleWidth, scaleHeight);

// rotate the Bitmap

int degree=0;

 

Bitmap resizedBitmap=null;

int data[];

int buf;

 

switch(trans)

{

case ROTATE_HOR:

//创建镜像翻转

data=new int [img.getWidth()*img.getHeight()];

img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());

//交换数据

for(int i=0;i<img.getHeight();i++)

for(int j=0;j<img.getWidth()/2;j++)

{

buf=data[i*img.getWidth()+j];

data[i*img.getWidth()+j]=data[img.getWidth()*(i+1)-(j+1)];

data[img.getWidth()*(i+1)-(j+1)]=buf;

}

 

resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),

img.getHeight(), Bitmap.Config.ARGB_4444);;

return resizedBitmap;

case ROTATE_VER:

//创建镜像翻转

data=new int [img.getWidth()*img.getHeight()];

img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());

//交换数据

for(int i=0;i<img.getHeight()/2;i++)

for(int j=0;j<img.getWidth();j++)

{

buf=data[i*img.getWidth()+j];

data[i*img.getWidth()+j]=data[(img.getHeight()-i-1)*img.getWidth()+j];

data[(img.getHeight()-i-1)*img.getWidth()+j]=buf;

}

 

resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),

img.getHeight(), Bitmap.Config.ARGB_4444);;

 

return resizedBitmap;

case ROTATE_90:

matrix.postRotate(90);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

case ROTATE_180:

matrix.postRotate(180);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

case ROTATE_270:

matrix.postRotate(270);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

}

return resizedBitmap;

}

catch (Exception e)

{

return null;

}

}

 

13 drawRect

  J2me:

  Android:

      public void drawRect(float left, float top, float right, float bottom,Paint paint)

 

14  声音处理

  J2me:

  Android:

      创建:

      MediaPlayer coverSound =MediaPlayer.create(Activity,R.raw.back);

      coverSound.prepare();

      播放:

      coverSound.start();

      暂停:

      coverSound.pause();

      声音设置:

      AudioManager vc = (AudioManager)Activity.getSystemService(Context.AUDIO_SERVICE);

      vc.adjustVolume(AudioManager.ADJUST_LOWER, 1);

      关闭:

      coverSound.stop();

      coverSound.release();

   

15 中断处理

  J2me:

  Android:

      public void onWindowFocusChanged(boolean visibility)

 

16 填充屏幕

J2me:

Android:

      CanvasInstance.drawColor(int color)

 

l7 按键处理

  J2me:

  Android:

      要使按键可以被响应,需要在构造函数中调用

      this.setFocusable(true);

      处理方法:

      public boolean onKeyDown(int keyCode, KeyEvent msg)

      public boolean onKeyUp(int keyCode, KeyEvent msg)

 

18 触摸屏处理

  J2me:

  Android:

      public boolean onTouchEvent(MotionEvent me)

      {

          if(me.getAction()==MotionEvent.ACTION_DOWN)

                  。。。。。。

          else if(me.getAction()==MotionEvent.ACTION_UP)

                  。。。。。。

          return true;

      } 

 

19 资源文件的的存放位置及读取

  J2me:

  Android:

      图片:

              Res\drawable:

      声音:

              Res\raw

      数据:

              Asserts

              InputStream is=ActivityInstance.getAssets().open(path + ".dat");

 

20 屏幕刷新,

  J2me:

      repaint()

Android:

      postInvalidate();

 

21  颜色的使用

  J2me:

  Android:

          PaintInstance.setColor(0xAARRGGBB);

 

22 数据保存和读取

J2me:

  Android:

      保存:

          SharedPreferences settings = ActivityInstance.getSharedPreferences(String name,int mode);

          SharedPreferences.Editor editor = settings.edit();

          editor.putBoolean("hasRec", true);

          。。。。。

          editor.putInt("ex",enemy[i].i_X_abs);

          editor.commit();

 

      读取:

          SharedPreferences settings = ActivityInstance.getSharedPreferences                                                                                                           (String name,int mode);

          this.curFaceDirection=settings.getInt("cd", 0);

 

23  填充方式

J2me:

Android:

      paint.setStyle(Style.FILL);

      paint.setStyle(Style.STROKE);

 

24锚点

J2me:

Android:

      setTextAlign(Paint.Align.LEFT);

 

25 连接处理

J2me:

      HttpConnection conn = (HttpConnection) Connector.open(" ", Connector.READ, true);

      conn.setRequestMethod("GET");

      conn.setRequestProperty("accept", "**");

 

      String location = conn.getRequestProperty("location");

      int resCode = conn.getResponseCode();

 

      InputStream stream = conn.getInputStream();

      conn.disconnect();

 

总结了一下,有以下几点不同之处:

 

J2ME中的连接从Connector打开,Android中从URL对象打开

要设置连接是否可读写,J2ME中可以直接在Connector.Open时设置,而在Android中必须使用setDoInput(boolean)和setDoOutput(boolean)方法设置

在J2ME中可以在Connector.Open中对连接进行超时设置,在Android中使用setConnectTimeout(int)不仅可以对连接超时进行设置,还能设置超时时间,参数为0时忽略连接超时

 

 

在使用这些Api时,一定要注意每个参数的意义,比如j2me中drawRect的后两个参数为宽度和高度,而在Android中则变成了结束点的坐标,使用时千万不能想当然的随意传参。

对于Override方法的定义,一定别忘了super.的方式来进行回调。

 

上面基本上把J2ME和Android在2D游戏游戏开发中常用的API做了一个比较,了解这些内容后,基本上是可以比较容易地把ME的游戏游戏平顺地迁 移到Android平台。当然,此处只限制为游戏,如果你想把一款J2ME的软件迁移到Android平台,此方法并不适用,你需要学习android的 控件的使用。

将本地PC游戏轻松移植到Android的秘技-ch02 将本地PC游戏轻松移植到Android的秘技, jni, ndk 立即下载

相关推荐

j2me移植android

j2me移植android,里面有很详细的介绍,下载来看看把!

如何把J2ME游戏移植到Android平台

如何把J2ME游戏移植到Android平台

Working harder, getting stronger! 1440

移植java游戏开发框架libgdx到Android平台.zip

使用java开发的游戏项目源码,可用于毕业设计、课程设计、练手学习等

j2me程序移植入android总结

 思路无非3种:1, 提供一个android下的j2me虚拟机,让j2me程序运行 如OPhone下的百宝箱2, 提供一个转换工具,将j2me的jar放入apk中,重新用apt制作成apk安装程序,并允许,如netmite3, 提供类库中间层,将android中没有的j2me类库用android的程序实现出来,并用android sdk重新编译成apk 如J2AB 考虑到已有j

5366

SAP ABAP BADI_FINS_ACDOC_POSTING_EVENTS 深度应用:KO88工单结算的凭证字段定制与财务数据增强

本文深入探讨了SAP ABAP中BADI_FINS_ACDOC_POSTING_EVENTS在KO88工单结算中的应用,详细解析了如何通过BADI实现财务凭证字段的定制与数据增强。文章提供了从结构扩展到BADI方法实现的完整步骤,包括性能优化建议和实际应用中的测试验证流程,帮助开发人员高效解决企业个性化财务需求。

weixin_26869081的博客 389

Understand-Anything:AI驱动的代码知识图谱,实现项目全局洞察与高效导航

在软件开发中,理解复杂代码库的结构和依赖关系是提升开发效率的关键。传统代码阅读方式往往陷入局部视角,难以快速把握系统全貌。知识图谱技术通过将代码实体(如文件、类、函数)及其关系(调用、继承、依赖)可视化,为代码理解提供了全局视角。这项技术的核心价值在于将静态代码转化为动态、可交互的认知地图,极大降低了系统学习与维护成本。在实际工程中,它广泛应用于新成员快速入职、遗留系统梳理、架构影响分析等场景。本文介绍的Understand-Anything工具,正是基于这一理念,通过多智能体分析管道,自动构建代码的结构图

weixin_42615290的博客 882

J2ME迁移到Android

最近在开发android应用,虽然android应用架构清晰,但毕竟还是要花费时间来重新开发,还是能把J2ME应用移植到android平台J2ME移植到Android平台目前找到有三个方案 1. ME4Android 目标是把J2ME代码一句不动,完整迁移到Android平台,据作者介绍说他的Demo程序已经移植成功。目前为止,一直无法访问该项目的网站,暂时无法获取进一步的...

weixin_30478757的博客 199

Unity3D实战:5分钟搞定RTSP监控视频播放(附完整代码)

本文提供了一套在Unity3D中快速集成RTSP监控视频播放的实战方案。通过采用LibVLCSharp for Unity这一成熟稳定的跨平台中间件,开发者可以轻松实现RTSP流的解码与渲染,并附有完整的C#代码示例,帮助用户在5分钟内完成集成,适用于智慧园区、安防监控等3D可视化场景。

weixin_29001655的博客 191

诺基亚安卓手机_用诺基亚那个年代玩的Java游戏,现在终于能用安卓手机玩了...

《山海经情剑轩辕》《新流星蝴蝶剑》《封魔录-斩妖问情》《轩辕剑-天之痕》《霸王大陆》《傲世三国》......一个个都是耳熟能详的游戏,一个个都是很多人的童年回忆。当时这些游戏都要发短信扣钱之后才能下载,有时候在游戏里面不小心按错了充值,手机话费就又没有钱了,免不了一顿挨骂(打)。那时候900kb的游戏可以玩一个月,渣渣一样的特效游戏都能玩的不亦乐乎~今天特别分享一款可用来玩这些Java游...

weixin_39820437的博客 1474

基于FPGA的CORDIC算法实现——Verilog版

目前,学习与开发FPGA的程序员们大多使用的是Verilog HDL语言(以下简称为Verilog),关于Verilog的诸多优点一休哥就不多介绍了,在此,我们将重点放在Verilog的运算操作上。 我们都知道,在Verilog中,运算一般分为逻辑运算(与或非等)与算术运算(加减乘除等)。而在一开始学习Verilog时,老司机一定会提醒我们,“切记,千万别用‘/’除、‘%’取模(有的也叫取余)和‘

善良の一休君的博客 6万+

睿尔曼超轻量仿人机械臂-ROS第一篇 启动机械臂的Moveit

本文主要讲述了睿尔曼六轴机械臂在ROS中的功能包配置,及如何根据文件启动Moveit做仿真。

realman_Rop的博客 7489

【代码】如何快速将J2me游戏移植到Android上

前言 小白:“老大,你让做的三个J2me游戏搞定了,请看DEMO。” 老大:“恩,不错,小白,你知道Android这个平台吧?” 小白:“恩,听过。听说和J2ME有很多共同点。” 老大:“(一阵奸笑)很多共同点是吧?” 小白:“恩。” 老大:“那好,你把这几个J2ME游戏给我移植到Android上去。” 小白:“……” 很多J2ME开发者可能都会遇到这样的临时性需求

清源教育 2321

.NET MAUI跨平台串口通讯方案

MAUI跨平台串口通信架构设计采用分层模式,核心是共享业务逻辑层与平台特定实现。通过定义统一的ISerialPortService接口,实现了Windows、Android、iOS和macOS四大平台的串口通信功能。Windows平台使用System.IO.Ports类库,Android通过USB Host模式实现,iOS基于ExternalAccessory框架,macOS则采用IOKit。该设计支持串口连接管理、数据收发等核心功能,并通过事件机制实现异步通信。架构采用条件编译区分各平台实现,确保代码复用

冰茶的博客 1664

《J2me小白转正记》 浅谈J2me游戏如何快速移植到Android

《J2me小白转正记》                                 --------------浅谈J2me游戏如何快速移植到Android(关于这篇文章~非常的尴尬~骨头就不细说了~)前言小白:“老大,你让做的三个J2me游戏搞定了,请看DEMO。”老大:“恩,不错,小白,你知道Android这个平台吧?”小白:“恩,听过。听说和J2ME有很多共同点。”老大:“(一阵奸笑)很多共同点是吧?”小白:“恩。”老大:“那好,你把这几个J2ME游戏给我移植到Android上去。”小白:“……”

3273

视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

盼小辉丶的博客 721

组态王与DLT645-2007电能表通讯调试总结

组态王与电力协议DLT 645-2007调试总结 DLT 645-2007是多功能电能表通信协议,该标准由中国电力企业联合会2006年提出,该协议为主-从结构的半双工通信方式。手持单元或其它数据终端为主站,多功能电能表为从站。每个多功能电能表均有各自的地址编码。通信链路的建立与解除均由主站发出的信息帧来控制。帧是传送信息的基本单元,每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成,每部分由若干字节组成,帧格式如图1所示。 1.确定设备地址 地址域由 6 个字节构

逍遥子的博客 1万+

如何把J2ME游戏移植到Android平台的方法

介绍如何把J2ME游戏移植到Android平台的方法,如果你是个J2ME的游戏开发者,并且想把一些J2ME游戏快速地迁移到Android平台,那么相信本文会对你有所帮助。当然,如果您非说可以安装个JVM来实现,那您可以直接跳过本文了。 由于手比较懒,对J2ME的描述不是很详细,还望多包涵。废话不多说,请看下文:   1.    平台比较 J2me:     开发平台 Android:

jalen_yuchi的专栏 974

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

j2me 移植 android,J2me移植Android初步探索

该楼层疑似违规已被系统折叠隐藏此楼查看此楼一直都想要将J2me移植到Android,终于找到了方法,对于我来说可是福音,一起来看看吧!所谓移植就是将一个平台上的软件可以运行另一个平台上,这就需要一个中间桥梁把两者连接起来。在我千辛万苦的收寻下,终于找到android_midp.jar这个第三方库,可以连接J2me和Android。使得在Android的开发环境下开发J2me成为可能。具体步骤如下...

weixin_42515687的博客 498

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

j2me游戏改成android,将j2me移植成android

上个月一直在做j2me移植成android,虽然有点心得,但又不知想写什么好,还是写代码来得痛快,这里写一点心得吧,算是对工作的总结,我把移植分为三大块:第一块:UI,移植前先要了解它们之前的不同,其不同点在于J2ME的Graphics相关于Android的Canvas,而且它们的方法略有不同,如下:J2ME:/***Drawsarectangleinthegivencoordina...

weixin_35869703的博客 317

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

浅谈J2me游戏如何快速移植到Android

<br />路过某论坛,看到好贴,转载过来,留后用。<br />前言<br /> <br />小白:“老大,你让做的三个J2me游戏搞定了,请看DEMO。”<br />老大:“恩,不错,小白,你知道Android这个平台吧?”<br />小白:“恩,听过。听说和J2ME有很多共同点。”<br />老大:“(一阵奸笑)很多共同点是吧?”<br />小白:“恩。”<br />老大:“那好,你把这几个J2ME游戏给我移植到Android上去。”<br />小白:“……”<br /> <br />很多J2ME开发者

保卫的专栏 1439

J2ME游戏如何快速移植到Android

前言   小白:“老大,你让做的三个J2me游戏搞定了,请看DEMO。” 老大:“恩,不错,小白,你知道Android这个平台吧?” 小白:“恩,听过。听说和J2ME有很多共同点。” 老大:“(一阵奸笑)很多共同点是吧?” 小白:“恩。” 老大:“那好,你把这几个J2ME游戏给我移植到Android上去。” 小白:“……”   很多J2ME开发者可能都会遇到这样的临时性需求。其

849

J2ME游戏移植到Android平台的方法

为什么80%的码农都做不了架构师?>>> ...

weixin_34235105的博客 146

Android-J2ME -API实现包移植完毕

从现在开始,你也可以像编写J2ME 应用一样,迅速在Android/OPhone平台使用你熟悉的方式编写你的应用了,迅速将现有的J2ME应用转化为Android/OPhone应用,本人提供J2ME应用移植到Android完整解决方案,可提供整个API实现源代码,详情:MSN:chenjianming368@yahoo.com.cn

modiaGame的专栏 2304
上一篇: 一个简单的,基本功能完善的移动通信架构
下一篇: HTML5 canvas 透明
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值