2012-06-11 38 views
2

发送到Java代码的Android平台在我的本地代码我已经分配的int数组如何int数组由C

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代码的buff呃是空的。因为我真的将指针传递给动态分配的内存而不是实际的数组,可能是为什么它不起作用,但我不知道如何将指针传递给Java。 无论如何,我需要将缓冲区参数作为Java端的整数数组。

任何人都知道我可以如何修改上面的工作?

感谢

+0

您不需要该回调方法中的'size'参数。 Java代码可以使用buffer.length。 – EJP

回答

2

我你的问题的理解是你要调用java方法WriteBuffer并传递一个int[]给它。
一些伪代码,您将需要在JNI

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

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