请教一下,我是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里面去?
}

解决方案 »

  1.   

    网上找了两个函数,大家帮看看,有问题吗?
    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;
    }