打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android JNI和NDK学习(07)--JNI的常用API

1 版本和类操作API

 

2 对象域相关API

2.1 GetFieldID

jfieldID GetFieldID(JNIEnv *env, jclass clazz, const char *name, const char *sig);

函数作用:
  返回类的实例(非静态)域的域 ID。
参数说明:
  env:JNI 接口指针。
  clazz:Java 类对象。
  name: 0 终结的 UTF-8 字符串中的域名。
  sig:0 终结的 UTF-8 字符串中的域签名。

2.2 Set<type>Field

void Set<type>Field(JNIEnv *env, jobject obj, jfieldID fieldID, NativeType value);

函数作用:
  该访问器例程系列设置对象的实例(非静态)域的值。要访问的域由通过调用SetFieldID() 而得到的域 ID 指定。
参数说明:  
  env:JNI 接口指针。
  obj:Java 对象(不能为 NULL)。
  fieldID:有效的域 ID。
  value:域的新值。

<type>可以是Boolean、Char等类型,所有的Set<type>Field参考下面的函数:

void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject);void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean);void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte);void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar);void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort);void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint);void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong);void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat);void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble);

 

2.3 Get<type>Field

NativeType Get<type>Field(JNIEnv *env, jobject obj, jfieldID fieldID);

函数作用:
  该访问器例程系列返回对象的实例(非静态)域的值。要访问的域由通过调用GetFieldID() 而得到的域 ID 指定。
参数说明:
  env:JNI 接口指针。
  obj:Java 对象(不能为 NULL)。
  fieldID:有效的域 ID。

<type>可以是Boolean、Char等类型,所有的Get<type>Field参考下面的函数

jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID);jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID);jchar (*GetCharField)(JNIEnv*, jobject, jfieldID);jshort (*GetShortField)(JNIEnv*, jobject, jfieldID);jint (*GetIntField)(JNIEnv*, jobject, jfieldID);jlong (*GetLongField)(JNIEnv*, jobject, jfieldID);jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID);jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID);

 

3 字符串操作API

 

4 数组常用API

4.1 GetArrayLength

jsize (*GetArrayLength)(JNIEnv*, jarray);

函数作用:返回数组中的元素数。

 

4.2 GetObjectArrayElement

jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize);

函数作用:返回 Object 数组的元素。

 

4.3 SetObjectArrayElement

void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject);

函数作用:设置 Object 数组的元素。

 

4.4 Get<PrimitiveType>ArrayRegion

void Get<PrimitiveType>ArrayRegion(JNIEnv *env, ArrayType array, jsize start, jsize len, NativeType *buf);

函数作用:
  将基本类型数组某一区域复制到缓冲区中的一组函数。
参数说明:
  env:JNI 接口指针。
  array:Java 指针。
  start:起始下标。
  len:要复制的元素数。
  buf:目的缓冲区。

<PrimitiveType>可以是Boolean、Char等类型,所有的Get<PrimitiveType>ArrayRegion参考下面的函数:

void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray, jsize, jsize, jboolean*);void (*GetByteArrayRegion)(JNIEnv*, jbyteArray, jsize, jsize, jbyte*);void (*GetCharArrayRegion)(JNIEnv*, jcharArray, jsize, jsize, jchar*);void (*GetShortArrayRegion)(JNIEnv*, jshortArray, jsize, jsize, jshort*);void (*GetIntArrayRegion)(JNIEnv*, jintArray, jsize, jsize, jint*);void (*GetLongArrayRegion)(JNIEnv*, jlongArray, jsize, jsize, jlong*);void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray, jsize, jsize, jfloat*);void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray, jsize, jsize, jdouble*);

 

4.5 Set<PrimitiveTyep>ArrayRegion

void Set<PrimitiveType>ArrayRegion(JNIEnv *env, ArrayType array, jsize start, jsize len, NativeType *buf);


函数作用:
  将基本类型数组的某一区域从缓冲区中复制回来的一组函数。
参数说明:
  Env:JNI 接口指针。
  array:
  Java 数组。
  start:起始下标。
  len:要复制的元素数。
  buf:源缓冲区。

<PrimitiveType>可以是Boolean、Char等类型,所有的Set<PrimitiveType>ArrayRegion参考下面的函数:

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*);

 

更详细内容,请参考“JNI完全手册


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android JNI开发高级篇
java本地接口调用基础篇一(共四篇)
Android JNI开发摘录(一)之JNI串处理
JNI技术与Android应用(0)
Android系统移植与平台开发- JNI介绍
Jni接口-深入研究参数的传递
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服