新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > JNI技术如何在嵌入式软件开发中应用?

JNI技术如何在嵌入式软件开发中应用?

作者:时间:2018-08-07来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/201808/385730.htm

①发起该流程。

②发起流程后,建立文件用于存储图片。

③用指针获得分配的缓冲器,用于存储获得的帧。

④ 将指针压栈(序列化缓冲器)。由于的内存较小,为了防止内存泄漏,Symbian操作系统有一个Cleanup stack的要求,即在使用指针时,用PushL把指针压入栈中,使用完后再用Pop弹出栈.如果在中间调用导致崩溃的函数时果真出现了问题,那么 Clean up stack可以通过调用该指针的析构函数回收占用的空间。

⑤操纵摄像头,捕捉视频,并将图像流从摄像头端传到缓冲器。

⑥将摄像头内的图像流存入缓冲器内,并将缓冲器内的流转化为文件流,存为jpg格式的文件,将指向缓冲器的指针弹栈。

⑦在过程⑥中,如果使用完了序列化的缓冲器,则要重新序列化缓冲器,以备后面使用。

⑧当接收到停止视频捕捉的信号后,关闭文件。

⑨流程结束。

(2)运用JNI技术的视频捕捉

子功能捕捉视频的实现是由操纵摄像头、视频播放(解码器准备)以及建立摄像头和之间的连接会话三个活动组成的。其中操纵摄像头是通过调用底层设备的驱动来实现的,需要利用JNI来实现,完成的方法包括准备、建立、删除、销毁摄像头等。视频播放的一系列过程也是通过c++代码来实现的,除了准备、建立、删除、销毁解码器外,还有开始、暂停、停止解码等。建立摄像头和之间的连接类似建立客户端和服务器连接,视频流从摄像头传到手机界面是通过多媒体会话来完成的。多媒体会话的建立、关闭、摧毁以及会话建立后的发送、取消、读取数据等也是JNI的应用范畴。

结 语

主张采用纯Java的人们通常反对本地化代码的使用,认为JNI技术会影响程序的可移植性和安全性。还有一些人认为,在Java程序执行的过程中调用c/c++程序只是对过去混合编程技术的简单扩展,其实际目的是为了充分利用大量原有的c程序库。

其实,不必拘泥于严格的平台独立性限制,因为采用JNI技术只是针对一些严重影响Java性能的代码段。该部分可能只占源程序的极少部分,所以几乎可以不考虑该部分代码在主流平台之间移植的工作量。同时,也不必过分担心类型匹配问题,完全可以控制代码不出现这种错误。此外,也不必担心安全控制问题,因为 Java安全模型已扩展为允许非系统类加载和调用本地方法,即如果在Java程序中直接调用c/c++语言产生的机器码,该部分代码的安全性就由Java 虚拟机控制。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭