X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fandroid%2Fmain.c;h=88d7fb5321a8ea4b70fbdbfa49189f94da2e53dc;hb=9b30c8adb9ae6f562f3ef1c8b3b5ab57824b9ba3;hp=49210875e78e50b96fab5dc269b561810c7ff86d;hpb=ba4adddb6685c5a64a3ca5cae56ba879841327ec;p=andemo diff --git a/src/android/main.c b/src/android/main.c index 4921087..88d7fb5 100644 --- a/src/android/main.c +++ b/src/android/main.c @@ -5,8 +5,9 @@ #include #include #include -#include "demo.h" +#include #include "android_native_app_glue.h" +#include "demo.h" #include "logger.h" #include "demosys.h" @@ -16,6 +17,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,8 +38,12 @@ void android_main(struct android_app *app_ptr) app->onAppCmd = handle_command; app->onInputEvent = handle_input; + hide_navbar(app); + start_logger(); + printf("Running %d bit version\n", (int)sizeof(void*) << 3); + for(;;) { int num_events; struct android_poll_source *pollsrc; @@ -79,6 +85,7 @@ static void handle_command(struct android_app *app, int32_t cmd) break; case APP_CMD_INIT_WINDOW: + ANativeActivity_setWindowFlags(app->activity, AWINDOW_FLAG_KEEP_SCREEN_ON, 0); if(init_gl() == -1) { exit(1); } @@ -266,3 +273,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); +}