diff --git a/GPSTest/src/main/java/com/android/gpstest/util/GpsTestUtil.java b/GPSTest/src/main/java/com/android/gpstest/util/GpsTestUtil.java index b8112071c..b6bbaa700 100644 --- a/GPSTest/src/main/java/com/android/gpstest/util/GpsTestUtil.java +++ b/GPSTest/src/main/java/com/android/gpstest/util/GpsTestUtil.java @@ -320,19 +320,21 @@ public static void writeGnssMeasurementToLog(GnssMeasurement measurement) { } /** - * Given a $GPGGA or $GNGNS NMEA sentence, return the altitude above mean sea level (geoid + * Given a $GPGGA, $GNGNS, or $GNGGA NMEA sentence, return the altitude above mean sea level (geoid * altitude), * or null if the altitude can't be parsed. * * Example inputs are: * $GPGGA,032739.0,2804.732835,N,08224.639709,W,1,08,0.8,19.2,M,-24.0,M,,*5B * $GNGNS,015002.0,2804.733672,N,08224.631117,W,AAN,09,1.1,78.9,-24.0,,*23 + * $GNGGA,172814.00,2803.208136,N,08225.981423,W,1,08,1.1,-19.7,M,-24.8,M,,*5F * * Example outputs would be: * 19.2 * 78.9 + * -19.7 * - * @param nmeaSentence a $GPGGA or $GNGNS NMEA sentence + * @param nmeaSentence a $GPGGA, $GNGNS, or $GNGGA NMEA sentence * @return the altitude above mean sea level (geoid altitude), or null if altitude can't be * parsed */ @@ -340,7 +342,7 @@ public static Double getAltitudeMeanSeaLevel(String nmeaSentence) { final int ALTITUDE_INDEX = 9; String[] tokens = nmeaSentence.split(","); - if (nmeaSentence.startsWith("$GPGGA") || nmeaSentence.startsWith("$GNGNS")) { + if (nmeaSentence.startsWith("$GPGGA") || nmeaSentence.startsWith("$GNGNS") || nmeaSentence.startsWith("$GNGGA")) { String altitude; try { altitude = tokens[ALTITUDE_INDEX]; @@ -361,7 +363,7 @@ public static Double getAltitudeMeanSeaLevel(String nmeaSentence) { return null; } } else { - Log.w(TAG, "Input must be a $GPGGA or $GNGNS NMEA: " + nmeaSentence); + Log.w(TAG, "Input must be $GPGGA, $GNGNS, or $GNGGA NMEA: " + nmeaSentence); return null; } } diff --git a/GPSTest/src/test/java/com/android/gpstest/GpsTestUtilTest.java b/GPSTest/src/test/java/com/android/gpstest/GpsTestUtilTest.java index 5788df9b4..ca65a1898 100644 --- a/GPSTest/src/test/java/com/android/gpstest/GpsTestUtilTest.java +++ b/GPSTest/src/test/java/com/android/gpstest/GpsTestUtilTest.java @@ -35,6 +35,8 @@ public void testGetAltitudeFromNmea() { = "$GPGGA,032739.0,2804.732835,N,08224.639709,W,1,08,0.8,19.2,M,-24.0,M,,*5B"; final String gnssSentence = "$GNGNS,015002.0,2804.733672,N,08224.631117,W,AAN,09,1.1,78.9,-24.0,,*23"; + final String gnGga1 = "$GNGGA,114926.00,3206.341435,N,11850.092448,E,1,11,0.9,19.9,M,2.2,M,,*7E"; + final String gnGga2 = "$GNGGA,172814.00,2803.208136,N,08225.981423,W,1,08,1.1,-19.7,M,-24.8,M,,*5F"; altitude = GpsTestUtil.getAltitudeMeanSeaLevel(gpsSentence); assertEquals(19.2d, altitude); @@ -42,6 +44,12 @@ public void testGetAltitudeFromNmea() { altitude = GpsTestUtil.getAltitudeMeanSeaLevel(gnssSentence); assertEquals(78.9d, altitude); + altitude = GpsTestUtil.getAltitudeMeanSeaLevel(gnGga1); + assertEquals(19.9d, altitude); + + altitude = GpsTestUtil.getAltitudeMeanSeaLevel(gnGga2); + assertEquals(-19.7d, altitude); + final String badGnssSentence = "$GNGNS,015002.0,2804.733672,N,08224.631117,W,AAN,09,1.1,BAD,-24.0,,*23"; altitude = GpsTestUtil.getAltitudeMeanSeaLevel(badGnssSentence);