Как прочитать датчик давления? - PullRequest
0 голосов
/ 05 апреля 2020

Физическое нажатие кнопки «Домой» может быть легко обнаружено на большинстве устройств:

...

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.)

Как читать этот датчик?

TYPE_PRESSURE событие датчика относится к барометру, показывает давление окружающего воздуха в гПа или мбар .

Метод getPressure() возвращает "размер емкостного объекта, а не буквальное давление" .

Мне не нужна информация об уровне давления, я просто хочу знать, является ли чувствительная к давлению кнопка виртуального дома нажат.

Ответы [ 2 ]

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

Эта виртуальная кнопка не предназначена для использования в приложениях и доступна только для этого ПЗУ Samsung. Можно определить давление, необходимое для его запуска. Какой смысл это читать? Ваше устройство не имеет датчика давления, он же барометр. То, что вы имеете в виду, это сенсорный экран, чувствительный к давлению, и поэтому единственная возможность прочитать его - это драйвер сенсорного экрана.

Это источники их двоичных файлов поставщиков для AOSP. Если нет создания пользовательского ПЗУ, вероятно, нет способа привязать пользовательские функции к сенсорному экрану или представить значение в SDK. Эти источники также должны показывать, что фактически делает виртуальная кнопка, помимо эмуляции события аппаратной кнопки.

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

Технически это не считается датчиком, поэтому его нельзя использовать , насколько я знаю.

for (Sensor s : ((SensorManager) getSystemService(SENSOR_SERVICE)).getSensorList(Sensor.TYPE_ALL))
        Log.d("Sensor", s.getName());

Я зарегистрировал все доступные датчики устройство, имеющее чувствительную к давлению виртуальную домашнюю кнопку, но кнопки нет в списке. Интересно, Как получить доступ к датчикам, не перечисленным в SensorManager?

...