Gear VR 框架覆盖后退按钮功能

Gear VR Framework Override Back Button Functionality

我们正在使用 GVRf 开发 Gear VR 应用程序。应用程序中有两个 GVRScenes,我们希望它是这样的,如果用户在场景 B 中短按返回按钮,则返回场景 A,如果用户在场景 A 中短按返回按钮,则退出应用程序。此外,长按后退按钮应显示 Oculus 设置菜单,然后按后退按钮应恢复应用程序(根据 Oculus 商店要求)。

由于 GVRActivity.onBackPressed() 不是从框架调用的,我们试图从 GVRActivity:

覆盖 onKeyUp
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (KeyEvent.KEYCODE_BACK == keyCode) {
        if (mScript.onBackPressed()) {//mScript.onBackPressed() handles change scene logic 
                                      //and returns true if we are in scene B, and returns  
                                      //false if we are in scene A
             super.onBackPressed();
        }
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

现在B场景短按可以,长按显示oculus设置。问题是,如果我们从场景 B 返回并从设置返回,它会切换到场景 A,如果我们从场景 A 执行相同操作,应用程序将重新启动。

实现这个的正确方法是什么?提前致谢。

我们找到了解决此问题的方法。

首先,修改GVRActivitymPausedprotected

    protected boolean mPaused = true;

然后我们在 Activity 中添加了覆盖 onKeyUp() 的内容:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    Log.d(TAG, "onKeyUp: "+keyCode);
    if(!mPaused && keyCode==KeyEvent.KEYCODE_BACK){
        if(!mScript.onBackPressed())
            return true;
    }
    return super.onKeyUp(keyCode, event);
}

希望这可以帮助其他人,如果有人有更好的解决方案,请随时post。