如接收float 类型数组,jni 定义jfloatarray 类型数据 通过env->releasefloatarrayelements 将float 数据拷贝成jfloatarray类型
jni 部分:
static jfloatarray tempmlssensorread_native(jnienv* env , jobject /* clazz */,jint length){ float * address=(float *)g_device->mlx90640_read(g_device); float *example =new float [768]{}; for(int i=0;i<768;i++){ example[i]=address[i]; } jfloatarray copyarray = env->newfloatarray(768); env->releasefloatarrayelements(copyarray,example,0); return copyarray; } static const jninativemethod method_table[] = { { "nativetempmlssensoropen", "()i", (void*)tempmlssensoropen_native }, { "nativetempmlssensorwrite", "(i)i", (void*)tempmlssensorwrite_native }, + { "nativetempmlssensorread", "(i)[f", (void*)tempmlssensorread_native }, { "nativetempmlssensorreadvalue", "()i", (void*)tempmlssensorread_native_value }, { "nativetempmlssensorioctl", "(ii)i", (void*)tempmlssensorioctl_native }, { "nativetempmlssensorclose", "()i", (void*)tempmlssensorclose_native },
aidl 接口添加float 数组类型
interface itempmlssensor { int tempmlssensoropen(); int tempmlssensorwrite(int value); + float[] tempmlssensorread(int length); int tempmlssensorreadvalue(); int tempmlssensorioctl(int cmd, int value); int tempmlssensorclose(); }
java 类型数组类型
@override + public float[] tempmlssensorread(int length) throws android.os.remoteexception{ + return nativetempmlssensorread(length); + } public static native int nativetempmlssensoropen(); public static native int nativetempmlssensorwrite(int value); + public static native float [] nativetempmlssensorread(int length); public static native int nativetempmlssensorreadvalue(); public static native int nativetempmlssensorioctl(int cmd,int value); public static native int nativetempmlssensorclose();
到此这篇关于java 如何接收kernel传过来的数组的文章就介绍到这了,更多相关java接收kernel数组内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论