2

在我的原生代码中的 Android 平台上,我分配了一个 int 数组

mBuffer = new int[BUFSIZE];

我想把这个发送到Java端,Java方法是这个

public void WriteBuffer(int[] buffer, int size) 
{

}

我像这样回调java代码

const char* callback = "WriteBuffer";

mWriteMethod =  env->GetMethodID(cls, callback, "([II)V");     

这调用了 java 方法,它只是在我的 Java 代码中缓冲区为空。因为我确实传递了一个指向动态分配的内存而不是实际数组的指针,这可能是它不起作用的原因,但我不知道如何将指针传递给 Java。无论如何,我需要将缓冲区参数作为 Java 端的整数数组。

任何人都知道我可以如何修改上述内容以使其正常工作?

谢谢

4

1 回答 1

2

我对您的问题的理解是您想调用 java 方法WriteBuffer并将 a 传递int[]给它。
jni 中需要的一些伪代码

jintArray buffer; 
buffer= (*env)->NewIntArray(env, BUFSIZE); 
(*env)->SetIntArrayRegion(env, buffer, 0,BUFSIZE, mBuffer);    

SetIntArrayRegion()将从 mBuffer 复制到 Java 数组中。

于 2012-06-11T12:50:04.243 回答