如何将字节数组从android java类传递给JNI C NDK?

时间:2014-07-09 09:20:28

标签: android

我在java类中有字节数组,我想将该字节数组传递给JNI C类,我无法在JNI C中访问该数组,请帮忙。

1 个答案:

答案 0 :(得分:9)

你需要声明接收数组的JNI函数(在Java中):

  

private native void sendData(byte [] data);

你像任何其他函数一样调用函数:

  

的SendData(缓冲液);

然后在你的C代码中实现这样的函数:

  

JNIEXPORT void JNICALL Java_com_packageXXX_yourClass_sendData(JNIEnv *   env,jobject thiz,jbyteArray data);

读取数组:

  

byte * cData = env-> GetByteArrayElements(data,& isCopy);

并发布:

  

env-> ReleaseByteArrayElements(data,cData,JNI_ABORT);

上面的代码是C ++。要使它适用于C,您需要将jni环境(env)作为要调用的函数的第一个参数传递,如下所示:

  

(* ENV) - > GetByteArrayElements(ENV,...)