http://blog.csdn.net/stefzeus/article/details/6622011
char* Get_Surface(JNIEnv *env, jclass cls, jobject param, int sdk_version) { // Java层 jfieldID surface = env->GetFieldID(cls, "mSurface", "Landroid/view/Surface;"); jobject surface_cls = env->GetObjectField(param, surface); // Native层 jclass surface_class = env->FindClass("android/view/Surface"); jfieldID surface_native = env->GetFieldID(surface_class, "mSurface", "I"); //"I"指整型 // the JNI also supports other functions such as GetIntField and SetFloatField for accessing instance fields of primitive types. return (char*)(Surface*)env->GetIntField(surface_cls, surface_native); } 理解GetIntField (char*)(Surface*)env->GetIntField(surface_cls, surface_native); Once you have obtained the field ID, you can pass the object reference and the field ID to the appropriate instance field access function: jstr = (*env)->GetObjectField(env, obj, fid);
时间: 2024-10-25 06:41:00