Necesito obtener una medición precisa de la altitud usando solo GPS.Android: ¿Cómo obtener una altitud precisa?
Probé Location.getAltitude(), pero eso es terriblemente impreciso. ¿Algún consejo?
Necesito obtener una medición precisa de la altitud usando solo GPS.Android: ¿Cómo obtener una altitud precisa?
Probé Location.getAltitude(), pero eso es terriblemente impreciso. ¿Algún consejo?
Hay dos problemas con el uso de un GPS altitud teléfono inteligente/tableta:
Gracias. Así que supongo que no puedo obtener una altitud precisa a menos que tenga acceso a Internet en mi aplicación para corregir la altura del geoide. – ask
Puedes hacerlo sin conexión. Solo necesitas calcular la diferencia entre el elipsoide y el nivel del mar. Que no es trivial Ver esta respuesta: https://stackoverflow.com/a/12811478/1561404 –
Hay otras maneras de obtener la altitud que por GPS. Puede usar el barómetro, pero todavía no hay muchos dispositivos con sensores barométricos (solo los nuevos). Recomendaré usar un servicio web para adquirir los datos deseados.
Aquí es una pregunta que debe ayudarle a través de: Get altitude by longitude and latitude in Android
Otra forma sería procesar las cadenas NMEA. El $GPGGA sentence ya contiene los datos de altitud corregidos sobre el nivel del mar.
Por lo tanto, basta con crear un oyente a NMEA-secuencias para su LocationManager y analizar los mensajes:
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]);
}
}
}
}
puede reemplazar la altitud de la última localización de objetos recibido con un detector de localización, o analizar el conjunto nueva ubicación a través de NMEA.
Posible duplicado de [Obtener altitud por longitud y latitud en Android] (http://stackoverflow.com/questions/1995998/get-altitude-by-longitude-and-latitude-in-android) –