android jni操作数组
2013-05-06 10:51
309 查看
java 8种基本类型的数组转换成c语言的数组
jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*);
jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*);
jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*);
jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*);
jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*);
jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*);
jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*);
jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*);
获取数组的长度:
jsize (*GetArrayLength)(JNIEnv*, jarray);
释放数组的内存:
void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray,
jboolean*, jint);
void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray,
jbyte*, jint);
void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray,
jchar*, jint);
void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray,
jshort*, jint);
void (*ReleaseIntArrayElements)(JNIEnv*, jintArray,
jint*, jint);
void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray,
jlong*, jint);
void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray,
jfloat*, jint);
void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray,
jdouble*, jint);
创建一个数组
jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize);
jbyteArray (*NewByteArray)(JNIEnv*, jsize);
jcharArray (*NewCharArray)(JNIEnv*, jsize);
jshortArray (*NewShortArray)(JNIEnv*, jsize);
jintArray (*NewIntArray)(JNIEnv*, jsize);
jlongArray (*NewLongArray)(JNIEnv*, jsize);
jfloatArray (*NewFloatArray)(JNIEnv*, jsize);
jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize);
给数组赋值
void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray,
jsize, jsize, const jboolean*);
void (*SetByteArrayRegion)(JNIEnv*, jbyteArray,
jsize, jsize, const jbyte*);
void (*SetCharArrayRegion)(JNIEnv*, jcharArray,
jsize, jsize, const jchar*);
void (*SetShortArrayRegion)(JNIEnv*, jshortArray,
jsize, jsize, const jshort*);
void (*SetIntArrayRegion)(JNIEnv*, jintArray,
jsize, jsize, const jint*);
void (*SetLongArrayRegion)(JNIEnv*, jlongArray,
jsize, jsize, const jlong*);
void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray,
jsize, jsize, const jfloat*);
void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray,
jsize, jsize, const jdouble*);
//传给C语言数组 JNIEXPORT jintArray JNICALL Java_cn_my_ndkpassdata_DataProvider_intMethod (JNIEnv * env, jobject obj, jintArray arr){ //获取数组的长度 int len=(*env)->GetArrayLength(env,arr); LOGI("LEN=%d\n",len); //获取int类型的数组 jint * elems=(*env)->GetIntArrayElements(env,arr,NULL); jint temp=0; int i=0; for(;i<len;i++) { elems[i]+=10; } //把elems复制给arr,从第0位开始,长度位len (*env)->SetIntArrayRegion(env,arr,0,len,elems); (*env)->ReleaseByteArrayElements(env, elems, 0); return arr; }
相关文章推荐
- Android jni 编程3(对基本类型一维整型数组的操作)总结版
- android jni操作数组
- Android JNI数组操作
- Android jni 编程2(对基本类型一维整型数组的操作)
- Android中的JNI数组操作教程
- android jni操作数组
- Android JNI开发摘录(二)之JNI数组处理
- android - JNI - 一维数组、二维数组的访问与使用
- Android通过JNI操作串口
- [android jni]访问数组(JNI)
- ANDROID JNI之JAVA域与c域的互操作
- JNI及Android JNI 开发基本知识和具体操作步骤
- JNI及Android JNI 开发基本知识和具体操作步骤
- Android-调用本地方法传递数组参数/NDK-JNI开发实例(五)
- android Unable to instantiate activity ComponentInfo & cocos jni操作ui
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
- 使用jni接口完成android本地程序的运行--具体的操作
- android关于jni反射的一些操作
- Android程序员学PHP开发(25)-数组操作相关函数(3)拆组排列篇-PhpStorm
- Android IOS WebRTC 音视频开发总结(十六)-- 音频设备操作之opensl与jni