В эмуляторе 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.)](https://i.stack.imgur.com/ARBVD.png)