Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
- *char 转换成 byte[]
byte[]在JNI层的类型是jbyteArray.
void audio_callback(char *buffer, int len) {
jbyteArray array = (*env)->NewByteArray(env, len);
(*env)->SetByteArrayRegion(env,array ,0,len, (jbyte*)buffer);
//回调Java层方法
(*env)->CallVoidMethod(env, obj, methodid, array, len);
//删除局部引用,否则会内存泄漏
(*env)->DeleteLocalRef(env, array);
}
- **byte[]转换成char * **
char* jbytearray_to_char(jbyteArray array) {
int len = (*env)->GetArrayLength (array);
char* buffer = new char[len];
(*env)->GetByteArrayRegion (array, 0, len, (jbyte*)buf);
return buffer ;
}
参考:
A correct way to convert byte[] in java to unsigned char* in C++, and vice versa?