Как выбрать AOSP Gravity Sensor вместо реализации Samsungs? - PullRequest
1 голос
/ 25 марта 2020

Итак, я нашел код датчика гравитации здесь https://cs.android.com/android/platform/superproject/+/master: frameworks / native / services / sensorservice / GravitySensor. cpp

Это датчик гравитации, реализованный Android. Но это явно не тот датчик, который я получаю. При использовании приложения Sensor Kinetics я вижу, что датчик гравитации на телефоне идет от Samsung Elektronics. Таким образом, похоже, что производители также связывают реализацию для датчика силы тяжести.

Это объясняет, почему я вижу разные результаты для значений датчика силы тяжести на разных устройствах, в то время как значения гироскопа + акселерометра очень похожи (так как гироскопическое ускорение Похоже, я ожидаю большого сходства в значениях силы тяжести, так как сила тяжести получена из Accel + гироскоп).

Так есть ли способ зарегистрировать прослушиватель событий, указанный c для реализации Android? Или, что еще лучше, есть библиотека слияния Java (гироскоп и акселератор), которая может отфильтровать гравитацию. Это было бы лучше, так как я не зависел бы от Android версий и / или реализаций производителя.

Способ, которым я в настоящее время регистрируюсь:

    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY), SensorManager.SENSOR_DELAY_FASTEST);

Спасибо.

ОБНОВЛЕНИЕ: моё предположение кажется верным. На этой странице они говорят о способе выбора вторичного датчика силы тяжести, если производитель поставляется с ним, но не описано, как. Если я использую SensorManager.getSensors () и перечислю их, к сожалению, вторичных датчиков Google нет в списке. См. https://developer.android.com/guide/topics/sensors/sensors_motion#android -open-source-project-сенсоры

Датчик гравитации на Galaxy A40 (версия 1). enter image description here Датчик силы тяжести на Galaxy S9 от Samsung, версия 3 - другой алгоритм.

enter image description here

...