织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 嵌入式开发 > Android >

JNI实现回调| JNI调用JAVA函数|参数和返回值的格式

落鹤生 发布于 2012-03-09 12:31 点击:次 
通过JNI在Native层调用JAVA层的方法,来实现Native层向JAVA层传递消息。
TAG:

一、JNI实现回调

通过JNI在Native层调用JAVA层的方法,来实现Native层向JAVA层传递消息。

JNICallback.java

  1. public class JNICallback extends Activity { 
  2.     static { 
  3.         System.loadLibrary("callback"); 
  4.     }  
  5.     public void callback(int notify_id, int param) 
  6.     { 
  7.         Log.e("JNICallback","notify_id="+notify_id+";param="+param); 
  8.     }    
  9.     public native void setCallBack();  
  10.      
  11.     /** Called when the activity is first created. */ 
  12.     @Override 
  13.     public void onCreate(Bundle savedInstanceState) { 
  14.         super.onCreate(savedInstanceState); 
  15.         setContentView(R.layout.main); 
  16.         setCallBack(); 
  17.     }

com_JNICallback_JNICallback.cpp

  1. void JNICALL Java_com_JNICallback_JNICallback_setCallBack 
  2.   (JNIEnv *env, jobject obj) 
  3.     LOGE("jni callback (0)"); 
  4.     jclass cls = env->GetObjectClass(obj);  
  5.     jmethodID callback = env->GetMethodID(cls,"callback","(II)V"); 
  6.     env->CallVoidMethod(obj,callback,5,10);  
  7.     LOGE("jni callback (1)"); 

javah -classpath . -jni com.JNICallback.JNICallback(包名+类名)

二、JNI调用JAVA函数

获取实例的类定义 jclass cls = env->GetObjectClass(obj);

获取方法定义  jmethodID callback = env->GetMethodID(cls,"callback","(II)V");

调用方法 env->CallVoidMethod(obj,callback,5,10)

三、参数和返回值的格式

参考 http://java.sun.com/docs/books/jni/html/jniTOC.html

(stefzeus)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201203/15803.html]
本文出处:CSDN博客 作者:stefzeus 原文
顶一下
(7)
53.8%
踩一下
(6)
46.2%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容