Cómo pasar la matriz de bytes de la clase android java a JNI C NDK?
Tengo la matriz de bytes en la clase java, y quiero pasar esa matriz de bytes a la clase JNI C, no soy capaz de acceder a esa matriz en JNI C, Please Help!
Necesita declarar la función JNI que recibe la matriz como ésta (en Java):
Private native void sendData (datos byte []);
Se llama a la función como cualquier otra función:
SendData (buffer);
Y luego en su código C implementar la función como esta:
JNIEXPORT void JNICALL Java_com_packageXXX_yourClass_sendData (JNIEnv * env, jobject thiz, jbyteArray datos);
Lea la matriz:
Byte * cData = env-> GetByteArrayElements (data, & isCopy);
y liberar:
Env-> ReleaseByteArrayElements (datos, cData, JNI_ABORT);
El código anterior es C ++. Para hacer que funcione para C necesitas pasar el entorno jni (env) como el primer parámetro de la función que estás llamando, así:
(* Env) -> GetByteArrayElements (env, …)