diff options
Diffstat (limited to 'platform/android/java_glue.cpp')
-rw-r--r-- | platform/android/java_glue.cpp | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index 127aeb7756..8f91f7cc4a 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -440,7 +440,8 @@ public: case Variant::STRING: { jobject o = env->CallObjectMethodA(instance,E->get().method,v); - String singname = env->GetStringUTFChars((jstring)o, NULL ); + String str = env->GetStringUTFChars((jstring)o, NULL ); + ret=str; } break; case Variant::STRING_ARRAY: { @@ -569,6 +570,11 @@ static jmethodID _hideKeyboard=0; static jmethodID _setScreenOrientation=0; static jmethodID _getUniqueID=0; +static jmethodID _playVideo=0; +static jmethodID _isVideoPlaying=0; +static jmethodID _pauseVideo=0; +static jmethodID _stopVideo=0; + static void _gfx_init_func(void* ud, bool gl2) { @@ -629,17 +635,43 @@ static void _hide_vk() { env->CallVoidMethod(godot_io, _hideKeyboard); }; +// virtual Error native_video_play(String p_path); +// virtual bool native_video_is_playing(); +// virtual void native_video_pause(); +// virtual void native_video_stop(); + +static void _play_video(const String& p_path) { + +} + +static bool _is_video_playing() { + JNIEnv* env = ThreadAndroid::get_env(); + return env->CallBooleanMethod(godot_io, _isVideoPlaying); + //return false; +} + +static void _pause_video() { + JNIEnv* env = ThreadAndroid::get_env(); + env->CallVoidMethod(godot_io, _pauseVideo); +} + +static void _stop_video() { + JNIEnv* env = ThreadAndroid::get_env(); + env->CallVoidMethod(godot_io, _stopVideo); +} + JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook) { __android_log_print(ANDROID_LOG_INFO,"godot","**INIT EVENT! - %p\n",env); initialized=true; - _godot_instance=activity; JavaVM *jvm; env->GetJavaVM(&jvm); + _godot_instance=env->NewGlobalRef(activity); +// _godot_instance=activity; __android_log_print(ANDROID_LOG_INFO,"godot","***************** HELLO FROM JNI!!!!!!!!"); @@ -676,6 +708,11 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, _showKeyboard = env->GetMethodID(c,"showKeyboard","(Ljava/lang/String;)V"); _hideKeyboard = env->GetMethodID(c,"hideKeyboard","()V"); _setScreenOrientation = env->GetMethodID(c,"setScreenOrientation","(I)V"); + + _playVideo = env->GetMethodID(c,"playVideo","(Ljava/lang/String;)V"); + _isVideoPlaying = env->GetMethodID(c,"isVideoPlaying","()Z"); + _pauseVideo = env->GetMethodID(c,"pauseVideo","()V"); + _stopVideo = env->GetMethodID(c,"stopVideo","()V"); } ThreadAndroid::make_default(jvm); @@ -686,7 +723,7 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, - os_android = new OS_Android(_gfx_init_func,env,_open_uri,_get_data_dir,_get_locale, _get_model,_show_vk, _hide_vk,_set_screen_orient,_get_unique_id); + os_android = new OS_Android(_gfx_init_func,env,_open_uri,_get_data_dir,_get_locale, _get_model,_show_vk, _hide_vk,_set_screen_orient,_get_unique_id, _play_video, _is_video_playing, _pause_video, _stop_video); os_android->set_need_reload_hooks(p_need_reload_hook); char wd[500]; @@ -781,8 +818,10 @@ static void _initialize_java_modules() { jmethodID getClassLoader = env->GetMethodID(activityClass,"getClassLoader", "()Ljava/lang/ClassLoader;"); jobject cls = env->CallObjectMethod(_godot_instance, getClassLoader); + //cls=env->NewGlobalRef(cls); jclass classLoader = env->FindClass("java/lang/ClassLoader"); + //classLoader=(jclass)env->NewGlobalRef(classLoader); jmethodID findClass = env->GetMethodID(classLoader, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); @@ -800,10 +839,17 @@ static void _initialize_java_modules() { ERR_EXPLAIN("Couldn't find singleton for class: "+m); ERR_CONTINUE(!singletonClass); } + //singletonClass=(jclass)env->NewGlobalRef(singletonClass); __android_log_print(ANDROID_LOG_INFO,"godot","****^*^*?^*^*class data %x",singletonClass); jmethodID initialize = env->GetStaticMethodID(singletonClass, "initialize", "(Landroid/app/Activity;)Lcom/android/godot/Godot$SingletonBase;"); + if (!initialize) { + + ERR_EXPLAIN("Couldn't find proper initialize function 'public static Godot.SingletonBase Class::initialize(Activity p_activity)' initializer for singleton class: "+m); + ERR_CONTINUE(!initialize); + + } jobject obj = env->CallStaticObjectMethod(singletonClass,initialize,_godot_instance); __android_log_print(ANDROID_LOG_INFO,"godot","****^*^*?^*^*class instance %x",obj); jobject gob = env->NewGlobalRef(obj); |