2011-09-14 30 views
3

我發現了一種使用SensorManager獲取高度的替代方法,但它需要兩個參數。Android:如何使用SensorManager.getAltitude(float p0,float p)?

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> 

回答

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); 
+0

明白了。實現監聽器以獲取TYPE_PRESSURE傳感器的值。海平面值的壓力如何?關於如何獲得它的任何線索? – eros

+0

是的,它是常數SensorManager.PRESSURE_STANDARD_ATMOSPHERE – Michele

+0

「海平面的壓力必須是已知的,通常可以從附近的機場數據庫中檢索。如果未知,可以使用PRESSURE_STANDARD_ATMOSPHERE作爲近似值,但絕對高度不準確。「< - 這個聲明來自Android的文檔。想從附近的機場數據庫獲得價值。你有如何獲得它的提示?或可用於檢索它的Web服務提供商網址? – eros