[android] Always use newest position available in every mode

Signed-off-by: Harry Bond <me@hbond.xyz>
This commit is contained in:
Harry Bond 2025-01-02 19:05:09 +00:00
parent c23d782d6f
commit af96bbf3a9

View file

@ -34,10 +34,7 @@ import app.organicmaps.util.log.Logger;
public class LocationHelper implements BaseLocationProvider.Listener
{
private static final long INTERVAL_FOLLOW_MS = 0;
private static final long INTERVAL_NOT_FOLLOW_MS = 3000;
private static final long INTERVAL_NAVIGATION_MS = 0;
private static final long INTERVAL_TRACK_RECORDING = 0;
private static final long INTERVAL_MS = 0;
private static final long AGPS_EXPIRATION_TIME_MS = 16 * 60 * 60 * 1000; // 16 hours
private static final long LOCATION_UPDATE_TIMEOUT_MS = 30 * 1000; // 30 seconds
@ -316,20 +313,17 @@ public class LocationHelper implements BaseLocationProvider.Listener
mListeners.removeObserver(listener);
}
// Update intervals based on mode were previously implemented, check 3bf65fe80fcd2d292bc4943b8f3bc407a1fe4ede
private long calcLocationUpdatesInterval()
{
if (RoutingController.get().isNavigating())
return INTERVAL_NAVIGATION_MS;
if (TrackRecorder.nativeIsTrackRecordingEnabled())
return INTERVAL_TRACK_RECORDING;
final int mode = Map.isEngineCreated() ? LocationState.getMode() : LocationState.NOT_FOLLOW_NO_POSITION;
return switch (mode)
{
case LocationState.PENDING_POSITION, LocationState.FOLLOW, LocationState.FOLLOW_AND_ROTATE ->
INTERVAL_FOLLOW_MS;
case LocationState.NOT_FOLLOW, LocationState.NOT_FOLLOW_NO_POSITION -> INTERVAL_NOT_FOLLOW_MS;
case LocationState.PENDING_POSITION,
LocationState.FOLLOW,
LocationState.FOLLOW_AND_ROTATE,
LocationState.NOT_FOLLOW,
LocationState.NOT_FOLLOW_NO_POSITION -> INTERVAL_MS;
default -> throw new IllegalArgumentException("Unsupported location mode: " + mode);
};
}