旧帖子,我想,但有人可能仍然感兴趣。在听 GPS 时,您可以解析 NMEA GPGGA 语句(http://aprs.gids.nl/nmea/#gga),其中有大地水准面高度(WGS84 椭球上方的大地水准面高度)。只需从 getAltitude 返回值中减去此高度,您将获得更准确的高度值。
经过几个月的使用和从我的应用用户那里收到的反馈后进行编辑
更好的解决方案是直接获取GPGGA语句中的高程值:
double GGA_ALTITUDE = 0d;
private static final String NMEA_GGA = "$GPGGA";
private static final int altitude_element_id = 9;
@Override
public void onNmeaReceived(long timestamp, String nmea) {
foundSats = true;
// check that this is an RMC string
if (nmea.startsWith(NMEA_GGA)) {
String[] tokens = nmea.split(",");
try {
// get orthometric elevation
String elevation = tokens[altitude_element_id];
if (!elevation.equals("")) {
Log.d("NMEA", "ortho elev: " + ortho);
GGA_ALTITUDE = Double.parseDouble(elevation);
}
} catch (Exception ex) {
Log.e("NMEA", "onNmeaReceived: "
+ ex.getMessage());
onNmeaException(ex.getMessage());
ex.printStackTrace();
}
}
}