Ho bisogno di ottenere una misurazione accurata dell'altitudine usando solo il GPS.Android: come ottenere l'altitudine esatta?
Ho provato Location.getAltitude(), ma è terribilmente inaccurato. Qualche consiglio?
Ho bisogno di ottenere una misurazione accurata dell'altitudine usando solo il GPS.Android: come ottenere l'altitudine esatta?
Ho provato Location.getAltitude(), ma è terribilmente inaccurato. Qualche consiglio?
Ci sono due problemi con l'utilizzo di altitudine di un GPS smartphone/tablet:
Grazie. Quindi immagino di non poter ottenere l'altitudine esatta a meno che non disponga dell'accesso a Internet nella mia app per correggere l'altezza di Geoid. – ask
Puoi farlo offline. Hai solo bisogno di calcolare la differenza tra l'ellissoide e il livello del mare. Che non è banale. Vedi questa risposta: https://stackoverflow.com/a/12811478/1561404 –
Ci sono altri modi per ottenere l'altitudine rispetto al GPS. È possibile utilizzare il barometro ma poiché non ci sono ancora molti dispositivi con sensori barometrici (solo quelli nuovi). Consiglierò di utilizzare un servizio Web per acquisire i dati desiderati.
Ecco una domanda che dovrebbe aiutare l'utente attraverso: Get altitude by longitude and latitude in Android
altro modo sarebbe quello di parsing stringhe NMEA. Lo $GPGGA sentence contiene già i dati di altitudine corretti sopra il livello del mare.
Quindi, è sufficiente creare un listener per NMEA-stringhe per il tuo LocationManager e analizzare i messaggi:
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]);
}
}
}
}
è possibile sostituire l'altitudine dell'ultimo oggetto posizione ricevuta attraverso un ascoltatore posizione, o analizzare l'intero nuova posizione attraverso NMEA.
Eventuali duplicati di [Get altitudine da latitudine e longitudine in Android] (http://stackoverflow.com/questions/1995998/get-altitude-by-longitude-and-latitude-in-android) –