JNI如何在C ++本机函数中连接两个int数组

时间:2016-11-14 08:51:25

标签: android-ndk java-native-interface

在Android Studio中,我使用NDK在C ++本机函数中连接两个int数组。我如何在以下代码中执行此操作?我需要填写以下代码。提前谢谢。

jintArray
Java_com_android_example_MainActivity_helloFromJNI(
    JNIEnv *env,
    jobject /* this */,
    jintArray a, jintArray b){

    jintArray c;

    // How to concatenate a and b to get c, c <-  a, b?
    ....

    return c;
}

1 个答案:

答案 0 :(得分:1)

jsize alen = env->GetArrayLength(a);
jsize blen = env->GetArrayLength(b);
jintArray c = env->NewIntArray(alen + blen);
jint *avalues = env->GetIntArrayElements(a, NULL);
env->SetIntArrayRegion(c, 0, alen, avalues);
env->ReleaseIntArrayElements(a, avalues, JNI_ABORT);
jint *bvalues = env->GetIntArrayElements(b, NULL);
env->SetIntArrayRegion(c, alen, blen, bvalues);
env->ReleaseIntArrayElements(b, bvalues, JNI_ABORT);
return c;