+需要在.build.cs中添加“Launch”模块
- 头文件
#if PLATFORM_ANDROID
#include "Android/AndroidApplication.h"
#include "Android/AndroidJni.h"
#endif
- C++创建 Java类实例
JNIEnv* Env = FAndroidApplication::GetJavaEnv();
jclass AndroidCameraClass = FAndroidApplication::FindJavaClass("org/getid/facerecognition/AndroidCamera");
// Create Camera Instance
jmethodID ConstructFunc = Env->GetMethodID(AndroidCameraClass, "<init>", "()V");
jobject AndroidCameraObject = Env->NewObject(AndroidCameraClass, ConstructFunc);
midSetPreviewSize = Env->GetMethodID(AndroidCameraClass, "SetPreviewSize", "(II)V");
- (II)V 指的是 SetPreviewSize 返回值类型Void 两个参数分别是int int 具体详细规则查找Jni
- C++ 调用Java函数
Env->CallVoidMethod(AndroidCameraObject, midSetPreviewSize, width, height);
-
Java调用C++函数
C++函数定义extern "C" void Java_org_getid_facerecognition_AndroidCamera_InitJNI(JNIEnv* env, jobject thiz) { // ALOGW("c++ InitJNI AndroidCameraObject "); }
-
在org/getid/facerecognition/AndroidCamera.java中
public native boolean InitJNI(); public AndroidCamera() { InitJNI(); }