Android NDK开发学习(六)

最后更新于:2022-04-01 16:21:40

Android NDK开发学习(六):C调用java中的方法 首先说一下这一次的事例demo时在github上找到的,但是过后忘记了原链接了(实在抱歉),所以会在最后附上我上传的下载链接。 闲言少叙,进入正题。 之前的介绍中就是很常见的java调用C代码,但是实际应用中也存在反向调用。 1、先上运行效果 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-26_571f24eb854e5.jpg) 在界面上有三个Button,他们的点击事件如下: ~~~ public class MainActivity extends Activity { static{ System.loadLibrary("jni"); } DataProvider dp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dp = new DataProvider(); } public void onClick(View view) { int id = view.getId(); switch (id) { case R.id.call_void_method: dp.callCcode(); break; case R.id.call_string_parameter_method: dp.callCcode1(); break; case R.id.call_int_parameter_method: dp.callCcode2(); break; default: break; } } } ~~~ DataProvider类: ~~~ public class DataProvider { public native void callCcode(); public native void callCcode1(); public native void callCcode2(); //C调用java中空方法 shulaing.han.ndk_callback.DataProvider public void helloFromJava(){ System.out.println("hello from java"); } //C调用java中的带两个int参数的方法 public int Add(int x,int y){ System.out.println("the add result is : " + (x + y)); return x + y; } //C调用java中参数为string的方法 public void printString(String s){ System.out.println("in java code :" + s); } } ~~~ C中callCcode方法: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-26_571f24eb9f414.jpg) 执行结果: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-26_571f24ebb66eb.jpg) 类似的带参数的方法也是一样的原理。这里就不重复介绍了。 Demo下载链接   [点击打开链接](http://download.csdn.net/detail/qq_17766199/9136515) --------------------------------------------------------------------------------------------------------------------- 这个NDK的系列就到这里了,因为我在学习中发现了NDK的一个专栏,上面讲的很深入,所以我就不重复的制造 轮子了,附上链接 :[点击打开链接](http://blog.csdn.net/column/details/blogjnindk.html)
';