NDK开发,从JAVA层传递jbyteArray 到JNI的转换问题
请教一下,我是ANDROID开发新手,现在有一个程序要移植到ANDROID,这个程序有一个接口如下:void sendData(unsigned char * data, int size);
然后我写的JNI接口如下:
sendData(JNIEnv* env, jobject thiz, jbyteArray data, jint size);
这样写对吗? 如果是对的,我怎么把jbyteArray转换成unsigned char * ?
sendData(JNIEnv* env, jobject thiz, jbyteArray data, jint size)
{
unsigned char * buff = new unsigned char[size];
// 这里怎么把data转换成 unsigned char *并复制到 buff里面去?
} --------------------编程问答-------------------- 网上找了两个函数,大家帮看看,有问题吗?
unsigned char* as_unsigned_char_array(JNIEnv *env, jbyteArray array)
{
int len = env->GetArrayLength (array);
unsigned char* buf = new unsigned char[len];
env->GetByteArrayRegion(array, 0, len, reinterpret_cast<jbyte*>(buf));
return buf;
}
jbyteArray as_byte_array(JNIEnv *env, unsigned char* buf, int len)
{
jbyteArray array = env->NewByteArray(len);
env->SetByteArrayRegion(array, 0, len, reinterpret_cast<jbyte*>(buf));
return array;
}
补充:移动开发 , Android