J'ai besoin d'obtenir une mesure précise de l'altitude en utilisant uniquement le GPS.
J'ai essayé Location.getAltitude()
, mais c'est terriblement inexact.
Aucun conseil?
J'ai besoin d'obtenir une mesure précise de l'altitude en utilisant uniquement le GPS.
J'ai essayé Location.getAltitude()
, mais c'est terriblement inexact.
Aucun conseil?
Une autre façon serait d'analyser les chaînes NMEA. La phrase $GPGGA contient déjà les données d'altitude corrigées au-dessus du niveau de la mer.
Alors, créez simplement un écouteur de chaînes NMEA pour votre LocationManager et analysez les messages :
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]);
}
}
}
}
Vous pouvez soit remplacer l'altitude du dernier objet de localisation reçu via un écouteur de localisation, soit analyser l'ensemble du nouvel emplacement via NMEA.
Il existe d'autres moyens d'obtenir l'altitude que par GPS. Vous pouvez utiliser le baromètre mais comme il n'y a pas encore beaucoup d'appareils avec des capteurs barométriques (seulement les nouveaux). Je recommanderai d'utiliser un service Web pour acquérir les données souhaitées.
Voici une question qui devrait vous aider : Obtenez l'altitude par longitude et latitude dans Android
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.