[android] increase location update freq from 1s to 0.5s, don't take 3s to update when not following position

supersedes #1022
I don't think there's much point in mode-dependent update frequencies, AFAIK it's from earlier maps.me days when phones were weaker.

Signed-off-by: Harry Bond <me@hbond.xyz>
This commit is contained in:
Harry Bond
2025-08-23 20:03:37 +01:00
committed by Konstantin Pastbin
parent 74a36bc49a
commit 73238a6e3c

View File

@@ -21,7 +21,6 @@ import app.organicmaps.sdk.Map;
import app.organicmaps.sdk.bookmarks.data.FeatureId; import app.organicmaps.sdk.bookmarks.data.FeatureId;
import app.organicmaps.sdk.bookmarks.data.MapObject; import app.organicmaps.sdk.bookmarks.data.MapObject;
import app.organicmaps.sdk.routing.JunctionInfo; import app.organicmaps.sdk.routing.JunctionInfo;
import app.organicmaps.sdk.routing.RoutingController;
import app.organicmaps.sdk.util.Config; import app.organicmaps.sdk.util.Config;
import app.organicmaps.sdk.util.LocationUtils; import app.organicmaps.sdk.util.LocationUtils;
import app.organicmaps.sdk.util.NetworkPolicy; import app.organicmaps.sdk.util.NetworkPolicy;
@@ -30,10 +29,8 @@ import org.chromium.base.ObserverList;
public class LocationHelper implements BaseLocationProvider.Listener public class LocationHelper implements BaseLocationProvider.Listener
{ {
private static final long INTERVAL_FOLLOW_MS = 0; private static final long INTERVAL_MS = 500;
private static final long INTERVAL_NOT_FOLLOW_MS = 3000; private static final long INTERVAL_TRACK_RECORDING = 1000;
private static final long INTERVAL_NAVIGATION_MS = 1000;
private static final long INTERVAL_TRACK_RECORDING = 0;
private static final long AGPS_EXPIRATION_TIME_MS = 16 * 60 * 60 * 1000; // 16 hours 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 private static final long LOCATION_UPDATE_TIMEOUT_MS = 30 * 1000; // 30 seconds
@@ -311,19 +308,10 @@ public class LocationHelper implements BaseLocationProvider.Listener
private long calcLocationUpdatesInterval() private long calcLocationUpdatesInterval()
{ {
if (RoutingController.get().isNavigating())
return INTERVAL_NAVIGATION_MS;
if (TrackRecorder.nativeIsTrackRecordingEnabled()) if (TrackRecorder.nativeIsTrackRecordingEnabled())
return INTERVAL_TRACK_RECORDING; return INTERVAL_TRACK_RECORDING;
final int mode = Map.isEngineCreated() ? LocationState.getMode() : LocationState.NOT_FOLLOW_NO_POSITION; return INTERVAL_MS;
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;
default -> throw new IllegalArgumentException("Unsupported location mode: " + mode);
};
} }
/** /**