jni和java对应关系


Java 类型本地类型描述
booleanjbooleanC/C++8位整型
bytejbyteC/C++带符号的8位整型
charjcharC/C++无符号的16位整型
shortjshortC/C++带符号的16位整型
intjintC/C++带符号的32位整型
longjlongC/C++带符号的64位整型e
floatjfloatC/C++32位浮点型
doublejdoubleC/C++64位浮点型
Objectjobject任何Java对象,或者没有对应java类型的对象
ClassjclassClass对象
Stringjstring字符串对象
Object[]jobjectArray任何对象的数组
boolean[]jbooleanArray布尔型数组
byte[]jbyteArray比特型数组
char[]jcharArray字符型数组
short[]jshortArray短整型数组
int[]jintArray整型数组
long[]jlongArray长整型数组
float[]jfloatArray浮点型数组
double[]jdoubleArray双浮点型数组


函数Java 数组类型本地类型
GetBooleanArrayElementsjbooleanArrayjboolean
GetByteArrayElementsjbyteArrayjbyte
GetCharArrayElementsjcharArrayjchar
GetShortArrayElementsjshortArrayjshort
GetIntArrayElementsjintArrayjint
GetLongArrayElementsjlongArrayjlong
GetFloatArrayElementsjfloatArrayjfloat
GetDoubleArrayElementsjdoubleArrayjdouble
eg: 
  1. jfloatArray jArray = env->NewFloatArray(8);


函数描述
GetFieldID得到一个实例的域的ID
GetStaticFieldID得到一个静态的域的ID
GetMethodID得到一个实例的方法的ID
GetStaticMethodID得到一个静态方法的ID


定义字符串:

  1. jobjectArray arrays = 0;
  2. //定义长度
  3. jsize len = 20;
  4. arrays = (*jniEnv)->NewObjectArray(jniEnv, len, (*jniEnv)->FindClass(
  5. jniEnv, "java/lang/String"), 0);
  6. jstring jstr;
  7. char* sa[] = { "Hello,", "world!", "JNI", "很", "好玩" };
  8. int i = 0;
  9. for (; i < len; i++)
  10. {
  11. jstr = (*env)->NewStringUTF(env, sa[i]);
  12. (*env)->SetObjectArrayElement(env, arrays, i, jstr);//必须放入jstring
  13. }

获取数组的值:

  1. int k = 0;
  2. for (; k < len; k++) {
  3. jstring string = (jstring)((*jniEnv)->GetObjectArrayElement(jniEnv,
  4. arrays, k));
  5. if (string != NULL) {
  6. char * c = (*jniEnv)->GetStringUTFChars(jniEnv, string, 0);
  7. __android_log_print(ANDROID_LOG_INFO, "JNIMsg", c);
  8. }
  9. }
中间层数据类型转化:
  1. char* ---> jstring (*jniEnv)->NewStringUTF(jniEnv,char*)
  2. jstring ---> char (*jniEnv)->GetStringUTFChars(jniEnv, jstring, 0);
  3. long ---> char* ltoa(long,char*,10); sprintf(csendBodyLen,"%ld",sendBodyLen);
  4. char* ---> long *long = atol(char*);







posted on 2016-10-27 15:20  ①块腹肌  阅读(821)  评论(0编辑  收藏  举报

导航