通过JNI,C++ 回调java程序

来源:互联网 发布:js中字符串比较 编辑:程序博客网 时间:2024/06/14 14:14

我们知道通过注册jni方法的方式,实现java调用c++,

同理,在java调用C++的封装类中,定义接口函数,并在初始化(static 部分)调用一个C++ native函数

在c++的native函数中,根据 JNIEnv* env, jobject obj(就是那个java类对象)获取接口函数指针,全部获取并保存,

这样,在需要调用java方法时,通过env调用即可;以下为gps的例子:


 1、static jmethodID    method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V");




2、JNIEnv* env = AndroidRuntime::getJNIEnv();
    env->CallVoidMethod(mCallbacksObj, method_reportLocation, location->flags,
            (jdouble)location->latitude, (jdouble)location->longitude,
            (jdouble)location->altitude,
            (jfloat)location->speed, (jfloat)location->bearing,
            (jfloat)location->accuracy, (jlong)location->timestamp);


原创粉丝点击