我试图从压力传感器获取气压值,并从中获得高度值。这就是我尝试的方式:
@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米。我检查了我得到的压力已经错了。 我该怎么做才能从传感器中获取准确值?
答案 0 :(得分:1)
您拥有的代码正在按预期工作。压力随天气而变化,即使在海平面也可以获得很大的范围,例如:说-10%+ 5%..
对于真实高度信息,您需要进行一些校准,这意味着您在上面的代码中使用校准值而不是SensorManager.PRESSURE_STANDARD_ATMOSPHERE
。
如果完全取决于您尝试做什么,如何进行校准。一种方法是在已知高度处计算出校准值。例如在已知高度获得压力,然后在代码中调用校准值,直到你得到足够接近你想要的已知高度的东西。您需要注意校准值会随着天气而变化。这将取决于你的使用案例,这将是多长时间。