android JNI float *转MutableList

news/2025/2/19 16:36:17/
data class Test(var data:MutableList<Float>
)JNIEXPORT void JNICALL Java_NativeUtils_assignFloatArrayToHealth(JNIEnv *env, jclass clazz, jobject obj, jfloatArray cData) {jclass objClass = env->GetObjectClass(obj);// 获取 Test类中的 data 属性jfieldID dataField = env->GetFieldID(objClass , "data", "Ljava/util/List;");// 创建一个 ArrayList 对象,并将 float 数组中的数据添加到列表jobject arrayList = env->NewObject(env->FindClass("java/util/ArrayList"), env->GetMethodID(env->FindClass("java/util/ArrayList"), "<init>", "()V"));jsize length = env->GetArrayLength(cData);jfloat *floatData = env->GetFloatArrayElements(cData, NULL);jmethodID arrayListAddMethod = env->GetMethodID(env->FindClass("java/util/ArrayList"), "add", "(Ljava/lang/Object;)Z");jclass floatClass = env->FindClass("java/lang/Float");jmethodID floatConstructor = env->GetMethodID(floatClass, "<init>", "(F)V");for (int i = 0; i < length; i++) {jfloat value = floatData[i];jobject floatValue = env->NewObject(floatClass, floatConstructor, value);env->CallBooleanMethod(arrayList, arrayListAddMethod, floatValue);}env->ReleaseFloatArrayElements(cData, floatData, 0);// 将 ArrayList 对象赋值给 Health 类中的 data 属性env->SetObjectField(obj, dataField, arrayList);
}

在 JNI 方法中,我们接收了一个 Test对象和一个 float 数组作为参数。我们通过 JNI 方法获取 Test类的引用和其中的 data 字段,然后创建一个 ArrayList 对象,将 float* 数据转换为 Float 对象并添加到列表中,最后将列表赋值给 Test对象的 data 属性。


http://www.ppmy.cn/news/1379591.html

相关文章

基于MPPT的太阳能光伏电池simulink性能仿真,对比扰动观察法,增量电导法,恒定电压法

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 扰动观察法 (Perturb and Observe Method) 4.2 增量电导法 (Incremental Conductance Method) 4.3 恒定电压法 (Constant Voltage Method) 5.完整工程文件 1.课题概述 在simulink中&#xff0c;实…

Unity:Animation 三 Playable、ImportModel

目录​​​​​​​ 1. Playables API 1.1 Playable vs Animation 1.2 Advantages of using the Playables API 1.3 PlayableGraph Visualizer 2. Creating models outside of Unity 2.1 Preparing your model files for export 2.1.1 Scaling factors 2.1.2 优化模型文…

AHU 汇编 实验五

实验名称&#xff1a;实验五 分支与循环程序设计 二、实验内容&#xff1a;从键盘输入一个四位的16进制数&#xff08;其中字母为大写&#xff09;&#xff0c;将其转化为二进制数提示输出。 实验过程&#xff1a; 源代码: data segmentbuff1 db Please input a number(H):$b…

Docker初体验之安装部署和镜像加速(openeuler版)

安装部署&#xff1a; 本人使用的为openeuler版本&#xff0c;无法使用二进制进行安装&#xff08;使用二进制安装时&#xff0c;无法使用docker中的补全命令&#xff0c;需要重新进行配置&#xff09;在此使用yum直接进行安装。 [rootlocalhost ~]# yum install docker 镜像…

Rust 的 std::error::Error

std::error::Error 是 Rust 标准库中的一个 trait&#xff0c;它定义了一个通用的错误处理接口。在 Rust 中&#xff0c;错误处理是一个重要的部分&#xff0c;而 Error trait 使得不同类型的错误可以以一种统一的方式被处理。 Error trait 的定义 Error trait 定义非常简单&…

STM32单片机基本原理与应用(十一)

语音识别实验 此实验采用STM32核心板 LD3320模块&#xff0c;通过初始化LD3320并写入待识别关键词&#xff0c;对麦克风说出相应关键词&#xff0c;实现实训平台上的流水灯相应变化的效果。 LD3320 是一颗基于非特定人语音识别 &#xff08;SI-ASR&#xff1a;Speaker-Indepen…

【C++】关联式容器

目录 前言&#xff1a; 一&#xff0c;set容器 二&#xff0c;multiset容器 三&#xff0c;map容器 四&#xff0c;multimap容器 前言&#xff1a; 在C中&#xff0c;STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、 forward_list(C11)等&#xff0c;这…

2024暑期实习八股笔记

文章目录 自我介绍MySQL索引索引种类、B树聚簇索引、非聚簇索引联合索引、最左前缀匹配原则索引下推索引失效索引优化 日志、缓冲池redo log&#xff08;重做日志&#xff09;刷盘时机日志文件组 bin log&#xff08;归档日志&#xff09;记录格式写入机制 两阶段提交undo log&…