美文网首页
JNI 主动回调java

JNI 主动回调java

作者: 吉吉的纸飞机 | 来源:发表于2022-01-09 19:58 被阅读0次

感谢分享,写的很详细
https://www.jianshu.com/p/e576c7e1c403

核心
全局 java 上下文对象
反射


 public void updateEvent(Event event) {
        //TODO
}
       void JniClient::updateEvent(int position, int action, float *pointerCoords) {
        JNIEnv *env;

        int getEnvStat = j_VM->GetEnv((void **) &env, JNI_VERSION_1_6);
        if (getEnvStat == JNI_EDETACHED) {
            if (j_VM->AttachCurrentThread(&env, nullptr) != 0) {
                return;
            }
        }

        jclass javaClass = env->GetObjectClass(jDeviceClient);

        if (javaClass == nullptr) {
            IVR_LOG_DEBUG("Unable to find class");
            j_VM->DetachCurrentThread();
            return;
        }

        jmethodID javaCallbackId = env->GetMethodID(javaClass, "updateEvent", "(Lcom/xxx/Event;)V");
        if (javaCallbackId == nullptr) {
            IVR_LOG_DEBUG("Unable to find method:onProgressCallBack");
            return;
        }
        jclass PointerCoords = env->FindClass("com/xxx/PointerCoords");
        jmethodID sdkInit = env->GetMethodID(PointerCoords, "<init>", "(FF)V");
        jobject jObject = env->NewObject(PointerCoords, sdkInit, pointerCoords[0], pointerCoords[1]);

        jclass event = env->FindClass("com/xxxx/Event");
        jmethodID eventInit = env->GetMethodID(event , "<init>", "(IILcom/xxxx/PointerCoords;)V");
        jobject jEvent= env->NewObject(event , eventInit , position, action, jObject );

        env->CallVoidMethod(jDeviceClient, javaCallbackId, jEvent);
        env->DeleteLocalRef(jControllerEvent);
        env->DeleteLocalRef(jUSBDeviceInfoObject);

        env = nullptr;
    }

相关文章

  • JNI 主动回调java

    感谢分享,写的很详细https://www.jianshu.com/p/e576c7e1c403[https://...

  • JNI回调Java

    jclass、jobject、jmethodID 和 jfieldID jni回调java是通过反射来实现的,这些...

  • 细说JNI与NDK(一) 初体验

    简单概念关系 JNI :ava Native Interface,即 Java 本地接口,JNI 是 Java 调...

  • JNI回调java方法

    要回调java 类结构 第一步:获得java类的class 第二步:获得class的实例对象 第三步:调用Trac...

  • JNI - dll回调java

    之前在项目中由于需要使用java调用dll实现一些功能,同时需要dll回调java中的方法,故将个人学习的内容记录...

  • android JNI NDK入门

    1、JNI(Java Native Interface) Java本地接口,又叫Java原生接口。它允许Java调...

  • JNI和NDK编程(一)

    简介 Java JNI意思是Java Native Interface(Java本地接口),主要为了方便Java调...

  • Android NDK - JNI 回调Java函数注意事项

    被回调的Java静态函数中有数组参数 假设有如下Java函数待被JNI调用,但是由于Cpp中的数组和java中的数...

  • NE Crash的坑

    问题: 1.详细的dump文件无法获取 2.ne崩溃后,不能通过jni 调用java回调 原因:Android 5...

  • JNI&NDK

    JNI: Java Native Interface (Java本地接口,本地接口即C和C++开发的接口) → 调...

网友评论

      本文标题:JNI 主动回调java

      本文链接:https://www.haomeiwen.com/subject/qgxpcrtx.html