008android初级篇之jni中数组的传递
2015-10-28 19:28
441 查看
008android初级篇之jni中数组的传递
jbyte, unsigned char,jboolean 这三个类型相一致的,占一个字节。
java传入数组,jni提供了一系列函数GetXXArrayElements来获得
下面举一个例子
Native 层的实现
JNI:从C/C++(本地代码)中返回一个对象数组
jni中在native中数据类型的实际类型
jchar 占两个字节,跟native c中的char(占一个字节)是两个数据类型jbyte, unsigned char,jboolean 这三个类型相一致的,占一个字节。
java传入数组,jni提供了一系列函数GetXXArrayElements来获得
下面举一个例子
一个jByteArray数组,如何在java和c/c++之间传递,
从java层传递一个byte[]到native
java实现函数public native boolean changeAccountPasswd(byte[] passwd,int len);
Native 层的实现
JNIEXPORT jboolean JNICALL Java_com_frank_smart_smarthome_JniSocket_changeAccountPasswd (JNIEnv *env, jobject object,jbyteArray passwd,jint len) { jbyte *bytes; unsigned char *buf; int i; //从jbytearray获取数据到jbyte* bytes = env->GetByteArrayElements(passwd,NULL); if(bytes == NULL) { return false; } buf =(unsigned char *)calloc(len,sizeof(char)); if(buf == NULL) { return false; } for(i=0;i<len;i++) { *(buf+i)=(unsigned char)(*(bytes+i)); } //释放资源 env->ReleaseByteArrayElements(passwd,bytes,0); __android_log_write(ANDROID_LOG_ERROR,"TAG",(char*)buf); free(buf); return true; }
从Native传递一个对象数组给Java
可参考如下链接中代码,未验证JNI:从C/C++(本地代码)中返回一个对象数组
相关文章推荐
- Android Studio 教程(干货)
- Android 自定义View
- 如何使用Android蓝牙开发
- Android设置屏幕亮度
- Android中Activity出现与退出的自定义动画
- 【教程】Microsoft Visual Studio 2015 安装Android SDK
- [Android高级知识][1] 如何调用支付宝接口
- VS2015配置安卓Android和iOS开发环境
- 【Android】自定义dialog的布局样式
- android中使用百度定位sdk实时的计算移动距离
- Android通过广播实现灭屏和唤醒
- 定义XML菜单文件
- Android实战简易教程-第六十六枪(结合SharedPreferenced实现自动登录功能)
- 封装Android文件基本操作方法
- Android 图片选择器,相机拍摄和图库选择,并进行裁剪
- IMEI,MEID,ESN,IMSI,android_id 之间的区别
- Android之SurfaceView实现视频播放
- Android之ExpandableListView的属性(Group不展开)
- android四大组件之一 BroadCast
- 【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流