Android:如何使用SensorManager.getAltitude(float p0,float p)?

时间:2011-09-14 04:02:34

标签: android android-sensors altitude

我找到了另一种使用SensorManager获取高度的方法,但它需要两个参数。

public static float  getAltitude  (float p0, float p)

Computes the Altitude in meters from the atmospheric pressure and the pressure at sea level.  

p0  pressure at sea level 
p   atmospheric pressure

您是否可以通过实际示例/代码段教我们如何使用它。

UPDATES1 我找到了Web服务提供商(WSP)网址来获取p0 pressure at sea level。我已成功获取值但不理解返回的值。

WSP网址: http://avdata.geekpilot.net/

以下是东京国际机场的示例输出(http://avdata.geekpilot.net/weather/HND)

<weather>
<ident>RJTT</ident>
<error/>
<metar>
2011/09/22 08:00
RJTT 220800Z 04019KT 9999 -SHRA FEW012 BKN025 BKN040 21/18 Q1000 NOSIG
</metar>
<taf>
2011/09/22 04:12
TAF 
      AMD TAF 
      AMD RJTT 220409Z 2204/2306 08016KT 9999 FEW030 SCT050 
      BECMG 2204/2206 05014KT 
      TEMPO 2207/2209 36018G30KT SHRA 
      BECMG 2303/2306 10008KT
</taf>
</weather>

2 个答案:

答案 0 :(得分:5)

List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
if(sensors.size() > 0) {


  sensor = sensors.get(0);
  mSensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);

}

 public void onAccuracyChanged(Sensor sensor, int accuracy) {
 }

 public void onSensorChanged(SensorEvent event) {
    presure = event.values[0];
 }

float altitude = getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, presure);

答案 1 :(得分:2)

目前的海平面气压(QNH)是在metar油田“Q”之后的值(以hPa - 百帕 - 帕斯卡为单位)。在这种情况下1000 hPa。

有关TAF和METAR的更多信息可以在维基百科上找到。

http://en.wikipedia.org/wiki/METAR

http://en.wikipedia.org/wiki/Terminal_aerodrome_forecast