Android : Printing Array elements using GetIntArrayElements in JNI

on Tuesday, July 29, 2014


I'm debuggin this issue where,


JNI Code (C):



#define LOGI(...) __android_log_print(ANDROID_LOG_INFO , TAG, __VA_ARGS__)

jint test_arr[5] = {1, 2, 3, 4, 5}; /* Global Variable */
int len = sizeof(test_arr);

jintArray result_test = (*env)->NewIntArray(env, len);
(*env)->SetIntArrayRegion(env, result_test, 0, len, test_arr);

/* Print the Value of the Array */
jint *ptr = (*env)->GetIntArrayElements(env, result_test, NULL);

for (i = 0; i < 5; i++)
LOGI("[%d]", *(ptr + i));

(*env)->ReleaseIntArrayElements(env, result_test, ptr, NULL);


Output:



I/[JNI] ( 1835): [0]
I/[JNI] ( 1835): [1092010456]
I/[JNI] ( 1835): [1092201680]
I/[JNI] ( 1835): [1526497088]
I/[JNI] ( 1835): [0]


I do not have much experience in JNI, good with C.

How can i use GetIntArrayElements to correctly print the values of the Array ?


0 comments:

Post a Comment