0
我试图让Android DisplayMetrics类中使用NDK一个NativeActivity的应用程序。我想调用的函数是在这些线路的:通过JNI(安卓NDK)传递由C到Java对象(DisplayMetrics)
DisplayMetrics metrics = new DisplayMetrics();
WindowManager wm = this.getWindowManager();
Display display = wm.getDefaultDisplay();
display.getMetrics(metrics);
到目前为止,我已经得到了目标设置和方法调用准备如下
JNIEnv *jni;
state->activity->vm->AttachCurrentThread(&jni, NULL);
jclass activityClass = jni->FindClass("android/app/NativeActivity");
jclass windowManagerClass = jni->FindClass("android/view/WindowManager");
jclass displayClass = jni->FindClass("android/view/Display");
jclass displayMetricsClass = jni->FindClass("android/util/DisplayMetrics");
jmethodID getWindowManager = jni->GetMethodID(activityClass, "getWindowManager", "()Landroid/view/WindowManager;");
jmethodID getDefaultDisplay = jni->GetMethodID(windowManagerClass, "getDefaultDisplay", "()Landroid/view/Display;");
jmethodID getMetrics = jni->GetMethodID(displayClass, "getMetrics", "(android/util/DisplayMetrics)L;");
jmethodID newDisplayMetrics = jni->GetMethodID(displayMetricsClass, "DisplayMetrics", "()Landroid/util/DisplayMetrics;");
jobject metrics = jni->CallObjectMethod(displayMetricsClass, newDisplayMetrics);
jobject windowManager = jni->CallObjectMethod(state->activity->clazz, getWindowManager);
jobject display = jni->CallObjectMethod(windowManager, getDefaultDisplay);
不过,现在我不知道知道如何通过引用将度量jobject传递给display.getmetrics()函数以便操作系统调整它并正确填充它,以便我可以读取其中的字段