前言
正文
public class Hello { static { System.loadLibrary("Hello"); } // JNI中对数组排序 public static native int[] sortInt(int [] buffer); // JNI创建数组 public static native int [] newIntArray(); }
还在在之前的基础改,这里只附上部分代码
JNINativeMethod method_table[] = { {"sortInt", "([I)[I", (void *) native_sort_int}, {"newIntArray", "()[I", (void *) native_new_Int_Array}, };
sortInt
JNIEXPORT jintArray JNICALL native_sort_int(JNIEnv *env, jclass jclazz, jintArray buffer) { //获取Java数组长度 int length = env->GetArrayLength(buffer); LOGD("native_sort_int length : %d", length); //转换为指针 int *arrayP = env->GetIntArrayElements(buffer, NULL); int i = 0; int j = 0; int temp = 0; //排序从大到小 for (i = 0; i < length - 1; i++) { for (j = i + 1; j < length; j++) { if (arrayP[i] < arrayP[j]) { temp = arrayP[i]; arrayP[i] = arrayP[j]; arrayP[j] = temp; } } } //转化为jintArray //env->SetIntArrayRegion(buffer, 0, length, arrayP); //把修改写回原数组并且释放本地数组 env->ReleaseIntArrayElements(buffer, arrayP, 0); return buffer; }
newIntArray
JNIEXPORT jintArray JNICALL native_new_Int_Array(JNIEnv *env, jclass jclazz) { int num = 10; // 1. 创建一个Java的int数组 jintArray array = env->NewIntArray(num); // 2. 获取数组指针 jint *arrayP = env->GetIntArrayElements(array, NULL); // 3. 初始化 int i = 0; for (; i < num; i++) { arrayP[i] = i; } // 4. 把修改写回原数组并且释放本地数组 env->ReleaseIntArrayElements(array, arrayP, 0); return array; }
参考文章
《》
《》
《》
© 版权声明