У меня есть приложение, где я опроса датчиков для данных ускорения и сохранить значения XYZ в SQL DB. Codewise это довольно просто:Линейная точность ускорения Android
public void onSensorChanged(SensorEvent event) {
sensor = event.sensor;
int i = sensor.getType();
if (i == MainActivity.TYPE_ACCELEROMETER) {
accelerometerMatrix = event.values;
} else if (i == MainActivity.TYPE_GYROSCOPE) {
gyroscopeMatrix = event.values;
} else if (i == MainActivity.TYPE_GRAVITY) {
gravityMatrix = event.values;
} else if (i == MainActivity.TYPE_MAGNETIC) {
magneticMatrix = event.values;
}
//insert into database
}
MainActivity.TYPE_ACCELEROMETER
только поле я установил в своем классе MainActivity.
Если я установил это на Sensor.TYPE_LINEAR_ACCELERATION
, я заметил, что значения, которые хранятся в моей БД, довольно низки по точности (всего 2 десятичных знака). Но если я использую аппаратный акселерометр Sensor.TYPE_ACCELERATION
, то точность намного выше (6dp)
Мой вопрос: я неправильно искал значения линейного ускорения, чтобы заставить меня получить только 2 дп точности? Или это просто ограничение того, как датчики сливаются в Android? Если его последний, как я могу получить более высокую точность в моих значениях акселерометра после фильтрации гравитации при работе с плавленными датчиками?