2

我试图从我的压力传感器获取气压值,并从中获取高度值。这就是我尝试的方式:

            @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);

              }
            }

我为我的地方得到的价值是 440m。实际价值约为490米。我检查了我得到的压力已经是错误的。我该怎么做才能从传感器获得准确的值?

4

1 回答 1

1

您拥有的代码按预期工作。压力随天气而变化,即使在海平面上,您也可以获得很大的范围,例如 -10% +5%..

对于真实的高度信息,您需要进行一些校准,这意味着您使用校准值而不是SensorManager.PRESSURE_STANDARD_ATMOSPHERE在上面的代码中。

如果完全取决于您要做什么,您如何进行校准。一种方法是在已知高度计算校准值。例如,在已知高度获取压力,然后在代码中的调用中更改校准值,直到您获得足够接近您想要的已知高度的东西。您需要注意校准值会随天气变化。它会持续多长时间取决于您的用例。

于 2013-06-05T10:23:00.430 回答