Android датчик силы тяжести (TYPE_GRAVITY) для 2.1

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

Код ниже -

private SensorManager sman = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);
private Sensor magnetfield, gravity;
...
magnetfield = sman.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
gravity = sman.getDefaultSensor(Sensor.TYPE_GRAVITY);

Я решил добавить поддержку версии 2.1. Однако кажется, что TYPE_GRAVITY не поддерживается в 2.1, и я получаю ошибку, что Sensor.TYPE_GRAVITY больше не распознается

Вопросы - A) Когда я ищу "Android датчик силы тяжести 2.1", он ищет ссылки на видео, которые демонстрируют датчик силы тяжести в устройствах 2.1. Значит ли это, что есть способ получить к нему доступ? Б) Если нет, то какая самая низкая версия, которая может использовать это? Не удалось найти его в SDK.

Спасибо

2 ответа

Решение

Посмотрев на исходный код, вы увидите, что датчик силы тяжести фактически вычисляется с использованием фильтра Баттерворта. Я также задал вопрос по dsp ( здесь). Надеюсь, что ссылка поможет, потому что она помогла мне понять много вещей.

Для датчика силы тяжести в версиях < 2.3 вам необходимо внедрить этот фильтр самостоятельно, если вы хотите получить те же результаты.

Вот исходный код.

Позднее редактирование: добавлена ​​действующая ссылка!

Датчик TYPE_LINEAR_ACCELERATION а также TYPE_GRAVITY доступны начиная с API Level 9 (Android 2.3), поэтому вы не сможете использовать их на 2.1.

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

Другие вопросы по тегам