JNI之C/C++層呼叫Java
阿新 • • 發佈:2019-04-17
呼叫靜態方法
jmethodID cb = env->GetStaticMethodID(thiz, "createBitmap", "(II)Landroid/graphics/Bitmap;");
jobject bitmap = env->CallStaticObjectMethod(thiz, cb, metaInfo.dataW, metaInfo.dataH);
給變數賦值
jclass snapInfoClass = env->FindClass("com/example/jni/SnapInfo"); jmethodID constructor = env->GetMethodID(snapInfoClass, "<init>", "()V"); jobject jSnapInfo = env->NewObject(snapInfoClass, constructor); jfieldID jexpTimeId = env->GetFieldID(snapInfoClass, "expTime", "[I"); jintArray jexpTime = env->NewIntArray(snapInfo.realNum); jint* expTime = env->GetIntArrayElements(jexpTime, NULL); //向expTime賦值 env->ReleaseIntArrayElements(jexpTime, expTime, JNI_OK); env->SetObjectField(jSnapInfo, jexpTimeId, jexpTime);
package com.example.jni;
public class SnapInfo {
public int[] expTime;
public float[] expGain;
public int[] expNum;
public int realNum;
public int costTime;
}