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 + "");
        }
    }
时间: 2024-08-09 18:14:58

Android java传递int类型数组给C的相关文章

Android java传递int类型数据给C

本文根据<Android jni简便开发流程>中的开发流程来实现一个java传递int类型数据给C 新建项目,进行简单的布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&quo

Android java传递string类型数据给C

本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法,具体意义后面的文章将介绍 /** * 把一个jstring转换成一个c语言的char* 类型. */ char* _JString2CStr(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsstring = (*env)->FindCla

int类型数组中找出现几次的数的题目总结

1.     题目1:int类型数组中除了一个数出现一次以外,其他数都出现两次,求该数. [分析]全部异或运算即可. 2.     题目2:int类型数组中除了两个数出现一次以外,其他数都出现两次,求这两个数. 参考:http://zhedahht.blog.163.com/blog/static/2541117420071128950682/ [分析]:全部亦或之后得到的数为resultExclusiveOR,找到它的第一个不是0的位,然后将数组按这个位是否为0分成两组,组内全部亦或即可. /

75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。

[本文链接] http://www.cnblogs.com/hellogiser/p/single-number-of-array-with-other-three-times.html [题目] int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数. [分析] C++ Code 123456789101112   int singleNumber(int *a, int n) {     int ones = 0, twos = 0;     for (int i = 0;

C语言实现一个int类型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数字

题目是这样叙述的:在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字. 要求:时间复杂度为O(N),空间复杂度为O(1). 请看我的分析:将这道题简单化:一个数组中只有一个数字出现一次,其他数字都是成对出现的,这时我们可以根据异或运算符的特性:A^B^A = B; 0 ^ A = A:我们可以将这个数组的全部元素依次做异或运算,最终结果就是那个只出现一次的数字.不会的可看本人(2019-04-04)那天的博客 如果这个数组中出现两个不同的数字,而其他数字均出现两次

java将int类型的变量转化成String类型的

第一种方法:String的valueOf方法,int i=5;String s=String.valueOf(i);第二种方法,直接在int后面加一个空的字符串,因为在java里面,默认任务int类型和字符串类型相加,为字符串类型.int i=6:String s=i+"";3第三种:使用int的封装类Integer,在Integer里面用他的toString方法.int i=7:String s=Integer.toString(i);

java里int类型转byte类型

今天在做书上的一个例子的时候, 要使用byte类型,首先我很直接的就写到了byte b = 0XAA, 结果报错, 说从int转换到byte可能会有损失. 我当时就很奇怪, 为什么会出现这种情况呢? 0XAA转化为10进制的byte类型就是-86, 并没有超出-128~127的范围.而且如果直接赋值byte b = -86 ; 也是正常通过. 经过网上一位前辈的教导, 现在有了这样的结论: 在计算机中是没有正负数的区分的, 所有的正负数都是人为规定的 byte类型的最小值-128二进制位1000

【JAVA】java中char类型数组用数组名打印结果不是地址值而是数组内容

问题描述 引用型变量存储的是对象实例的地址值,如果直接打印变量,输出的应该是地址值. 数值型数组如int型数组:初始化后直接打印数组名,输出的是地址值. 但是:char类型数组无论是new还是直接赋值初始化,直接打印后显示的居然不是地址值,而是数组内容. 原因分析 char类型的数组就相当于一个字符串. 因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void println(char[] x): 直接打

java 判断int类型为空

int id = 10; if("0".equals(String.valueOf(id)) || "null".equals(String.valueOf(id)) || id <= 0) return false; 比如: "0".equals(String.valueOf(定义的int类型参数)) 判断int类型不能为空或不能小于等于0 也可以转换为String 类型进行空值判断. int ; String val = id +&qu