Обнаружение среднего (поворотного) нажатия кнопки на android ваер - PullRequest
0 голосов
/ 15 февраля 2020

Я занимаюсь разработкой приложения для 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);
    }

Я также хотел бы поймать щелчок средней (поворотной) кнопки, но когда я нажимаю эту кнопку, часы возвращаются к стандартный экран «home» (watchface), и ни одно событие не регистрируется.

Мне удается поймать поворотную прокрутку, но я хочу использовать этот щелчок.

    @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);
    }

Возможно ли это, или невозможно переопределить функциональность средней кнопки часов?

1 Ответ

1 голос
/ 15 февраля 2020

AFAIU Должно получаться KEYCODE_HOME в качестве ключевого события при нажатии RSB в onKeyDown(). Если это так, то он контролируется только Android framework, и приложения не могут ничего с этим поделать.

Вот официальное описание

Кодовая константа ключа: Домашний ключ. Этот ключ обрабатывается платформой и никогда не доставляется приложениям.

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

...