Android ndk 如何在JNI中查找2D objectArray的大小
我想在JNI的2D objectArray中查找行数和列数。我该怎么办?请任何人都能帮我解决这个问题。如果你有数组,你必须通过对象数组 java中的1d数组是JNI中原语的1d数组 二维数组是对象的数组 因此,对于这样的代码:Android ndk 如何在JNI中查找2D objectArray的大小,android-ndk,java-native-interface,Android Ndk,Java Native Interface,我想在JNI的2D objectArray中查找行数和列数。我该怎么办?请任何人都能帮我解决这个问题。如果你有数组,你必须通过对象数组 java中的1d数组是JNI中原语的1d数组 二维数组是对象的数组 因此,对于这样的代码: public class PassArray { public static native void passBooleanArray(boolean [][] array); public static void main(String[] args) {
public class PassArray {
public static native void passBooleanArray(boolean [][] array);
public static void main(String[] args) {
boolean [][] boolArray = { { true, true, true }, {false, false, false} };
passBooleanArray(boolArray);
}
}
/* get size of the array */
jsize len = (*env)->GetArrayLength(env, array);
for(int i=0; i<len; i++) {
/* get the array at following indexes of array; it will be referecende by C pointer */
jbooleanArray body = (*env)->GetObjectArrayElement(env, array, i);
jsize innerLen = (*env)->GetArrayLength(env, body);
jboolean *booleanBody = (*env)->GetBooleanArrayElements(env, body, 0);
for(int j=0; j<innerLen; j++) {
/* do some stuff */
printf("Boolean value: %s\n", booleanBody[j] == JNI_TRUE ? "true" : "false");
}
/* release body when you decide it is no longer needed */
(*env)->ReleaseBooleanArrayElements(env, array, booleanBody, 0);
}
你需要这样的东西:
public class PassArray {
public static native void passBooleanArray(boolean [][] array);
public static void main(String[] args) {
boolean [][] boolArray = { { true, true, true }, {false, false, false} };
passBooleanArray(boolArray);
}
}
/* get size of the array */
jsize len = (*env)->GetArrayLength(env, array);
for(int i=0; i<len; i++) {
/* get the array at following indexes of array; it will be referecende by C pointer */
jbooleanArray body = (*env)->GetObjectArrayElement(env, array, i);
jsize innerLen = (*env)->GetArrayLength(env, body);
jboolean *booleanBody = (*env)->GetBooleanArrayElements(env, body, 0);
for(int j=0; j<innerLen; j++) {
/* do some stuff */
printf("Boolean value: %s\n", booleanBody[j] == JNI_TRUE ? "true" : "false");
}
/* release body when you decide it is no longer needed */
(*env)->ReleaseBooleanArrayElements(env, array, booleanBody, 0);
}
/*获取阵列的大小*/
jsize len=(*env)->GetArrayLength(env,数组);
for(int i=0;iGetObjectArrayElement(env,array,i);
jsizeinnerlen=(*env)->GetArrayLength(env,body);
jboolean*booleanBody=(*env)->GetBooleanArrayElements(env,body,0);
for(int j=0;jReleaseBooleanArrayElements(env,array,booleanBody,0);
}
更新:
请看这里:
对于工作示例代码。使用
GetArrayLength
。