mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
41 lines
886 B
C++
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
|