X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fandroid%2Fmain.c;h=cf195f99bd827d3f77b8b922e58c6454ba751fa2;hb=ab16e737cf21ee1746868e027448d02de00954f7;hp=49210875e78e50b96fab5dc269b561810c7ff86d;hpb=3b852038f69e28291498c05f115f498c4dd47657;p=andemo diff --git a/src/android/main.c b/src/android/main.c index 4921087..cf195f9 100644 --- a/src/android/main.c +++ b/src/android/main.c @@ -16,6 +16,7 @@ static int handle_touch_input(struct android_app *app, AInputEvent *ev); static int init_gl(void); static void destroy_gl(void); static unsigned long get_time_msec(void); +static void hide_navbar(struct android_app *state); struct android_app *app; @@ -36,6 +37,8 @@ void android_main(struct android_app *app_ptr) app->onAppCmd = handle_command; app->onInputEvent = handle_input; + hide_navbar(app); + start_logger(); for(;;) { @@ -266,3 +269,39 @@ static unsigned long get_time_msec(void) } return (ts.tv_sec - ts0.tv_sec) * 1000 + (ts.tv_nsec - ts0.tv_nsec) / 1000000; } + +static void hide_navbar(struct android_app *state) +{ + JNIEnv *env; + jclass cactivity, cwin, cview; + jobject win, view; + jmethodID get_window, get_decor_view, set_system_ui_visibility; + jfieldID field_flag_fs, field_flag_hidenav, field_flag_immersive; + int flag_fs, flag_hidenav, flag_immersive; + + (*state->activity->vm)->AttachCurrentThread(state->activity->vm, &env, 0); + + cactivity = (*env)->FindClass(env, "android/app/NativeActivity"); + get_window = (*env)->GetMethodID(env, cactivity, "getWindow", "()Landroid/view/Window;"); + + cwin = (*env)->FindClass(env, "android/view/Window"); + get_decor_view = (*env)->GetMethodID(env, cwin, "getDecorView", "()Landroid/view/View;"); + + cview = (*env)->FindClass(env, "android/view/View"); + set_system_ui_visibility = (*env)->GetMethodID(env, cview, "setSystemUiVisibility", "(I)V"); + + win = (*env)->CallObjectMethod(env, state->activity->clazz, get_window); + view = (*env)->CallObjectMethod(env, win, get_decor_view); + + field_flag_fs = (*env)->GetStaticFieldID(env, cview, "SYSTEM_UI_FLAG_FULLSCREEN", "I"); + field_flag_hidenav = (*env)->GetStaticFieldID(env, cview, "SYSTEM_UI_FLAG_HIDE_NAVIGATION", "I"); + field_flag_immersive = (*env)->GetStaticFieldID(env, cview, "SYSTEM_UI_FLAG_IMMERSIVE_STICKY", "I"); + + flag_fs = (*env)->GetStaticIntField(env, cview, field_flag_fs); + flag_hidenav = (*env)->GetStaticIntField(env, cview, field_flag_hidenav); + flag_immersive = (*env)->GetStaticIntField(env, cview, field_flag_immersive); + + (*env)->CallVoidMethod(env, view, set_system_ui_visibility, flag_fs | flag_hidenav | flag_immersive); + + (*state->activity->vm)->DetachCurrentThread(state->activity->vm); +}