Android NDK:JNI 数组的输入输出
2018-01-27 17:26
218 查看
假设native方法如下(以float类型为例):
public static native float[] featureExtract(float[] input);
对应的C++代码如下:
extern "C" JNIEXPORT jfloatArray JNICALL Java_com_elelvoc_app_speechwakeapp_tool_Toolkit_featureExtract (JNIEnv *env, jclass cla, jfloatArray arr )
接下来把 arr参数转换为jfloat *类型的即可,也能顺便取到arr的长度
代码如下:
jfloat *wav_date; wav_date = env->GetFloatArrayElements(arr, 0); const jint length = env->GetArrayLength(arr);
返回的时候也是类似(假设我们返回长度为40的float数组)
float *log_mel = new float[40]; jfloatArray result = env->NewFloatArray(40); env -> SetFloatArrayRegion(result,0,40,log_mel);
用完之后别忘了释放
env->ReleaseFloatArrayElements(arr , wav_date, 0);
注意:
如果你的数组的类型是intenv->GetFloatArrayElements
要改成
env->GetIntArrayElements
SetFloatArrayRegion
要改成
SetIntArrayRegion
其他基本数据类型类似。
相关文章推荐
- Android NDK(四):JNI 数组
- Android NDK - JNI 传递自定义类型及其数组传递
- android ndk 开发jni调用对象方法,数组参数
- NDK-JNI语法-数组处理+全局引用+异常处理+缓存策略
- 访问数组(JNI)之申请释放
- eclipse android ndk 提示Type 'JNIEnv' could not be resolved 等信息解决办法
- JNI传递字符串数组J-StringArray
- android jni操作数组
- Android NDK开发之JNI调用Java对象
- JNI中基本类型数组的传递方法(无需拷贝数据!!!)
- android ndk 01 c语言 基本数据类型_输入输出_指针
- android NDK开发之NDK与JNI
- Android NDk-JNi开发(一)NDK环境变量的配置
- JNI数组(原始数据类型)访问示例
- 读取数据到结构体数组(重载输入输出操作符)
- Android NDK环境搭建及调用JNI的简单步骤
- Android NDK之JNI陷阱
- Android NDK开发之数组类型的操作
- 输入输出,大数值,数组
- java数组输入输出