前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【专业领域】jvm虚拟机android移植-接口篇

【专业领域】jvm虚拟机android移植-接口篇

作者头像
程序员互动联盟
发布2018-03-12 11:11:18
8800
发布2018-03-12 11:11:18
举报
文章被收录于专栏:程序员互动联盟

上一篇我们讲了如何下载phoneme虚拟机开源代码,如何配置编译脚本,编译测试验证基本功能。但是要让她在android上显示运行java小游戏我们还得费点劲。好吧让我们一起来移植接口吧。

一、display接口

由于该开源项目已经年代久远,没有针对android进行优化,你也知道google和oracle的关系,但是她对各个指令集还是支持很好的,而且她的代码各个模块功能也是分得明了的,我们着手display就从fb开始吧,因为这个在整个开源项目中支持是最好的哦。

1、分析fb_port.c 我们到midp/src/highlevelui/fb_port/fb/native目录下你就能看到这个文件了。

2、依葫芦画瓢,那我重新加入一个文件fb_port_android.c 来实现吧

1)显示FrameBuffer 如何创建,由谁创建?(由java层创建bitmap 通过jni转化实际的FrameBuffer指针然后传递给phoneme,这就 就有了画的地方了)

2)如何刷新,正常刷新or旋转刷新(有用phoneme内部是已操作内 存buffer为主,刷新的时候就需要拷贝buffer)

3)改变Framebuffer的大小

二、event接口

其实都是在fb_port.c中实现的,有keyboard和mouse事件,这个移植好了我们就能用键盘,鼠标或者遥控器操作了。在linux下是文件读写的方式取得按键值和鼠标的坐标的。android上我们就在java层模拟并创建BufferedOutputStream文件来实现从onKeyDown 事件中获取按键值并通过转换写入流中,phoneme底层通过读取这个流设备从而取得按键值并发送相应的event事件。鼠标事件的流程跟按键的流程是一致的。

这两件事件做好了我们基本就能看到显示输出,并操作她了。

三、media接口

如果你玩个游戏,没有声音,没有美妙的音乐,岂不是太郁闷了,所以我们得把media接口移植上,想想还是有些挑战有些难度的。

那我们就来挑战一下,纵观整个phoneme jvm虚拟机在以前的nokia手机上就有好多java小游戏,如贪吃蛇好经典的游戏不要对我说你没玩过,有点跑题了,其实我想说的是他们都是有声音的,而且phoneme本身就有这样的扩展包jsr135多媒体扩展包,这样的扩展包还有好多如蓝牙。下载一个jsr135扩展包,我们将里面的实现都弄到java层用android的MediaPlayer来实现。

大体上我们只要移植这三类接口就能满足基本的需求了。要添加这些也必须对jvm实现流程有一些了解,不然遇到每一个问题你都得花大量的时间去理解分析解决它。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档