2012-06-11 100 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數組。