2023-11-26 22:29:11 +08:00

41 lines
886 B
C++

#ifndef SHAMROCK_JNIHELPER_H
#define SHAMROCK_JNIHELPER_H
#include "android/log.h"
namespace JNIHelper {
static JavaVM *global_jvm = nullptr;
void initJavaVM(JavaVM *jvm) {
global_jvm = jvm;
}
JNIEnv *getJNIEnv(int *attach) {
if (global_jvm == NULL) return NULL;
*attach = 0;
JNIEnv *jni_env = NULL;
int status = global_jvm->GetEnv((void **)&jni_env, JNI_VERSION_1_6);
if (status == JNI_EDETACHED || jni_env == NULL) {
status = global_jvm->AttachCurrentThread(&jni_env, NULL);
if (status < 0) {
jni_env = NULL;
} else {
*attach = 1;
}
}
return jni_env;
}
jint delJNIEnv() {
if (global_jvm == nullptr) return 0;
return global_jvm->DetachCurrentThread();
}
}
#endif //SHAMROCK_JNIHELPER_H