Android: получить высоту от датчика давления
Я попытался получить значение давления воздуха от моего датчика давления и получить значение высоты из этого. Вот как я пытался:
@Override
public void onSensorChanged(SensorEvent event) {
// when pressure value is changed, this method will be called.
float pressure_value = 0.0f;
float height = 0.0f;
// if you use this listener as listener of only one sensor (ex, Pressure), then you don't need to check sensor type.
if( Sensor.TYPE_PRESSURE == event.sensor.getType() ) {
pressure_value = event.values[0];
System.out.println("PRESSURE" + pressure_value);
height = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure_value);
System.out.println("HÄÄÄÄÄÄÄÄ" + height);
tv1.setText("Druck: " + pressure_value);
tv2.setText("Höhe: " + height);
}
}
Значение, которое я получаю за свое место, составляет 440м. Реальная стоимость составляет около 490 метров. Я проверил, что давление, которое я получаю, уже неправильно. Что я могу сделать, чтобы получить точное значение от датчика?
1 ответ
Код у вас работает как положено. Давление меняется в зависимости от погоды, вы можете получить большой диапазон даже на уровне моря, например, -10% +5%.
Для получения реальной информации о высоте вам необходимо выполнить некоторую калибровку, что означает, что вы используете калиброванное значение вместо SensorManager.PRESSURE_STANDARD_ATMOSPHERE
в вашем коде выше.
Как вы делаете калибровку, если вообще зависит от того, что вы пытаетесь сделать. Одним из методов будет определение значения калибровки на известной высоте. например, на известной высоте измерьте давление и затем измените калибровочное значение в вызове в своем коде, пока вы не получите что-то достаточно близкое к известной высоте, которую вы хотите получить. Вы должны знать, что значение калибровки будет меняться в зависимости от погоды. Как долго это будет достаточно хорошо, зависит от вашего варианта использования.