// called by AppThreadFunction public void ovrApp_BackButtonAction() { // 1484 if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_PENDING_DOUBLE_TAP) { //ALOGV("back button double tap"); this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_SKIP_UP; } else if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_PENDING_SHORT_PRESS && !this.BackButtonDown) { if ((VrApi.vrapi_GetTimeInSeconds() - this.BackButtonDownStartTime) > VrApi_Android.BACK_BUTTON_DOUBLE_TAP_TIME_IN_SECONDS) { ConsoleExtensions.trace("back button short press"); //ALOGV(" ovr_StartSystemActivity( %s )", PUI_CONFIRM_QUIT); VrApi_Android.ovr_StartSystemActivity(ref Java, VrApi.PUI_CONFIRM_QUIT, default(string)); this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_NONE; } } else if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_NONE && this.BackButtonDown) { if ((VrApi.vrapi_GetTimeInSeconds() - this.BackButtonDownStartTime) > VrApi_Android.BACK_BUTTON_LONG_PRESS_TIME_IN_SECONDS) { // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150704/pui_global_menu ConsoleExtensions.trace("back button long press, ovr_StartSystemActivity PUI_GLOBAL_MENU"); //ALOGV(" ovr_StartSystemActivity( %s )", PUI_GLOBAL_MENU); VrApi_Android.ovr_StartSystemActivity(ref Java, VrApi.PUI_GLOBAL_MENU, null); this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_SKIP_UP; } } }
// called by AppThreadFunction public void ovrApp_BackButtonAction() { // 1484 if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_PENDING_DOUBLE_TAP) { //ALOGV("back button double tap"); this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_SKIP_UP; } else if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_PENDING_SHORT_PRESS && !this.BackButtonDown) { if ((VrApi.vrapi_GetTimeInSeconds() - this.BackButtonDownStartTime) > VrApi_Android.BACK_BUTTON_DOUBLE_TAP_TIME_IN_SECONDS) { ConsoleExtensions.trace("back button short press"); //ALOGV(" ovr_StartSystemActivity( %s )", PUI_CONFIRM_QUIT); VrApi_Android.ovr_StartSystemActivity(ref Java, VrApi.PUI_CONFIRM_QUIT, default(string)); this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_NONE; } } else if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_NONE && this.BackButtonDown) { if ((VrApi.vrapi_GetTimeInSeconds() - this.BackButtonDownStartTime) > VrApi_Android.BACK_BUTTON_LONG_PRESS_TIME_IN_SECONDS) { ConsoleExtensions.trace("back button long press"); //ALOGV(" ovr_StartSystemActivity( %s )", PUI_GLOBAL_MENU); VrApi_Android.ovr_StartSystemActivity(ref Java, VrApi.PUI_GLOBAL_MENU, null); this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_SKIP_UP; } } }
// java UI sends over to native, which the uses MQ to send over to bg thread? SharedMemory would be nice? // onKeyEvent public void ovrApp_HandleKeyEvent(keycodes.AKEYCODE keyCode, input.AInputEventAction action) { // 1513 // cannot do this aliasing? //var app = this; // Handle GearVR back button. if (keyCode == keycodes.AKEYCODE.AKEYCODE_BACK) { if (action == input.AInputEventAction.AKEY_EVENT_ACTION_DOWN) { if (!this.BackButtonDown) { if ((VrApi.vrapi_GetTimeInSeconds() - this.BackButtonDownStartTime) < VrApi_Android.BACK_BUTTON_DOUBLE_TAP_TIME_IN_SECONDS) { this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_PENDING_DOUBLE_TAP; } this.BackButtonDownStartTime = VrApi.vrapi_GetTimeInSeconds(); } this.BackButtonDown = true; } else if (action == input.AInputEventAction.AKEY_EVENT_ACTION_UP) { if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_NONE) { if ((VrApi.vrapi_GetTimeInSeconds() - this.BackButtonDownStartTime) < VrApi_Android.BACK_BUTTON_SHORT_PRESS_TIME_IN_SECONDS) { this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_PENDING_SHORT_PRESS; } } else if (this.BackButtonState == ovrBackButtonState.BACK_BUTTON_STATE_SKIP_UP) { this.BackButtonState = ovrBackButtonState.BACK_BUTTON_STATE_NONE; } this.BackButtonDown = false; } //return 1; } //return 0; }