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, …)

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.