Android:从压力传感器获得高度

时间:2013-06-04 10:07:51

标签: android height sensor pressure

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

            @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 个答案:

答案 0 :(得分:1)

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

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

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