代码之家  ›  专栏  ›  技术社区  ›  NeFa

索尼SmartWatch2:回绕键

  •  3
  • NeFa  · 技术社区  · 11 年前

    在Sony SmartWatch2的控制扩展中,我可以通过onKey接收返回密钥,但如何防止扩展终止?我想挂回键来做一些过程,但按回键会终止扩展。

    在SampleAdvancedControlExtension中,它似乎通过启动新控件来阻止后退按钮,但我只使用单个控件。

    public void onKey(int action, int keyCode, long timeStamp) {
        Log.v(SampleExtensionService.LOG_TAG, "onKey");
    
        if (action == Control.Intents.KEY_ACTION_RELEASE
                && keyCode == Control.KeyCodes.KEYCODE_BACK) {
            Log.d(SampleExtensionService.LOG_TAG, "onKey() - back button intercepted.");
            onBack();
        } else if (mCurrentControl != null) {
            super.onKey(action, keyCode, timeStamp);
        }
    }
    
    /**
     * Closes the currently open control extension. If there is a control on the
     * back stack it is opened, otherwise extension is closed.
     */
    public void onBack() {
        Log.v(SampleExtensionService.LOG_TAG, "onBack");
        if (!mControlStack.isEmpty()) {
            Intent backControl = mControlStack.pop();
            ControlExtension newControl = createControl(backControl);
            startControl(newControl);
        } else {
            stopRequest();
        }
    }
    

    好的,我解决了问题。我不得不在RegistrationInformation类中添加以下方法。

    @Override
    public boolean controlInterceptsBackButton() {
        // Extension has it's own navigation, handles back presses.
        return true;
    }
    
    1 回复  |  直到 11 年前
        1
  •  2
  •   Oleg Skr    11 年前

    在“onBack()”方法中,对“stopRequest()”的调用是终止扩展的调用。 在您的情况下,您应该将自己的逻辑放在这个方法中,这样,如果您不需要“stopRequest()”,就不会调用它。