Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 127e0263 authored by Cuong's avatar Cuong Committed by Danny Baumann
Browse files

Previous fix was incorrect.

Timestamp doesn't contain date info, therefore we need to construct it
and adjust it if daylight savings applies.

Change-Id: Ic6b5b3e2d773f637a99a80ef0998ee4f9989a8eb
parent b873ee2b
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -18,7 +18,9 @@ package com.android.server.location;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.TimeZone;
import java.util.regex.Matcher;
@@ -35,6 +37,8 @@ public class NMEAParser {
    // NMEA sentence pattern
    private final Pattern sentencePattern = Pattern.compile("\\$([^*$]{5,})(\\*\\w{2})?");
    private final SimpleDateFormat timeFormatter = new SimpleDateFormat("HHmmss.S");
    private final TimeZone GPSTimezone = TimeZone.getTimeZone("UTC");
    private GregorianCalendar GPSCalendar = new GregorianCalendar(GPSTimezone);

    private HashMap<String,ParseInterface> parseMap = new HashMap<String,ParseInterface>();
    private String provider;
@@ -158,8 +162,14 @@ public class NMEAParser {
     */
    private long parseTimeToDate(String time) {
        try {
            // parse time , We only get timestamp from sentences
            // use UTC calendar to set the date.
            Date btTime = timeFormatter.parse(time);
            return btTime.getTime();
            Calendar localCalendar = Calendar.getInstance(GPSTimezone);
            GPSCalendar.setTimeInMillis(btTime.getTime());
            GPSCalendar.set(localCalendar.get(Calendar.YEAR), localCalendar.get(Calendar.MONTH),
                    localCalendar.get(Calendar.DAY_OF_MONTH));
            return GPSCalendar.getTimeInMillis();
        } catch (ParseException e) {
            Log.e(TAG, "Could not parse: " + time);
            return 0;