首页  编辑  

JNI返回数组的方法

Tags: /Android/   Date Created:
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[] 数组就是保存了返回的数据,处理即可。