Loading app/src/main/java/net/fabiszewski/ulogger/LocationHelper.java +21 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,13 @@ class LocationHelper { private final Context context; private final LocationManager locationManager; // millis 1999-08-21T23:59:42+00:00 private static final long FIRST_ROLLOVER_TIMESTAMP = 935279982000L; // millis 2019-04-06T23:59:42+00:00 private static final long SECOND_ROLLOVER_TIMESTAMP = 1554595182000L; // 1024 weeks in milliseconds private static final long ROLLOVER_MILLIS = 1024 * 7 * 24 * 60 * 60 * 1000L; private boolean liveSync = false; private int maxAccuracy; private float minDistance; Loading Loading @@ -249,6 +256,20 @@ class LocationHelper { return liveSync; } /** * Fix GPS week count rollover bug if needed * https://galileognss.eu/gps-week-number-rollover-april-6-2019/ * @param location Location */ static void handleRolloverBug(Location location) { long gpsTime = location.getTime(); if (gpsTime > FIRST_ROLLOVER_TIMESTAMP && gpsTime < SECOND_ROLLOVER_TIMESTAMP) { if (Logger.DEBUG) { Log.d(TAG, "[Fixing GPS rollover bug: " + gpsTime + "]"); } location.setTime(gpsTime + ROLLOVER_MILLIS); } } /** * Logger exceptions */ Loading app/src/main/java/net/fabiszewski/ulogger/LoggerService.java +2 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,8 @@ public class LoggerService extends Service { public void onLocationChanged(Location location) { if (Logger.DEBUG) { Log.d(TAG, "[location changed: " + location + "]"); } LocationHelper.handleRolloverBug(location); if (meetsCriteria(location)) { lastLocation = location; DbAccess.writeLocation(LoggerService.this, location); Loading Loading
app/src/main/java/net/fabiszewski/ulogger/LocationHelper.java +21 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,13 @@ class LocationHelper { private final Context context; private final LocationManager locationManager; // millis 1999-08-21T23:59:42+00:00 private static final long FIRST_ROLLOVER_TIMESTAMP = 935279982000L; // millis 2019-04-06T23:59:42+00:00 private static final long SECOND_ROLLOVER_TIMESTAMP = 1554595182000L; // 1024 weeks in milliseconds private static final long ROLLOVER_MILLIS = 1024 * 7 * 24 * 60 * 60 * 1000L; private boolean liveSync = false; private int maxAccuracy; private float minDistance; Loading Loading @@ -249,6 +256,20 @@ class LocationHelper { return liveSync; } /** * Fix GPS week count rollover bug if needed * https://galileognss.eu/gps-week-number-rollover-april-6-2019/ * @param location Location */ static void handleRolloverBug(Location location) { long gpsTime = location.getTime(); if (gpsTime > FIRST_ROLLOVER_TIMESTAMP && gpsTime < SECOND_ROLLOVER_TIMESTAMP) { if (Logger.DEBUG) { Log.d(TAG, "[Fixing GPS rollover bug: " + gpsTime + "]"); } location.setTime(gpsTime + ROLLOVER_MILLIS); } } /** * Logger exceptions */ Loading
app/src/main/java/net/fabiszewski/ulogger/LoggerService.java +2 −0 Original line number Diff line number Diff line Loading @@ -300,6 +300,8 @@ public class LoggerService extends Service { public void onLocationChanged(Location location) { if (Logger.DEBUG) { Log.d(TAG, "[location changed: " + location + "]"); } LocationHelper.handleRolloverBug(location); if (meetsCriteria(location)) { lastLocation = location; DbAccess.writeLocation(LoggerService.this, location); Loading