Java与C互相调用

Java与C互相调用

ID:40748326

大小:642.50 KB

页数:15页

时间:2019-08-07

Java与C互相调用_第1页
Java与C互相调用_第2页
Java与C互相调用_第3页
Java与C互相调用_第4页
Java与C互相调用_第5页
资源描述:

《Java与C互相调用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、AndroidNDK开发(1)-----Java与C互相调用实例详解一、概述对于大部分应用开发者来说可能都不怎么接触到NDK,但如果涉及到硬件操作的话就不得不使用NDK了。使用NDK还有另一个原因,就是C/C++的效率比较高,因此我们可以把一些耗时的操作放在NDK中实现。所以NDK主要做驱动的开发。在java中调用一个本地方法,然后由该本地方法直接返回一个参数给java(例如,在java中定义的本地方法为privateintcallJNI(inti))。但在大多数时候要求的并不是由开发者在java层主动去调JNI中的函数来返回想要的数据,而是由JNI主动去调java中的函

2、数。举个最简单的例子,Android中的Camera,图像数据由内核一直往上传到java层,然而这些数据的传递并不需要开发者每一次主动去调用来JNI中的函数来获取,而是由JNI主动传给用java中方法,这类似于Linux驱动机制中的异步通知。二、要求用NDK实现Java与C/C++互调,实现int,string,byte[]这三种类型的互相传递。三、实现下面的实现中,每次java调用JNI中的某个函数时,最后会在该函数里回调java中相应的方法而不是直接返回一个参数。可能你会觉得这不还是每次都是由开发者来主动调用吗,其实这只是为了讲解而已,在实际应用中,回调java中的方

3、法应该由某个事件(非java层)来触发。步骤:(1)Java类里的声明packagecom.ljt.work;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;publicclassLj

4、tndkActivityextendsActivity{//本地方法,由java调用privatenativevoidcallJNIInt(inti);privatenativevoidcallJNIString(Strings);privatenativevoidcallJNIByte(byte[]b);static{//加载本地库System.loadLibrary("myjni");}privateButtonintButton=null;privateButtonstringButton=null;privateButtonarrayButton=null;pri

5、vateTextViewintTextView=null;privateTextViewstringTextView=null;privateTextViewarrayTextView=null;//定义一个处理线程的机制privateHandlermHandler=null;@SuppressLint("HandlerLeak")@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);

6、setContentView(R.layout.main);intButton=(Button)this.findViewById(R.id.intbutton);//注册按钮监听intButton.setOnClickListener(newClickListener());stringButton=(Button)this.findViewById(R.id.stringbutton);//注册按钮监听stringButton.setOnClickListener(newClickListener());arrayButton=(Button)this.findVie

7、wById(R.id.arraybutton);//注册按钮监听arrayButton.setOnClickListener(newClickListener());intTextView=(TextView)this.findViewById(R.id.inttextview);stringTextView=(TextView)this.findViewById(R.id.stringtextview);arrayTextView=(TextView)this.findViewById(R.id.arraytextview)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。