首页
学习
活动
专区
工具
TVP
发布

Android JNI 数组操作

JNI 中有两种数组操作,基础数据类型数组和对象数组JNI 对待基础数据类型数组和对象数组是不一样的。...在 Android JNI 基础知识篇提到了 Java 数组类型对应的 JNI 数组类型。...GetArrayLength 得到数组中的元素个数,也就是长度。 NewTypeArray 返回一个指定数据类型的数组,并且通过 SetTypeArrayRegion 来给指定类型数组赋值。...中返回一个基础数据类型的数组,对应的代码如下: // 从 Native 返回基本数据类型数组 private native int[] getIntArray(int num); 对应的...例如在 JNI 中创建一个二维的整型数组返回: // 从 Native 返回二维整型数组,相当于是一个一维整型数组数组中的每一项内容又是数组 private native int[]

1.2K40

JNI--数组的访问

今天来使用JNI数组操作,数组分为基本类型数组和引用类型数组,首先来看下基本类型数组的使用 1.基本类型数组 我们在java中定义一个方法,传入一个int型数组,使用c++进行排序 package com.aruba.jniapplication...; /** * JNI访问数组 */ public class JniDemo4 { static { System.load("C:\\Users\\tyqhc\\source...c_arry,c_arry+size); //通知JVM可以释放,并将修改的数据重新写回原来的内存 env->ReleaseIntArrayElements(arry, c_arry, JNI_COMMIT...代码,获取一个size大小的字符串数组,并进行赋值后返回出去 JNIEXPORT jobjectArray JNICALL Java_com_aruba_jniapplication_JniDemo4_..._getArrayByC (JNIEnv* env, jobject jobj, jint size) { //创建需要返回的jobjectArray jobjectArray result

97730
您找到你想要的搜索结果了吗?
是的
没有找到

JNI:如何操作数组

数组的分类 数组分为两种 基本数据类型的数组 对象类型(Object[])的数组 一个能通用于两种不同数据类型数组的函数 GetArrayLength( jarray array);//获取长度 2....); 这类函数可以把Java基本类型的数组转换到C/C++的数组,有两种处理方式,一是拷贝一份传回本地代码,另一个是把指向Java数组的指针直接传回到本地代码。...mode 可以取下面的值: 0 对Java的数组进行更新,并释放 C/C++ 的数组 JNI_COMMIT 对Java的数组进行更新,但是不释放C/C++的数组 JNI_ABORT 对Java的数组不进行更新...); 指定一个长度,然后返回相应Java基本类型的数组 Array NewArray( jsize len ); 3....对象类型数组 Object[] JNI 没有提供直接把Java的对象类型数组( Object[] )直接转到 C/C++ 的 jobject[] 数组的函数。

40610

【Android NDK 开发】JNI 方法解析 ( int 数组传递 | jintArray 类型 | 数组转换 | 获取数组长度 | 获取数组元素 | 指针遍历数组 | 数组返回值设置 )

GetIntArrayElements 函数作用 : 将 Java 环境的 int 数组类型变量 ( jintArray 类型 ) , 转为 C/C++ 环境中的 jint 数组指针 , 返回一个指针指向...的指针 : 将 int 数组数据拷贝到一个新的内存空间中 , 并将该内存空间首地址返回 ; ② 将 该参数设置成指向 JNI_FALSE 的指针 : 直接使用 java 中的 int 数组地址 , 返回...函数作用 : 释放 C/C++ 中的 jint 数组 , 设置 jintArray array 类型的返回模式 ; 2 ...., 转为 jint 数组 , 返回一个指针指向 jint 数组首元素地址 函数原型 : jint* GetIntArrayElements(jintArray array, jboolean...的指针 : 将 int 数组数据拷贝到一个新的内存空间中 , 并将该内存空间首地址返回 将 该参数设置成指向 JNI_FALSE 的指针 : 直接使用 java 中的 int

1.6K10

NDK开发(四) :JNI操作Java数组

转载请以链接形式标明出处: 本文出自:103style的博客 本文操作以 Android Studio 3.4.2 版本为例 NDK开发(一) :NDK入门指南 NDK开发(二) :JNI的数据类型...NDK开发(三) :JNI访问Java变量和方法 NDK开发(四) :JNI操作Java数组 NDK开发(五) :JNI实现文件加解密 NDK开发(六) :JNI实现文件拆分和合并 前先阅读 JNI的数据类型...---- 目录 准备 构建数组数组进行排序 ---- 准备 创建JniArrayOperation类,编写对应的测试代码: public class JniArrayOperation {...#include #include //数组元素最大值 const jint max = 100; extern "C" JNIEXPORT jintArray.../C++数组 //JNI_ABORT:Java数组不进行更新,但是释放C/C++数组 //JNI_COMMIT:Java数组进行更新,不释放C/C++数组(函数执行完后,数组还是会释放的

24120

Android 通过jni返回Mat数据类型方法

Android 开发过程中为了实现代码的高效性,通常要调用本地c++代码,JNI是java语言提供的和c/c++相互沟通的机制,在使用opencv做图像处理时,通常要调用c/c++代码进行相关操作,将处理后的结果返回...可以在java部分创建一个Mat,用于保存图像处理结果图像,获取Mat 的本地地址传入jni函数中: // java Mat res = new Mat(); jni_fun(res.getNativeObjAddr...()); c++部分新建Mat指针指向java传入的内存区域,将处理后的结果图像的Mat数据复制到这块内存区域,这样java中的创建的Mat就变为结果图像: //jni c++ void jni_fun...image.cols,image.type()); memcpy(res- data,image.data,image.rows*image.step); 如果需要将java中的图像传入c++进行处理,然后返回结果...Mat image = ImgProcess(*src); ... ... } 以上这篇Android 通过jni返回Mat数据类型方法就是小编分享给大家的全部内容了,希望能给大家一个参考

1.3K10

CA1819:属性不应返回数组

值 规则 ID CA1819 类别 “性能” 修复是中断修复还是非中断修复 重大 原因 属性返回数组。 默认情况下,此规则仅查看外部可见的属性和类型,但这是可配置的。...规则说明 即使属性是只读的,该属性返回数组也不受写入保护。 若要使数组不会被更改,属性必须返回数组的副本。 通常,用户不能理解调用这种属性的负面性能影响。...如何解决冲突 要解决此规则的冲突,请将属性设置为方法或更改属性以返回集合。 何时禁止显示警告 可禁止显示从 Attribute 类派生的特性中由属性引发的警告。...特性可以包含返回数组的属性,但不能包含返回集合的属性。 如果属性是数据传输对象 (DTO) 类的一部分,则可以禁止显示警告. 否则,请勿禁止显示此规则发出的警告。...pages End Sub Public ReadOnly Property Pages() As String() End Class 若要解决此规则的冲突,请将属性设置为方法或更改属性以返回集合而不是数组

56400

JNI动态注册以及JNI签名

分别是:     1.jclass clazz  声明native方法的java类     2.const JNINativeMethod* methods  JNINativeMethod类型的结构体数组...,我们就是在这个结构体数组中说明java方法和本地方法的对应关系的     3.jint nMethods  第二个参数methods所指向的结构体数组的大小     JNINativeMethod结构体的定义如下...==0){ return JNI_VERSION_1_4; //返回值代表动态库需要的jni版本 } } return -1; }   3.在java...add","(II)I",(void *)native_add} };   比如第一个函数的签名:()Ljava/lang/String;其实表示的是java中的stringFromJNI函数的形参为空,返回值类型为...第二个函数的签名(II)I表示java中的add函数的形参列表是(int,int),返回值类型也是int类型。   那这个签名有什么作用呢?其实是为了解决java中的函数重载问题。

22430

Android JNI(一)——NDK与JNI基础

2.7.3 创建类型为基本类型PrimitiveType的数组 ArrayType NewArray(JNIEnv *env, jsize length); 指定一个长度然后返回相应的...Java基本类型的数组 方法 返回值 NewArray Routines Array Type NewBooleanArray() jbooleanArray NewByteArray...2.7.5 获取数组中某个位置的元素 jobject GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index); 返回...最常见的引用类型,基本上通过JNI返回来的引用都是局部引用,例如使用NewObject,就会返回创建出来的实例的局部引用,局部引用值在该native函数有效,所有在该函数中产生的局部引用,都会在函数返回的时候自动释放...代码如下: (*env)->IsSameObject(env, obj1, obj2) 如果obj1和obj2指向相同的对象,则返回JNI_TRUE(或者1),否则返回JNI_FALSE(或者0),

2K32

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券