在C++中编写Native方法
需要包含如下头文件:
#include "Android/AndroidApplication.h"
#include "Android/AndroidJNI.h"
方法格式如下:
extern "C"
JNIEXPORT void JNICALL
Java_com_epicgames_ue4_GameActivity_onNativeTreadStart(JNIEnv *env, jobject instance)
{
// 执行一些操作
}
这里博主建议不要手动打,容易出错,可以用Android Studio作为IDE:新建一个项目,包名为com.epicgames.ue4,Activity类的名字为GameActivity。
在C++中调用GameActivity中的方法
1、获取Env指针:
JNIEnv* Env = FAndroidApplication::GetJavaEnv();
2、获取方法ID:
jmethodID id_getMainControllerOrientation = FJavaWrapper::FindMethod(
Env, // Env
FJavaWrapper::GameActivityClassID, // 所在的类,即GameActivity
"getMainControllerOrientation", // 方法名
"()[F", // 方法签名,通过反汇编得到
false); // 是否为可选
3、通过ID调用方法:
jfloatArray jfArray = (jfloatArray)FJavaWrapper::CallObjectMethod(Env, FJavaWrapper::GameActivityThis, id_getMainControllerOrientation);