我正在写一个显示高度的表盘。高度是用 计算的SensorManager.getAltitude(seaLevelPressure, currentPresure)。
但是为了初始化它,我需要海平面的压力。不幸的是没有SensorManager.getSeaLevelPressure(currentPressure,currentAltitude)。
为此,我找到了以下公式(参见http://rechneronline.de/barometer/)
private float calcSeaPressure(float pressure, int altitude) {
float temperature = 9 + 273.15f;
float tempGradient = 0.0065f;
float v3 = temperature + tempGradient * altitude;
float sealevelPressure = (float) (pressure / Math.pow((1 - tempGradient * altitude / v3), .03416f / tempGradient));
sealevelPressure = (float) Math.round(sealevelPressure * 100) / 100;
return sealevelPressure;
}
Run Code Online (Sandbox Code Playgroud)
但是这个算法和 SensorManager.getAltitude 中使用的算法似乎不太适合。如果我做:
public void setCurrentAltitude(int currentAltitude) {
sealLevelPressure = calcSealevel(currentAltitude,currentPresure);
altitude = SensorManager.getAltitude(seaLevelPressure, currentPresure)
}
Run Code Online (Sandbox Code Playgroud)
计算出的高度与给定的 …