Ste*_*fan 57
使用智能手机/平板电脑GPS的高度有两个问题:
另一种方法是解析 NMEA 字符串。在$ GPGGA句话已经包含海拔修正高度数据。
因此,只需为 LocationManager 为 NMEA 字符串创建一个侦听器并解析消息:
private GpsStatus.NmeaListener mNmeaListener = new GpsStatus.NmeaListener() {
@Override
public void onNmeaReceived(long timestamp, String nmea) {
parseNmeaString(nmea);
}
};
public void registerLocationManager(Context context) {
mLocationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
mLocationManager.addNmeaListener(mNmeaListener);
}
private void parseNmeaString(String line) {
if (line.startsWith("$")) {
String[] tokens = line.split(",");
String type = tokens[0];
// Parse altitude above sea level, Detailed description of NMEA string here http://aprs.gids.nl/nmea/#gga
if (type.startsWith("$GPGGA")) {
if (!tokens[9].isEmpty()) {
mLastMslAltitude = Double.parseDouble(tokens[9]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以替换通过位置侦听器接收到的最后一个 Location 对象的高度,也可以通过 NMEA 解析整个新位置。
另一种方法是通过气压计测量高度。
通过使用压力,您可以计算用户的海拔高度。我不确定它的精度水平以及它是否比其他答案的方法更准确。
通过使用测高公式,您可以计算海拔高度:
变量定义:
P0: Sea-level pressure
P: Atmospheric pressure
T: Temperature
Run Code Online (Sandbox Code Playgroud)
你可以从环境传感器获取android中的压力
SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE,pressure)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
106076 次 |
最近记录: |