Какой уровень API необходим для получения KEYCODE_HOME KeyEvent в AccessibilityService? - PullRequest
0 голосов
/ 31 марта 2020

Нажатие физических кнопок на двух тестовых устройствах приводит к получению KEYCODE_HOME KeyEvent в моем AccessibilityService только на одном из устройств. Тот же производитель, другая модель, другой уровень API. Требуется ли определенный уровень API, чтобы получить физическую домашнюю кнопку KeyEvent?

@Override
protected boolean onKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KEYCODE_HOME)
        Log.d(TAG, "The event works on this device.");
    return super.onKeyEvent(event);
}

1 Ответ

0 голосов
/ 06 апреля 2020

В эмуляторе Android я создал и протестировал 2 виртуальных устройства с разными уровнями API. Кажется, что уровень API не имеет значения , пока используется физическая домашняя кнопка виртуального устройства. Поэтому, если устройство не получает KEYCODE_HOME KeyEvent в AccessibilityService, виновником, вероятно, является нечто иное, чем уровень API.

В вопросе упоминается, что отличаются не только уровни API, но и модели тоже. Физическая домашняя кнопка не приводит к KeyEvent на некоторых устройствах. Например, кнопка «Домой» на устройствах Samsung Galaxy S8 , S8 + , S9, S9 +, Note10, Note10 + и Fold официально считается датчиком давления, а не кнопкой , Чтобы использовать этот датчик давления (кнопка «Домой»), см. Этот вопрос:

Как считывать датчик давления?

Screenshot of Samsung Galaxy S9 and S9+ specs on https://www.samsung.com/global/galaxy/galaxy-s9/specs/. Sensors: Iris, Fingerprint, HR, Pressure (!), Gyro, Proximity, Accelerometer, Geomagnetic, RGB Light, Barometer, Hall sensor. Buttons: On/Off, Volume, Bixby. (Home key is not on the list.)

...