JNI修改Native方法数组参数中数组里面的元素值
来源:互联网 发布:怎么找淘宝优惠券 编辑:程序博客网 时间:2024/06/06 18:41
由于JNI不能直接回调Java方法,有时候我们可能会在Native方法里面的参数放上几个空的数组,让JNI往数组里面放值,Java调用完,再从数组里面取出值。
Java代码如下:
byte[] bytes = new byte[5]; int[] test = new int[3]; for(int i = 0;i<test.length;i++){ Log.d("MainActivity","调用前:"+i+"====>>>>>:"+test[i]); } new H264Android().test(test,bytes); for(int i = 0;i<test.length;i++){ Log.d("MainActivity","调用后:"+i+"====>>>>>:"+test[i]+"===>"+bytes[i]); }
在Java代码中,为JNI准备了两个空的数组,JNI往数组里面放入数据,Java调用完以后,再从数组里面取出JNI放入的值,JNI代码如下:
void JNICALL Java_com_test_vediochat_h264_H264Android_test(JNIEnv* env, jobject thiz, jintArray javaArray,jbyteArray array2) { //方法一 /* jint temp1 = 45,temp2 = 20; (*env)->SetIntArrayRegion(env,javaArray,1,1,&temp1); (*env)->SetIntArrayRegion(env,javaArray,2,1,&temp2); */ //方法二: jint * tempSize = (jint*) (*env)->GetIntArrayElements(env, javaArray, 0); tempSize[2] = 65; tempSize[3] = 75; (*env)->SetIntArrayRegion(env, javaArray, 0,3,tempSize); }
从以上代码可以看出,有两种方法可以修改数组值,第一种方法是直接调用SetXXArrayRegion方法,其中第三个参数表示数组的下标,第四个参数表示要连续修改的长度。
第二种方法是先获得数组的指针,通过指针修改,修改后再调用SetXXArrayRegion方法提交到Java数组里面(如果不提交的话,不会修改Java数组元素的值)。
0 0
- JNI修改Native方法数组参数中数组里面的元素值
- JNI修改Native方法数组参数中数组里面的元素值
- php中修改数组元素的方法
- 筛选数组里面的元素
- jni中使用数组的几个方法
- array数组扩展方法一、--删除数组中某个元素,并且修改下标,返回新数组
- 去掉数组中重复的元素方法
- PHP访问数组中元素的方法
- php中,访问数组元素的方法
- 提取字符串/数组中元素的方法
- Android jni中数组参数的传递方式
- Android jni中数组参数的传递方式(转)
- Android jni中数组参数的传递方式(转)
- Android jni中数组参数的传递方式
- js 数组赋值操作,修改数组元素的值
- JavaScript从数组中删除指定值元素的方法
- JavaScript从数组中删除指定值元素的方法
- JavaScript从数组中删除指定值元素的方法
- Quartz Cron Expression 备忘
- 我对Hibernate缓存的认知
- webDriver爬取搜狗微信
- 关于 java.net.SocketException: Connection reset错误
- 创建String的两种方式的区别
- JNI修改Native方法数组参数中数组里面的元素值
- IOS 开发 Xcode 8.1 KSImageName插件失效的问题--完美解决
- 防止网站页面被其他网站iframe引用方法
- UEFI下安装win与Ubuntu双系统
- spring-data-redis简介
- 1、SSM框架:J2EE-MVC分层及常用词解释(1)
- 转Java程序员到架构师的推荐阅读书籍
- 图形绘制
- 即点即改