Merge pull request #7201 from volzhs/android-alert
Add alert window on Android
This commit is contained in:
commit
ab637bc812
4 changed files with 38 additions and 5 deletions
|
@ -295,6 +295,25 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void alert(final String message, final String title) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getInstance());
|
||||
builder.setMessage(message).setTitle(title);
|
||||
builder.setPositiveButton(
|
||||
"OK",
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
dialog.cancel();
|
||||
}
|
||||
});
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static Godot _self;
|
||||
|
||||
|
|
|
@ -679,6 +679,7 @@ static jmethodID _isVideoPlaying=0;
|
|||
static jmethodID _pauseVideo=0;
|
||||
static jmethodID _stopVideo=0;
|
||||
static jmethodID _setKeepScreenOn=0;
|
||||
static jmethodID _alertDialog=0;
|
||||
|
||||
static void _gfx_init_func(void* ud, bool gl2) {
|
||||
|
||||
|
@ -783,6 +784,13 @@ static void _set_keep_screen_on(bool p_enabled) {
|
|||
env->CallVoidMethod(_godot_instance, _setKeepScreenOn, p_enabled);
|
||||
}
|
||||
|
||||
static void _alert(const String& p_message, const String& p_title) {
|
||||
JNIEnv* env = ThreadAndroid::get_env();
|
||||
jstring jStrMessage = env->NewStringUTF(p_message.utf8().get_data());
|
||||
jstring jStrTitle = env->NewStringUTF(p_title.utf8().get_data());
|
||||
env->CallVoidMethod(_godot_instance, _alertDialog, jStrMessage, jStrTitle);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook, jobjectArray p_cmdline,jobject p_asset_manager) {
|
||||
|
||||
__android_log_print(ANDROID_LOG_INFO,"godot","**INIT EVENT! - %p\n",env);
|
||||
|
@ -820,6 +828,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv * e
|
|||
|
||||
_on_video_init = env->GetMethodID(cls, "onVideoInit", "(Z)V");
|
||||
_setKeepScreenOn = env->GetMethodID(cls,"setKeepScreenOn","(Z)V");
|
||||
_alertDialog = env->GetMethodID(cls,"alert","(Ljava/lang/String;Ljava/lang/String;)V");
|
||||
|
||||
jclass clsio = env->FindClass("org/godotengine/godot/Godot");
|
||||
if (cls) {
|
||||
|
@ -883,7 +892,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv * e
|
|||
|
||||
__android_log_print(ANDROID_LOG_INFO,"godot","CMDLINE LEN %i - APK EXPANSION %I\n",cmdlen,int(use_apk_expansion));
|
||||
|
||||
os_android = new OS_Android(_gfx_init_func,env,_open_uri,_get_data_dir,_get_locale, _get_model, _get_screen_dpi, _show_vk, _hide_vk,_set_screen_orient,_get_unique_id, _get_system_dir, _play_video,_is_video_playing, _pause_video, _stop_video, _set_keep_screen_on, use_apk_expansion);
|
||||
os_android = new OS_Android(_gfx_init_func,env,_open_uri,_get_data_dir,_get_locale, _get_model, _get_screen_dpi, _show_vk, _hide_vk,_set_screen_orient,_get_unique_id, _get_system_dir, _play_video,_is_video_playing, _pause_video, _stop_video, _set_keep_screen_on, _alert, use_apk_expansion);
|
||||
os_android->set_need_reload_hooks(p_need_reload_hook);
|
||||
|
||||
char wd[500];
|
||||
|
|
|
@ -246,9 +246,11 @@ void OS_Android::print(const char *p_format, ... ) {
|
|||
|
||||
}
|
||||
|
||||
void OS_Android::alert(const String& p_alert) {
|
||||
void OS_Android::alert(const String& p_alert,const String& p_title) {
|
||||
|
||||
print("ALERT: %s\n",p_alert.utf8().get_data());
|
||||
if (alert_func)
|
||||
alert_func(p_alert, p_title);
|
||||
}
|
||||
|
||||
|
||||
|
@ -812,7 +814,7 @@ String OS_Android::get_joy_guid(int p_device) const {
|
|||
return input->get_joy_guid_remapped(p_device);
|
||||
}
|
||||
|
||||
OS_Android::OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFunc p_open_uri_func, GetDataDirFunc p_get_data_dir_func,GetLocaleFunc p_get_locale_func,GetModelFunc p_get_model_func, GetScreenDPIFunc p_get_screen_dpi_func, ShowVirtualKeyboardFunc p_show_vk, HideVirtualKeyboardFunc p_hide_vk, SetScreenOrientationFunc p_screen_orient,GetUniqueIDFunc p_get_unique_id,GetSystemDirFunc p_get_sdir_func, VideoPlayFunc p_video_play_func, VideoIsPlayingFunc p_video_is_playing_func, VideoPauseFunc p_video_pause_func, VideoStopFunc p_video_stop_func, SetKeepScreenOnFunc p_set_keep_screen_on_func, bool p_use_apk_expansion) {
|
||||
OS_Android::OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFunc p_open_uri_func, GetDataDirFunc p_get_data_dir_func,GetLocaleFunc p_get_locale_func,GetModelFunc p_get_model_func, GetScreenDPIFunc p_get_screen_dpi_func, ShowVirtualKeyboardFunc p_show_vk, HideVirtualKeyboardFunc p_hide_vk, SetScreenOrientationFunc p_screen_orient,GetUniqueIDFunc p_get_unique_id,GetSystemDirFunc p_get_sdir_func, VideoPlayFunc p_video_play_func, VideoIsPlayingFunc p_video_is_playing_func, VideoPauseFunc p_video_pause_func, VideoStopFunc p_video_stop_func, SetKeepScreenOnFunc p_set_keep_screen_on_func, AlertFunc p_alert_func, bool p_use_apk_expansion) {
|
||||
|
||||
use_apk_expansion=p_use_apk_expansion;
|
||||
default_videomode.width=800;
|
||||
|
@ -846,6 +848,7 @@ OS_Android::OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFu
|
|||
|
||||
set_screen_orientation_func=p_screen_orient;
|
||||
set_keep_screen_on_func = p_set_keep_screen_on_func;
|
||||
alert_func = p_alert_func;
|
||||
use_reload_hooks=false;
|
||||
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ typedef bool (*VideoIsPlayingFunc)();
|
|||
typedef void (*VideoPauseFunc)();
|
||||
typedef void (*VideoStopFunc)();
|
||||
typedef void (*SetKeepScreenOnFunc)(bool p_enabled);
|
||||
typedef void (*AlertFunc)(const String&, const String&);
|
||||
|
||||
class OS_Android : public OS_Unix {
|
||||
public:
|
||||
|
@ -154,6 +155,7 @@ private:
|
|||
VideoPauseFunc video_pause_func;
|
||||
VideoStopFunc video_stop_func;
|
||||
SetKeepScreenOnFunc set_keep_screen_on_func;
|
||||
AlertFunc alert_func;
|
||||
|
||||
public:
|
||||
|
||||
|
@ -181,7 +183,7 @@ public:
|
|||
|
||||
virtual void vprint(const char* p_format, va_list p_list, bool p_stderr=false);
|
||||
virtual void print(const char *p_format, ... );
|
||||
virtual void alert(const String& p_alert);
|
||||
virtual void alert(const String& p_alert,const String& p_title="ALERT!");
|
||||
|
||||
|
||||
virtual void set_mouse_show(bool p_show);
|
||||
|
@ -260,7 +262,7 @@ public:
|
|||
virtual String get_joy_guid(int p_device) const;
|
||||
void joy_connection_changed(int p_device, bool p_connected, String p_name);
|
||||
|
||||
OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFunc p_open_uri_func, GetDataDirFunc p_get_data_dir_func,GetLocaleFunc p_get_locale_func,GetModelFunc p_get_model_func, GetScreenDPIFunc p_get_screen_dpi_func, ShowVirtualKeyboardFunc p_show_vk, HideVirtualKeyboardFunc p_hide_vk, SetScreenOrientationFunc p_screen_orient,GetUniqueIDFunc p_get_unique_id,GetSystemDirFunc p_get_sdir_func, VideoPlayFunc p_video_play_func, VideoIsPlayingFunc p_video_is_playing_func, VideoPauseFunc p_video_pause_func, VideoStopFunc p_video_stop_func, SetKeepScreenOnFunc p_set_keep_screen_on_func, bool p_use_apk_expansion);
|
||||
OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFunc p_open_uri_func, GetDataDirFunc p_get_data_dir_func,GetLocaleFunc p_get_locale_func,GetModelFunc p_get_model_func, GetScreenDPIFunc p_get_screen_dpi_func, ShowVirtualKeyboardFunc p_show_vk, HideVirtualKeyboardFunc p_hide_vk, SetScreenOrientationFunc p_screen_orient,GetUniqueIDFunc p_get_unique_id,GetSystemDirFunc p_get_sdir_func, VideoPlayFunc p_video_play_func, VideoIsPlayingFunc p_video_is_playing_func, VideoPauseFunc p_video_pause_func, VideoStopFunc p_video_stop_func, SetKeepScreenOnFunc p_set_keep_screen_on_func, AlertFunc p_alert_func, bool p_use_apk_expansion);
|
||||
~OS_Android();
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue