古い投稿だと思いますが、誰かがまだ興味を持っているかもしれません。GPSを聴きながら、ジオイドの高さ(WGS84楕円体より上のジオイドの高さ)があるNMEA GPGGAセンテンス(http://aprs.gids.nl/nmea/#gga )を解析できます。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();
}
}
}