Физическое нажатие кнопки «Домой» может быть легко обнаружено на большинстве устройств:
...
public class ExampleAccessibilityService extends AccessibilityService {
...
@Override
protected boolean onKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KEYCODE_HOME && event.getAction() == ACTION_DOWN)
Log.d("Example", "The home key is pressed.");
return super.onKeyEvent(event);
}
}
Но приведенный выше код не работает на некоторых устройствах, которые имеют чувствительную к давлению кнопку виртуального дома. Я предполагаю, что эти устройства 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)
Как читать этот датчик?
TYPE_PRESSURE
событие датчика относится к барометру, показывает давление окружающего воздуха в гПа или мбар .
Метод getPressure()
возвращает "размер емкостного объекта, а не буквальное давление" .
Мне не нужна информация об уровне давления, я просто хочу знать, является ли чувствительная к давлению кнопка виртуального дома нажат.