JNI中C语言返回数组到安卓Android Java代码中的方法:
以返回浮点数组为例,下面代码返回一个全部是-1的浮点数组:
在C代码中,
JNIEXPORT jfloatArray JNICALL Java_com_company_app_className_MethodName(JNIEnv *env, jobject jobj, jint n)
{
jfloatArray result = (*env)->NewFloatArray(env, 9);
float temp_result[9];
for (int i = 0; i < 9; i++) temp_result[i] = -1;
(*env)->SetFloatArrayRegion(env, result, 0, 9, temp_result);
return result;
}
在C代码中,并不能直接使用jfloatArray来处理数据,而是要借助一个临时数组进行处理。
安卓中的Java代码如下:
package com.company.app;
public class className
{
static {
System.loadLibrary("filename.so");
}
public static native float[] MethodName(int index);
}
在Java中调用:
float arr[] = className.MethodName(0);
// arr[] 数组就是保存了返回的数据,处理即可。