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*);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章