您的位置:首页 > 编程语言 > Java开发

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

2017-07-13 19:38 711 查看

代码下载:http://dl.dbank.com/c0c0xs3b24

一、JNI实现回调

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

JNICallback.java

[java]
view plain
copy

public class JNICallback extends Activity {  
    static {  
        System.loadLibrary("callback");  
    }   
    public void callback(int notify_id, int param)  
    {  
        Log.e("JNICallback","notify_id="+notify_id+";param="+param);  
    }     
    public native void setCallBack();   
      
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        setCallBack();  
    }  
<span style="font-family:Comic Sans MS;">}</span>  

com_JNICallback_JNICallback.cpp

[cpp]
view plain
copy

void JNICALL Java_com_JNICallback_JNICallback_setCallBack  
  (JNIEnv *env, jobject obj)  
{  
    LOGE("jni callback (0)");  
    jclass cls = env->GetObjectClass(obj);   
    jmethodID callback = env->GetMethodID(cls,"callback","(II)V");  
    env->CallVoidMethod(obj,callback,5,10);   
    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
转自:http://blog.csdn.net/stefzeus/article/details/6721346#t1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: