Когда TalkBack включен, я больше не получаю KeyEvents от кнопок навигации (вверх, вниз, влево, вправо) - PullRequest
0 голосов
/ 17 января 2019

Я работаю с React Native и Accessibility (TalkBack). Проблема, с которой я сталкиваюсь - когда TalkBack включен, мой слушатель KeyEvent не регистрирует мои кнопки навигации на пульте дистанционного управления. Такое чувство, что TalkBack захватывает их для собственной навигации. Я присоединю своего слушателя KeyEvent в JAVA. Мне нужно, чтобы мои KeyEvents работали, когда включен TalkBack.

/ @Override  // <--- Add this method if you want to react to keyDown
      public boolean onKeyDown(int keyCode, KeyEvent event) {

        // A. Prevent multiple events on long button press
        //    In the default behavior multiple events are fired if a button
        //    is pressed for a while. You can prevent this behavior if you
        //    forward only the first event:
        int keyCode1 = event.getKeyCode();
        Log.d("keyDownTest:", Integer.toString(keyCode1));
        if (event.getRepeatCount() == 0) {
            KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
        }
        //
        // B. If multiple Events shall be fired when the button is pressed
        //    for a while use this code:
        //        KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
        //
        // Using B.
        // KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);

        // There are 2 ways this can be done:
        //  1.  Override the default keyboard event behavior
        //    super.onKeyDown(keyCode, event);
        //    return true;

        //  2.  Keep default keyboard event behavior
        //    return super.onKeyDown(keyCode, event);

        // Using method #1 without blocking multiple
        super.onKeyDown(keyCode, event);
        return true;
      }
...