接著前面的文章《Android java傳遞int類型數據給C》《Android java傳遞string類型數據給C》,繼續實踐 實現public native int[] arrElementsIncrease(int[] intArray); 項目佈局 實現arrElementsIncreas ...
接著前面的文章《Android java傳遞int類型數據給C》《Android java傳遞string類型數據給C》,繼續實踐
實現public native int[] arrElementsIncrease(int[] intArray);
項目佈局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="傳遞int類型參數" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="passString" android:text="傳遞String類型參數" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="passIntArray" android:text="傳遞Int類型數組" /> </LinearLayout>
實現arrElementsIncrease函數
/* * Class: com_wuyudong_javapassdata_JNI * Method: arrElementsIncrease * Signature: ([I)[I */JNIEXPORT jintArray JNICALL Java_com_wuyudong_javapassdata_JNI_arrElementsIncrease( JNIEnv * env, jobject clazz, jintArray jArray){ jsize len = (*env)->GetArrayLength(env, jArray); // jboolean iscopy; int* arrayPointer = (*env)->GetIntArrayElements(env, jArray, NULL); int i; for(i = 0; i < len; i++){ *(arrayPointer + i) += 10; } return jArray; }
MainActivity.java中添加下麵的代碼:
public void passIntArray(View v) { int[] array = new int[] { 1, 2, 3, 4, 5 }; int[] newArray = jni.arrElementsIncrease(array); for (int i : newArray) { Log.d("test", i + ""); } }
獲取更多C相關知識,關註公眾號:“csuanfa”