From 7938de708b06f1fee24e6921721d023d134c3521 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sat, 16 May 2026 14:11:55 +0200 Subject: [PATCH] Only log point if new point is further away from previous than its accuracy --- app/src/main/java/net/osmtracker/OSMTracker.java | 3 +++ .../main/java/net/osmtracker/service/gps/GPSLogger.java | 9 +++++++++ app/src/main/res/values/strings-preferences.xml | 2 ++ app/src/main/res/xml/preferences.xml | 7 ++++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/osmtracker/OSMTracker.java b/app/src/main/java/net/osmtracker/OSMTracker.java index 3accb77c..8a81ac22 100644 --- a/app/src/main/java/net/osmtracker/OSMTracker.java +++ b/app/src/main/java/net/osmtracker/OSMTracker.java @@ -23,6 +23,8 @@ public static final class Preferences { public final static String KEY_GPS_IGNORE_CLOCK = "gps.ignoreclock"; public final static String KEY_GPS_LOGGING_INTERVAL = "gps.logging.interval"; public final static String KEY_GPS_LOGGING_MIN_DISTANCE = "gps.logging.min_distance"; + public final static String KEY_GPS_LOGGING_DIST_GT_ACCURACY = "gps.logging.dist_gt_accuracy"; + public final static String KEY_USE_BAROMETER = "gpx.use_barometer"; public final static String KEY_USE_NOTES = "gpx.notes"; public final static String KEY_OUTPUT_FILENAME = "gpx.filename"; @@ -61,6 +63,7 @@ public static final class Preferences { public final static boolean VAL_GPS_IGNORE_CLOCK = false; public final static String VAL_GPS_LOGGING_INTERVAL = "0"; public final static String VAL_GPS_LOGGING_MIN_DISTANCE = "0"; + public final static boolean VAL_GPS_LOGGING_DIST_GT_ACCURACY = false; public final static boolean VAL_USE_BAROMETER = false; public final static String VAL_USE_NOTES = "both"; diff --git a/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java b/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java index 901cc5e6..f865cc3d 100644 --- a/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java +++ b/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java @@ -98,6 +98,7 @@ public class GPSLogger extends Service implements LocationListener { */ private long gpsLoggingInterval; private long gpsLoggingMinDistance; + private boolean gpsLoggingDistGtAccuracy; /** * sensors for magnetic orientation @@ -254,6 +255,8 @@ public void onCreate() { OSMTracker.Preferences.KEY_GPS_LOGGING_MIN_DISTANCE, OSMTracker.Preferences.VAL_GPS_LOGGING_MIN_DISTANCE)); use_barometer = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext()).getBoolean( OSMTracker.Preferences.KEY_USE_BAROMETER, OSMTracker.Preferences.VAL_USE_BAROMETER); + gpsLoggingDistGtAccuracy = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext()).getBoolean( + OSMTracker.Preferences.KEY_GPS_LOGGING_DIST_GT_ACCURACY, OSMTracker.Preferences.VAL_GPS_LOGGING_DIST_GT_ACCURACY); // Register our broadcast receiver IntentFilter filter = new IntentFilter(); @@ -348,6 +351,12 @@ public void onLocationChanged(Location location) { // first of all we check if the time from the last used fix to the current fix is greater than the logging interval if((lastGPSTimestamp + gpsLoggingInterval) < System.currentTimeMillis()){ + // next check whether distance is greater than accurracy + if(gpsLoggingDistGtAccuracy && + lastLocation != null && + location.distanceTo(lastLocation) <= location.getAccuracy()) + return; + lastGPSTimestamp = System.currentTimeMillis(); // save the time of this fix lastLocation = location; diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml index 88861e3c..a4ecba71 100644 --- a/app/src/main/res/values/strings-preferences.xml +++ b/app/src/main/res/values/strings-preferences.xml @@ -26,6 +26,8 @@ Min. distance between track points in meters, use 0 for the shortest possible meters Min. distance between track points cannot be empty + Log only pts where dist. > accur. + Log only points which are further away from previous point than GPS accuracy User interface Default photo source Take photos from camera or gallery? diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index fb05bec8..07d2b719 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -67,6 +67,11 @@ app:key="gps.logging.min_distance" app:summary="@string/prefs_gps_logging_min_distance_summary" app:title="@string/prefs_gps_logging_min_distance" /> + @@ -159,4 +164,4 @@ app:title="@string/prefs_ui_orientation" /> - \ No newline at end of file +