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

标签 android height sensors 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);

              }
            }

我为我的位置获得的值(value)是 440 米。实际值(value)约为 490 米。我检查我得到的压力已经是错误的。 我该怎么做才能从传感器获得准确的值??

最佳答案

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

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

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

关于Android:从压力传感器获取高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915076/

相关文章:

android - Viewpager 中的 map v2 SupportMapFragment

html - iOS 设备上的 100% 高度不起作用

iphone - 获取 UITableViewCell 子类中单元格的高度

c# - WPF 行高绑定(bind)在用户使用 GridSplitter 后停止工作

c++ - DHT22和GPIO如何工作?

java - Android - 在 Android 开发者选项中打开 "Don' t keep activities 会复制我的 FragmentActivity

android - setPlaybackParams 防止在 API 23 上开始播放

android - SQLite Android 获得不同的值

python - 使用插值标准化 Pandas 中的时间序列

android - 在 SensorEvent 构造函数不可见的情况下将数据发送到 onSensorChanged