相关疑难解决方法(0)

使用Interface在JNI中实现回调函数

我需要使用"interface"在Java中实现回调函数.我已将应用程序部分编写为MyJavaFunction(int size, m_GetSizeInterface);

m_GetSizeInterface是一个包含回调函数GetSize的接口.此GetSize方法在应用程序中被覆盖.在JNI中,我需要调用具有原型的CPP函数int MyCPPFunction(int size, int (*callback)(int* ID));

如何将此GetSize作为参数传递给JNI中的MyCPPFunction?请帮忙

public int GetSize (m_SizeClass arg0)
{
    g_size = arg0.size;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

java java-native-interface function-pointers interface callback

16
推荐指数
1
解决办法
2万
查看次数

JNI 回调到 Java 使用接口

首先,让我列出我能得到的最好结果。 jni 调用以自定义 java 接口作为参数的 java 方法

这不能回答我的。让我解释一下我的问题。我想按如下方式调用 NDK。

(1)Java -> (2)CPP -> (3)C (新线程) -> (4)CPP -> (5)Java

代码如下。

(1) 爪哇

public interface Callback<T> {
    void success(T result);
}
private native void jniUploadAsync(String imagePath, Callback<String> callback);

jniUploadAsync(file.getAbsolutePath(), new Callback<String>() {
                                        @Override
                                        public void success(final String result) {
                                            Log.v("MyClass: result:: ", result);
                                        }
                                    });
Run Code Online (Sandbox Code Playgroud)

(2) CPP

static JavaVM *jvm;
void imageUploadCallback(char *json, void *completionCallback) {
    JNIEnv *env;
    jint rs = jvm->AttachCurrentThread(&env, NULL);//create JNIEnv from JavaVM    
    jclass cbClass = env->FindClass("org/winster/test/Callback");
    jmethodID …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android-ndk

5
推荐指数
1
解决办法
3153
查看次数