58 votes

Android : Comment obtenir une altitude précise ?

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?

6voto

sigma0815 Points 121

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.

1voto

FireFly3000 Points 575

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.com

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.

Powered by:

X