当前位置:编程学习 > wap >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,