Search code examples
android-ndkjava-native-interface

JNI How to concatenate two int arrays in C++ native function


In Android Studio, I'm using NDK for concatenating two int arrays in C++ native function. How can I do that in the following code? I need to fill the following code. Thanks in advance.

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;
}

Solution

  • 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;