android 中java与JNI数据交互
来源:互联网 发布:java开发简历自我评价 编辑:程序博客网 时间:2024/05/29 06:38
在android编程中,经常要使用到JNI调用native方法,这时就无法避免要解决java与native数据交互的问题。
下面是一个数据从java传递给JNI,处理之后在传递给java数据的例子(java ->JNI ->java)
在java中定义一个本地方法:
public native int DevICCardThreadCommand(byte cardno,byte[] wbuf, int wlen, byte[] rbuf,int[] rlen);
其中wbuf、wlen是java传递给JNI的数据,rbuf、rlen是JNI传递给java的数据。
下面是该本地方法在JNI中的实现:
JNIEXPORT jint JNICALL Java_xgd_android_ICCardAPI_DevICCardThreadCommand (JNIEnv *env, jobject thiz, jbyte cardno, jbyteArray wbuf, jint wlen, jbyteArray rbuf, jintArray rlen){int ret = -1;jbyte *wbody;jbyte *body ;int i;jbyte wbuffer[wlen];jbyte buf[256];int len=0;jint *jLen;//java数据传递给JNI,wbuf->wbody->wbufferwbody = (*env)->GetByteArrayElements(env, wbuf, 0);for(i=0; i<wlen; i++) {wbuffer[i] = wbody[i];}(*env)->ReleaseByteArrayElements(env, wbuf, wbody, 0);memset(buf,0x00,256*sizeof(jbyte));ret = dev_iccard_thread_command(cardno,wbuffer,wlen,buf,&len);//JNI数据传递给JAVA, buf->body->rbuf len->jLen->rlen[]body = (*env)->GetByteArrayElements(env, rbuf, 0);for(i=0; i<len; i++) {body[i] = buf[i];}(*env)->ReleaseByteArrayElements(env, rbuf, body, 0);jLen = (*env)->GetIntArrayElements(env, rlen, 0);jLen[0] = len;(*env)->ReleaseIntArrayElements(env, rlen, jLen, 0);return ret;}
在jni中注意释放内存,防止内存泄漏。
- android 中java与JNI数据交互
- android jni native 与java 交互
- java与c/c++之间的数据交互-----jni点滴
- android JNI java与C++交互篇(三)
- JNI开发中native层与Java层的交互
- Android Java与JNI层互传数据总结
- Android中Js与java的交互
- JsBridge android中java与js交互
- Android中Java 与 JavaScript交互
- android java与webview中js交互
- Android中Java与底层交互
- android开发中java与javasciprt交互
- Android中Java代码与JavaScript交互
- C++与java通过jni交互
- java与c/c++之间的数据交互-----jni点滴【转】
- java与c/c++之间的数据交互-----jni点滴【转】
- java与c/c++之间的数据交互-----jni点滴【转】【有用】
- java与c/c++之间的数据交互—–jni点滴
- ibatis类型映射异常
- Linux网络编程-学习笔记
- php学习笔记(二十二)PDO的安装和初步使用
- 国内网赚和国外网赚的区别
- 【Android Dev Guide - 04】 - Media - 学习使用MediaPlayer播放音乐
- android 中java与JNI数据交互
- 图像 的 四种基本类型
- tools - gpupdate to update group policy settings
- servlet的生命周期
- Hive 入门
- vs2010 安装mvc3
- ORA-01102 cannot mount database in EXCLUSIVE mode 解决办法
- Oracle笔记_序列
- Nginx日志按天分割的解决方案 与 实施