检测android waer上的中间(旋转)按钮单击

问题描述 投票:0回答:1

我正在为Android Wear开发一个应用,并且正在使用硬件按钮。我可以通过onKeyDown覆盖来捕获按钮:

    public boolean onKeyDown(int keyCode, KeyEvent event){
      Log.i("CLICK", Integer.toString(keyCode));
      if (event.getRepeatCount() == 0) {
        if (keyCode == KeyEvent.KEYCODE_STEM_1) {
          // Do stuff
          return true;
        } else if (keyCode == KeyEvent.KEYCODE_STEM_2) {
          // Do stuff
          return true;
        } else if (keyCode == KeyEvent.KEYCODE_STEM_3) {
          // Do stuff
          return true;
        }
      }
      return super.onKeyDown(keyCode, event);
    }

我也想点击一下中间(旋转)按钮,但是当我单击此按钮时,手表将返回默认的“主”(表盘)屏幕,并且没有事件被记录。

我可以设法捕获旋转滚动,但这是我要使用的单击。

    @Override
    public boolean onGenericMotionEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_SCROLL && RotaryEncoder.isFromRotaryEncoder(ev)) {
            // // Note that we negate the delta value here in order to get the right scroll direction.
            // float delta = -RotaryEncoder.getRotaryAxisValue(ev)
            //         * RotaryEncoder.getScaledScrollFactor(getContext());
            // scrollBy(0, Math.round(delta));
            return true;
        }
        return super.onGenericMotionEvent(ev);
    }

这是否可能,或者是否无法覆盖中间监视按钮的功能?

android android-studio wear-os
1个回答
0
投票

AFAIU在KEYCODE_HOME中按RSB时,应该以onKeyDown()作为键事件。如果是这种情况,则仅受Android框架控制,应用程序对此无能为力。

这里是官方说明

键码常数:Home键。该密钥由框架处理,永远不会交付给应用程序。

https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

© www.soinside.com 2019 - 2024. All rights reserved.