Android:如何使用 SensorManager.getAltitude(float p0, float p)?
Posted
技术标签:
【中文标题】Android:如何使用 SensorManager.getAltitude(float p0, float p)?【英文标题】:Android: How to use SensorManager.getAltitude(float p0, float p)? 【发布时间】:2011-11-16 16:31:29 【问题描述】:我找到了另一种使用 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
能否通过实际示例/代码 sn-p 教我们如何使用它。
更新1
我找到了获取p0 pressure at sea level
的Web 服务提供商(WSP) url。我已经成功获取了值但是不明白返回的值。
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>
【问题讨论】:
【参考方案1】:试试
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);
【讨论】:
知道了。实现侦听器以获取 TYPE_PRESSURE 传感器的值。海平面值的压力如何?有什么获得方法的线索吗? 是的,它是常量 SensorManager.PRESSURE_STANDARD_ATMOSPHERE "必须知道海平面的压力,通常可以从附近的机场数据库中检索到。如果不知道,可以使用 PRESSURE_STANDARD_ATMOSPHERE 作为近似值,但绝对高度不准确。 " 我找到了 Web Service Provider URL。你会检查更新的帖子吗?【参考方案2】:海平面上的当前气压 (QNH) 是metar 字段中“Q”之后的值(以 hPa - 百帕斯卡为单位)。在这种情况下为 1000 hPa。
有关 TAF 和 METAR 的更多信息可以在***上找到。
http://en.wikipedia.org/wiki/METAR
http://en.wikipedia.org/wiki/Terminal_aerodrome_forecast
【讨论】:
以上是关于Android:如何使用 SensorManager.getAltitude(float p0, float p)?的主要内容,如果未能解决你的问题,请参考以下文章