zoukankan      html  css  js  c++  java
  • Android java传递int类型数组给C

    接着前面的文章《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”

  • 相关阅读:
    MTK 关闭耳机调至最大音量时,提示损伤听力
    MTK LCM的添加
    chmod chown
    ubuntu14.04设置静态IP
    MTK NTP和NITZ更新时间的问题
    Rk3288 双屏异显单触摸
    MTK 修改默认时区
    MTK 屏幕旋转90度
    MTK WIFI底部加入返回按钮
    MTK 自定义按键添加广播
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5634465.html
Copyright © 2011-2022 走看看