我试图从压力传感器获取气压值并从中获取高度值。这是我尝试的方式:
@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);
}
}
我为我的位置获得的值(value)是 440 米。实际值(value)约为 490 米。我检查我得到的压力已经是错误的。 我该怎么做才能从传感器获得准确的值??
最佳答案
您的代码按预期工作。压力随天气而变化,即使在海平面上,您也可以获得很大的范围,例如说 -10% +5%..
对于真实的高度信息,您需要进行一些校准,这意味着您在上面的代码中使用校准值而不是 SensorManager.PRESSURE_STANDARD_ATMOSPHERE
。
如何进行校准完全取决于您要尝试做什么。一种方法是计算已知高度的校准值。例如在已知高度获取压力,然后更改代码调用中的校准值,直到获得足够接近您想要的已知高度的值。您需要注意校准值会随天气而变化。它能持续多长时间取决于您的用例。
关于Android:从压力传感器获取高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915076/