diff --git a/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java b/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java index 8101d30..c04be80 100644 --- a/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java +++ b/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java @@ -24,6 +24,7 @@ import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.model.Chat; import com.pengrad.telegrambot.request.SendLocation; +import java.time.Duration; import java.util.List; public class LocationLoggingService extends Service implements LocationListener { @@ -95,10 +96,29 @@ public class LocationLoggingService extends Service implements LocationListener private void updateLocation(Location newLocation){ - if(lastLocation != null && (newLocation.distanceTo(lastLocation) < 2000)) + if(lastLocation != null) { - Log.d(TAG, "Distance to last location too short. Ignoring."); - return; + if(newLocation.distanceTo(lastLocation) < 2000) { + Log.d(TAG, "Distance to last location too short. Ignoring."); + return; + } + + long oldTime = lastLocation.getTime(); + long newTime = newLocation.getTime(); + Duration durationBetweenUpdates = Duration.ofMinutes(6); + + if(oldTime > newTime) + { + Log.w(TAG, "Last location time was somehow after new location's."); + return; + } + + long millisSinceLastUpdate = newTime - oldTime; + if(durationBetweenUpdates.toMillis() > millisSinceLastUpdate) + { + Log.d(TAG, "Location update is too recent."); + return; + } } if(!newLocation.hasAccuracy())