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
+