文档章节

jvm虚拟机android移植-接口篇

yistn
 yistn
发布于 2015/05/03 11:03
字数 840
阅读 30
收藏 0


上一篇我们讲了如何下载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实现流程有一些了解,不让遇到每一个问题你都得花大量的时间去分析解决。

如果大家有什么想法或者疑问,请关注我们的公众号,及时沟通,这里有各种大牛帮你解决问题。

欢迎关注微信公众平台:程序员互动联盟(coder_online),一个开发人员的家,来诉说自己的故事

欢迎加入我们的QQ群:程序员互动联盟(254241126)

27225517_4bEO.jpg

© 著作权归作者所有

yistn
粉丝 20
博文 37
码字总数 8907
作品 0
海淀
高级程序员
私信 提问
jvm虚拟机androidy移植-编译篇

有这个必要吗?都过时的东西了,android上的Dalvik效率不够高吗,不够逼格吗? 是的但有总东西是不是我们这些码农能决定的,领导和项目需求才是你要关心的,毕竟工作要向领导汇报,项目要去挣...

lonely1986
2015/04/22
0
1
Android的虚拟机Dalvik引来论战不断

随着上周Google的Android SDK的发布,关于它的API以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举。不过,其中的一个话题在Java社区是一石激起千层浪,这就是Android平台的基础—...

红薯
2009/09/27
2.4K
3
Xamarin发布XobotOS源码,C# 实现的Android系统

  Xamarin 团队(前身为 Mono 团队)近来一直在尝试使用 C# 移植 Android 操作系统,并完全替代其中的 Java 代码。之前,该团队推出了 Mono for Android,使得开发者可以使用 C# 来开发 An...

墙头草
2012/05/07
58
0
Android的虚拟机Dalvik 介绍

随着上周Google的Android SDK的发布,关于它的API以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举。不过,其中的一个话题在Java社区是一石激起千层浪,这就是 Android平台的基础—...

Kevin_Gan
2010/08/19
0
0
Android的虚拟机Dalvik 介绍

随着上周Google的AndroidSDK的发布,关于它的API以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举。不过,其中的一个话题在Java社区是一石激起千层浪,这就是Android平台的基础——...

Kevin_Gan
2010/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中国地理位置四至点及计算方法

中国地理位置四至点(China's geographical position is four o'clock),是指中国领土最东、西、南、北的四个地理位置。处于太平洋西岸,亚洲东部。 中文名 中国地理位置四至点 外文名 Chin...

boonya
13分钟前
0
0
8.eclipse 安装 lombook插件

1.效果 2.安装过程 参考: https://blog.csdn.net/zflovecf/article/details/80178679 2.1 下载插件 https://projectlombok.org/download.html 并放入eclipse所在目录 (位置参考下图) 2.2 ......

20190513
14分钟前
0
0
java io的编码和解码

public class copyFIle { public static void main(String[] args) throws UnsupportedEncodingException { String str="中国人民";//编码byte data[]=str.getBytes("gbk");//解码Sys......

南桥北木
28分钟前
0
0
SpringBoot中使用Filter

1.在传统web项目中添加filter <filter> <filter-name>TestFilter</filter-name> <!--定义filter名称 和filter类 --> <filter-class>com.jiafeng.filter.TestFilter</filter-class>......

贾峰uk
29分钟前
1
0
?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?

今天来总结一下Struts2的知识点,学习编程我的思路一般是这样的:     ① why ?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?)。     ②what ? 这个技术是什么玩意?有...

SEOwhywhy
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部