пытаюсь перепрограммировать клавиши громкости

Я пытаюсь перепрограммировать функциональность клавиш увеличения и уменьшения громкости. В моем подходе используется плавающее представление, которое перехватывает ключевые события (аналогично приложению «головы чата»). Флаг представления, который я использую: LayoutParams.FLAG_NOT_TOUCH_MODAL, но, к сожалению, он блокирует другие события. Например, если я пытаюсь использовать приложение для обмена сообщениями, клавиатура не появляется, а кнопка BackButton блокируется. Это связано с тем, что мой взгляд имеет фокус.

Следуя совету не работает для моего случая. На github у меня есть полный код.

Я борюсь с частью флагов просмотра. У тебя есть какие-нибудь идеи для меня? Должен ли я использовать другой подход, чтобы иметь представление, которое реагирует на ключевые события и не мешает работе остальных приложений?

        @Override
        public boolean dispatchKeyEvent(KeyEvent event) {

            int keyCode = event.getKeyCode();
            int action = event.getAction();

            Log.d(TAG, MotionEvent.actionToString(action)
                    + ", " + KeyEvent.keyCodeToString(keyCode));

            if (event != null && mListener != null) {
                if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                    mListener.onBackButtonPressed();
                    return true;
                }

                if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) {
                    Toast.makeText(getContext(), "volume up", Toast.LENGTH_SHORT).show();
                    return true;
                }

                if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {
                    Toast.makeText(getContext(), "volume down", Toast.LENGTH_SHORT).show();
                    return true;
                }
            }
            return super.dispatchKeyEvent(event);
        }

person Mario Nanni    schedule 17.04.2019    source источник