diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java index 994113437..4d190556e 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestDataUtil.java @@ -115,7 +115,7 @@ public class TestDataUtil { TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.ofEpochSecond(i + 1)); trackPoint.setLatitude(INITIAL_LATITUDE + (double) i / 10000.0); trackPoint.setLongitude(INITIAL_LONGITUDE - (double) i / 10000.0); - trackPoint.setAccuracy((float) i / 100.0f); + trackPoint.setHorizontalAccuracy(Distance.of(i / 100.0f)); trackPoint.setAltitude(i * ALTITUDE_INTERVAL); trackPoint.setSpeed(Speed.of(5f + (i / 10f))); diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java index 92bb323d9..1d375374f 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/data/TestSensorDataUtil.java @@ -19,7 +19,7 @@ public class TestSensorDataUtil { tp.setHeartRate_bpm(hr); tp.setCyclingCadence_rpm(cadence); tp.setPower(power); - tp.setAccuracy(1f); + tp.setHorizontalAccuracy(Distance.of(1f)); tp.setAltitude(1f); tp.setSpeed(Speed.of(5f + (i / 10f))); tp.setAltitudeGain(3f); diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java index 011f9fcd6..5e87af0e4 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -138,7 +138,7 @@ public class CustomContentProviderUtilsTest { TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.ofEpochMilli(i)) .setLatitude(37.0 + (double) i / 10000.0) .setLongitude(57.0 - (double) i / 10000.0) - .setAccuracy((float) i / 100.0f) + .setHorizontalAccuracy(Distance.of(i / 100.0f)) .setAltitude(i * 2.5); trackPoints.add(trackPoint); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/fragments/TrackStubUtils.java b/src/androidTest/java/de/dennisguse/opentracks/fragments/TrackStubUtils.java index 658877433..ba8b3c473 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/fragments/TrackStubUtils.java +++ b/src/androidTest/java/de/dennisguse/opentracks/fragments/TrackStubUtils.java @@ -18,6 +18,7 @@ package de.dennisguse.opentracks.fragments; import java.time.Instant; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.TrackPoint; @@ -32,7 +33,7 @@ public class TrackStubUtils { public static final long INITIAL_TIME = 1000L; private static final double INITIAL_LATITUDE = 22; private static final double INITIAL_LONGITUDE = 22; - private static final float INITIAL_ACCURACY = 5; + private static final Distance INITIAL_ACCURACY = Distance.of(5); private static final Speed INITIAL_SPEED = Speed.of(10); private static final float INITIAL_BEARING = 3.0f; @@ -55,7 +56,7 @@ public class TrackStubUtils { .setLatitude(latitude) .setLongitude(longitude) .setAltitude(altitude) - .setAccuracy(INITIAL_ACCURACY) + .setHorizontalAccuracy(INITIAL_ACCURACY) .setSpeed(INITIAL_SPEED) .setBearing(INITIAL_BEARING); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java index d8bafea82..c7a5f5a03 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java @@ -119,10 +119,10 @@ public class ExportImportTest { Distance sensorDistance = hasSensorDistance ? Distance.of(5) : null; - service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:03Z"), 3, 14, 10, 15, 10, 1, 66, 3, 50, sensorDistance), 0); + service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:03Z"), 3, 14, 10, 15, 10, 1, 66, 3, 50, sensorDistance), Distance.of(0)); service.insertMarker("Marker 1", "Marker 1 category", "Marker 1 desc", null); - service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:04Z"), 3, 14.001, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0); - service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:05Z"), 3, 14.002, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0); + service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:04Z"), 3, 14.001, 10, 15, 10, 0, 66, 3, 50, sensorDistance), Distance.of(0)); + service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:05Z"), 3, 14.002, 10, 15, 10, 0, 66, 3, 50, sensorDistance), Distance.of(0)); service.insertMarker("Marker 2", "Marker 2 category", "Marker 2 desc", null); handlerServer.setClock(Clock.fixed(Instant.parse("2020-02-02T02:02:06Z"), ZoneId.of("CET"))); @@ -131,9 +131,9 @@ public class ExportImportTest { handlerServer.setClock(Clock.fixed(Instant.parse("2020-02-02T02:02:20Z"), ZoneId.of("CET"))); service.resumeCurrentTrack(); - service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:21Z"), 3, 14.003, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0); - service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:22Z"), 3, 16, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0); - service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:23Z"), 3, 16.001, 10, 15, 10, 0, 66, 3, 50, sensorDistance), 0); + service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:21Z"), 3, 14.003, 10, 15, 10, 0, 66, 3, 50, sensorDistance), Distance.of(0)); + service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:22Z"), 3, 16, 10, 15, 10, 0, 66, 3, 50, sensorDistance), Distance.of(0)); + service.newTrackPoint(createTrackPoint(Instant.parse("2020-02-02T02:02:23Z"), 3, 16.001, 10, 15, 10, 0, 66, 3, 50, sensorDistance), Distance.of(0)); handlerServer.setClock(Clock.fixed(Instant.parse("2020-02-02T02:02:24Z"), ZoneId.of("CET"))); service.endCurrentTrack(); @@ -408,7 +408,7 @@ public class ExportImportTest { private static TrackPoint createTrackPoint(Instant time, double latitude, double longitude, float accuracy, float speed, float altitude, float altitudeGain, float heartRate, float cyclingCadence, float power, Distance distance) { TrackPoint tp = new TrackPoint(latitude, longitude, Altitude.WGS84.of(altitude), time); - tp.setAccuracy(accuracy); + tp.setHorizontalAccuracy(Distance.of(accuracy)); tp.setSpeed(Speed.of(speed)); tp.setHeartRate_bpm(heartRate); tp.setCyclingCadence_rpm(cyclingCadence); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java index e36f59d4c..2bad0ea14 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java @@ -50,12 +50,12 @@ public class TrackPointAssert { } if (assertAccuracy) { - Assert.assertEquals(expected.hasAccuracy(), actual.hasAccuracy()); - if (expected.hasAccuracy()) { - Assert.assertEquals(expected.getAccuracy(), actual.getAccuracy(), delta); + Assert.assertEquals(expected.hasHorizontalAccuracy(), actual.hasHorizontalAccuracy()); + if (expected.hasHorizontalAccuracy()) { + Assert.assertEquals(expected.getHorizontalAccuracy().toM(), actual.getHorizontalAccuracy().toM(), delta); } } else { - Assert.assertFalse(actual.hasAccuracy()); + Assert.assertFalse(actual.hasHorizontalAccuracy()); } Assert.assertEquals(expected.hasSensorDistance(), actual.hasSensorDistance()); diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java index ddf91794d..5e14c577e 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java @@ -40,20 +40,21 @@ public class TrackRecordingServiceNotificationManagerTest { @Test public void updateLocation_triggersAlertOnlyOnFirstInaccurateLocation() { - when(trackPointMock.hasAccuracy()).thenReturn(true); - when(trackPointMock.getAccuracy()).thenReturn(999f); + when(trackPointMock.hasHorizontalAccuracy()).thenReturn(true); + when(trackPointMock.getHorizontalAccuracy()).thenReturn(Distance.of(999f)); when(trackPointMock.getSpeed()).thenReturn(Speed.of(0)); when(trackStatisticsMock.getTotalDistance()).thenReturn(Distance.of(0)); - when(notificationCompatBuilder.setOnlyAlertOnce(anyBoolean())).thenReturn(notificationCompatBuilder); + when(notificationCompatBuilder.setOnlyAlertOnce(anyBoolean())) + .thenReturn(notificationCompatBuilder); TrackRecordingServiceNotificationManager subject = new TrackRecordingServiceNotificationManager(notificationManager, notificationCompatBuilder); subject.setMetricUnits(true); // when - subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 100); - subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 100); - subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 1000); - subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, 100); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, Distance.of(100)); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, Distance.of(100)); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, Distance.of(1000)); + subject.updateTrackPoint(context, trackStatisticsMock, trackPointMock, Distance.of(100)); // then verify(notificationCompatBuilder, times(6)).setOnlyAlertOnce(true); diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index 3ac86e766..eaf10e06d 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -47,6 +47,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.TestDataUtil; @@ -296,7 +297,7 @@ public class TrackRecordingServiceTest { handlerServer.stopGPS(); handlerServer.setAltitudeSumManager(altitudeSumManager); - handlerServer.onNewTrackPoint(new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.parse("2020-02-02T02:02:05Z")), 50); + handlerServer.onNewTrackPoint(new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.parse("2020-02-02T02:02:05Z")), Distance.of(50)); // then assertTrue(service.isRecording()); @@ -415,7 +416,7 @@ public class TrackRecordingServiceTest { new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.parse("2020-02-02T02:02:03Z")) .setLatitude(10) .setLongitude(10) - , 50); + , Distance.of(50)); // when Marker.Id markerId = service.insertMarker(null, null, null, null); @@ -458,14 +459,14 @@ public class TrackRecordingServiceTest { /** * Inserts a location and waits for 200ms. */ - private static void newTrackPoint(TrackRecordingService trackRecordingService, double latitude, double longitude, float accuracy, long speed, long time) throws InterruptedException { + private static void newTrackPoint(TrackRecordingService trackRecordingService, double latitude, double longitude, float accuracy, long speed, long time) { TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, Instant.ofEpochMilli(time)) .setLongitude(longitude) .setLatitude(latitude) - .setAccuracy(accuracy) + .setHorizontalAccuracy(Distance.of(accuracy)) .setSpeed(Speed.of(speed)) .setBearing(3.0f); - trackRecordingService.getHandlerServer().onNewTrackPoint(trackPoint, 50); + trackRecordingService.getHandlerServer().onNewTrackPoint(trackPoint, Distance.of(50)); } } diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java index eacce00a6..c2c7c7361 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.TestDataUtil; import de.dennisguse.opentracks.content.data.Track; @@ -132,42 +133,42 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(1) + .setHorizontalAccuracy(Distance.of(1)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.0001) .setLongitude(35) - .setAccuracy(2) + .setHorizontalAccuracy(Distance.of(2)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.0001) .setLongitude(35) - .setAccuracy(3) + .setHorizontalAccuracy(Distance.of(3)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.0002) .setLongitude(35) - .setAccuracy(4) + .setHorizontalAccuracy(Distance.of(4)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.0003) .setLongitude(35) - .setAccuracy(5) + .setHorizontalAccuracy(Distance.of(5)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.0004) .setLongitude(35) - .setAccuracy(6) + .setHorizontalAccuracy(Distance.of(6)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), @@ -205,14 +206,14 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(1) + .setHorizontalAccuracy(Distance.of(1)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.0005) .setLongitude(35) - .setAccuracy(6) + .setHorizontalAccuracy(Distance.of(6)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), @@ -250,21 +251,21 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(1) + .setHorizontalAccuracy(Distance.of(1)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) //TODO Why is this added? Systems is idle and not moving at all. .setLatitude(45) .setLongitude(35) - .setAccuracy(2) + .setHorizontalAccuracy(Distance.of(2)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(6) + .setHorizontalAccuracy(Distance.of(6)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), @@ -303,28 +304,28 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(1) + .setHorizontalAccuracy(Distance.of(1)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) //TODO Check why this trackPoint is inserted. .setLatitude(45) .setLongitude(35) - .setAccuracy(2) + .setHorizontalAccuracy(Distance.of(2)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) //TODO Check why this trackPoint is inserted. .setLatitude(45) .setLongitude(35) - .setAccuracy(5) + .setHorizontalAccuracy(Distance.of(5)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(6) + .setHorizontalAccuracy(Distance.of(6)) .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), @@ -377,7 +378,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(1) + .setHorizontalAccuracy(Distance.of(1)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -385,7 +386,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(2) + .setHorizontalAccuracy(Distance.of(2)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -393,7 +394,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(3) + .setHorizontalAccuracy(Distance.of(3)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -401,7 +402,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(4) + .setHorizontalAccuracy(Distance.of(4)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -409,7 +410,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(5) + .setHorizontalAccuracy(Distance.of(5)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -417,7 +418,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(6) + .setHorizontalAccuracy(Distance.of(6)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -457,7 +458,7 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) - .setAccuracy(1) + .setHorizontalAccuracy(Distance.of(1)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), @@ -465,14 +466,14 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.SEGMENT_START_AUTOMATIC, null) .setLatitude(45.1) .setLongitude(35) - .setAccuracy(2) + .setHorizontalAccuracy(Distance.of(2)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.1) .setLongitude(35) - .setAccuracy(3) + .setHorizontalAccuracy(Distance.of(3)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), @@ -480,14 +481,14 @@ public class TrackRecordingServiceTestLocation { new TrackPoint(TrackPoint.Type.SEGMENT_START_AUTOMATIC, null) .setLatitude(45.2) .setLongitude(35) - .setAccuracy(4) + .setHorizontalAccuracy(Distance.of(4)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45.2) .setLongitude(35) - .setAccuracy(5) + .setHorizontalAccuracy(Distance.of(5)) .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index 311ed5a4e..bbd47c89a 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.TrackPoint; @@ -238,11 +239,11 @@ public class TrackRecordingServiceTestLooper { TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, service.getHandlerServer().createNow()) .setLongitude(35.0f + i / 10.0f) .setLatitude(45.0f - i / 5.0f) - .setAccuracy(5) + .setHorizontalAccuracy(Distance.of(5)) .setSpeed(Speed.of(10)) .setBearing(3.0f); - int prefAccuracy = PreferencesUtils.getRecordingGPSAccuracy(sharedPreferences, context); + Distance prefAccuracy = PreferencesUtils.getThresholdHorizontalAccuracy(sharedPreferences, context); service.getHandlerServer().onNewTrackPoint(trackPoint, prefAccuracy); if (i % 7 == 0) { diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/HandlerServerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/HandlerServerTest.java index e346a57c2..b4d8cb38e 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/HandlerServerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/HandlerServerTest.java @@ -11,6 +11,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.TrackPoint; import static org.mockito.Mockito.verify; @@ -48,13 +49,13 @@ public class HandlerServerTest { public void sendTrackPoint() throws InterruptedException { // given TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, null); - int accuracy = 50; + Distance horizontalAccuracyThreshold = Distance.of(50); // when - subject.onNewTrackPoint(trackPoint, accuracy); + subject.onNewTrackPoint(trackPoint, horizontalAccuracyThreshold); // then Thread.sleep(10); // Wait for executor service - verify(server).newTrackPoint(trackPoint, accuracy); + verify(server).newTrackPoint(trackPoint, horizontalAccuracyThreshold); } } \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/LocationHandlerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/LocationHandlerTest.java index c07a671a9..4115c47f4 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/LocationHandlerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/LocationHandlerTest.java @@ -18,6 +18,7 @@ import org.mockito.junit.MockitoJUnitRunner; import java.time.Instant; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -66,7 +67,7 @@ public class LocationHandlerTest { locationHandler.onLocationChanged(createLocation(45f, 35f, 3, 5, System.currentTimeMillis())); // then - verify(handlerServer, times(1)).onNewTrackPoint(any(TrackPoint.class), any(Integer.class)); + verify(handlerServer, times(1)).onNewTrackPoint(any(TrackPoint.class), any(Distance.class)); } /** @@ -82,7 +83,7 @@ public class LocationHandlerTest { locationHandler.onLocationChanged(createLocation(latitude, 35f, 3, 5, System.currentTimeMillis())); // then - verify(handlerServer, times(0)).onNewTrackPoint(any(TrackPoint.class), any(Integer.class)); + verify(handlerServer, times(0)).onNewTrackPoint(any(TrackPoint.class), any(Distance.class)); } /** @@ -91,14 +92,14 @@ public class LocationHandlerTest { @Test public void testOnLocationChanged_poorAccuracy() { // given - int prefAccuracy = PreferencesUtils.getRecordingGPSAccuracy(sharedPreferences, context); + Distance prefAccuracy = PreferencesUtils.getThresholdHorizontalAccuracy(sharedPreferences, context); // when - locationHandler.onLocationChanged(createLocation(45f, 35f, prefAccuracy + 1, 5, System.currentTimeMillis())); + locationHandler.onLocationChanged(createLocation(45f, 35f, (float) (prefAccuracy.toM() + 1), 5, System.currentTimeMillis())); // then // no newTrackPoint called - verify(handlerServer, times(0)).onNewTrackPoint(any(TrackPoint.class), any(Integer.class)); + verify(handlerServer, times(0)).onNewTrackPoint(any(TrackPoint.class), any(Distance.class)); } @Test @@ -111,7 +112,7 @@ public class LocationHandlerTest { locationHandler.onLocationChanged(createLocation(99.0, 35.0, Long.MAX_VALUE, 15, System.currentTimeMillis())); // then - verify(handlerServer, times(1)).onNewTrackPoint(any(TrackPoint.class), any(Integer.class)); + verify(handlerServer, times(1)).onNewTrackPoint(any(TrackPoint.class), any(Distance.class)); } /** diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Marker.java b/src/main/java/de/dennisguse/opentracks/content/data/Marker.java index 0306d0fab..67298022e 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/Marker.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/Marker.java @@ -49,7 +49,8 @@ public final class Marker { private final Instant time; private Double latitude; private Double longitude; - private Float accuracy; + @Deprecated //Not needed + private Distance accuracy; private Altitude altitude; private Float bearing; @@ -96,7 +97,7 @@ public final class Marker { public void setTrackPoint(TrackPoint trackPoint) { this.latitude = trackPoint.getLatitude(); this.longitude = trackPoint.getLongitude(); - if (trackPoint.hasAccuracy()) this.accuracy = trackPoint.getAccuracy(); + if (trackPoint.hasHorizontalAccuracy()) this.accuracy = trackPoint.getHorizontalAccuracy(); if (trackPoint.hasAltitude()) this.altitude = trackPoint.getAltitude(); if (trackPoint.hasBearing()) this.bearing = trackPoint.getBearing(); } @@ -173,7 +174,7 @@ public final class Marker { location.setBearing(bearing); } if (hasAccuracy()) { - location.setAccuracy(accuracy); + location.setAccuracy((float) accuracy.toM()); } if (hasAltitude()) { location.setAltitude(altitude.toM()); @@ -202,11 +203,11 @@ public final class Marker { return accuracy != null; } - public Float getAccuracy() { + public Distance getAccuracy() { return accuracy; } - public void setAccuracy(Float accuracy) { + public void setAccuracy(Distance accuracy) { this.accuracy = accuracy; } diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java index 9f26c8913..8eb6175c0 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java @@ -53,7 +53,7 @@ public class TrackPoint { private Double latitude; private Double longitude; - private Float accuracy; + private Distance horizontalAccuracy; private Altitude altitude; private Speed speed; private Float bearing; @@ -112,7 +112,7 @@ public class TrackPoint { this.longitude = location.getLongitude(); this.altitude = location.hasAltitude() ? Altitude.WGS84.of(location.getAltitude()) : null; this.speed = location.hasSpeed() ? Speed.of(location.getSpeed()) : null; - this.accuracy = location.hasAccuracy() ? location.getAccuracy() : null; + this.horizontalAccuracy = location.hasAccuracy() ? Distance.of(location.getAccuracy()) : null; //TODO Should we copy the bearing? } @@ -197,8 +197,8 @@ public class TrackPoint { if (hasBearing()) { location.setBearing(bearing); } - if (hasAccuracy()) { - location.setAccuracy(accuracy); + if (hasHorizontalAccuracy()) { + location.setAccuracy((float) horizontalAccuracy.toM()); } if (hasAltitude()) { location.setAltitude(altitude.toM()); @@ -293,16 +293,16 @@ public class TrackPoint { return this; } - public boolean hasAccuracy() { - return accuracy != null; + public boolean hasHorizontalAccuracy() { + return horizontalAccuracy != null; } - public float getAccuracy() { - return accuracy; + public Distance getHorizontalAccuracy() { + return horizontalAccuracy; } - public TrackPoint setAccuracy(float horizontalAccuracy) { - this.accuracy = horizontalAccuracy; + public TrackPoint setHorizontalAccuracy(Distance horizontalAccuracy) { + this.horizontalAccuracy = horizontalAccuracy; return this; } @@ -318,8 +318,8 @@ public class TrackPoint { return Distance.of(getLocation().distanceTo(previous.getLocation())); } - public boolean fulfillsAccuracy(int poorAccuracy) { - return hasAccuracy() && accuracy < poorAccuracy; + public boolean fulfillsAccuracy(Distance thresholdHorizontalAccuracy) { + return hasHorizontalAccuracy() && horizontalAccuracy.lessThan(thresholdHorizontalAccuracy); } //TODO Bearing requires a location; what do we do if we don't have any? @@ -397,11 +397,11 @@ public class TrackPoint { return result; } result += ": lat=" + getLatitude() + " lng=" + getLongitude(); - if (!hasAccuracy()) { + if (!hasHorizontalAccuracy()) { return result; } - return result + " acc=" + getAccuracy(); + return result + " acc=" + getHorizontalAccuracy(); } public static class Id { diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java b/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java index 166bbc643..9f4e5bc41 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java @@ -45,7 +45,7 @@ public interface TrackPointsColumns extends BaseColumns { String TIME = "time"; String ALTITUDE = "elevation"; - String ACCURACY = "accuracy"; + String HORIZONTAL_ACCURACY = "accuracy"; String SPEED = "speed"; String BEARING = "bearing"; String SENSOR_HEARTRATE = "sensor_heartrate"; @@ -69,7 +69,7 @@ public interface TrackPointsColumns extends BaseColumns { + LATITUDE + " INTEGER, " + TIME + " INTEGER, " + ALTITUDE + " FLOAT, " - + ACCURACY + " FLOAT, " + + HORIZONTAL_ACCURACY + " FLOAT, " + SPEED + " FLOAT, " + BEARING + " FLOAT, " + SENSOR_HEARTRATE + " FLOAT, " diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java b/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java index 282421744..3df40e868 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java @@ -31,7 +31,7 @@ class CachedTrackPointsIndexes { latitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE); timeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.TIME); altitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE); - accuracyIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ACCURACY); + accuracyIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.HORIZONTAL_ACCURACY); speedIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SPEED); bearingIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.BEARING); sensorHeartRateIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE); diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java index 7469617a4..76158054a 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -318,7 +318,7 @@ public class ContentProviderUtils { marker.setAltitude(Altitude.WGS84.of(cursor.getFloat(altitudeIndex))); } if (!cursor.isNull(accuracyIndex)) { - marker.setAccuracy(cursor.getFloat(accuracyIndex)); + marker.setAccuracy(Distance.of(cursor.getFloat(accuracyIndex))); } if (!cursor.isNull(bearingIndex)) { marker.setBearing(cursor.getFloat(bearingIndex)); @@ -472,7 +472,7 @@ public class ContentProviderUtils { values.put(MarkerColumns.ALTITUDE, marker.getAltitude().toM()); } if (marker.hasAccuracy()) { - values.put(MarkerColumns.ACCURACY, marker.getAccuracy()); + values.put(MarkerColumns.ACCURACY, marker.getAccuracy().toM()); } if (marker.hasBearing()) { values.put(MarkerColumns.BEARING, marker.getBearing()); @@ -520,7 +520,7 @@ public class ContentProviderUtils { trackPoint.setAltitude(Altitude.WGS84.of(cursor.getFloat(indexes.altitudeIndex))); } if (!cursor.isNull(indexes.accuracyIndex)) { - trackPoint.setAccuracy(cursor.getFloat(indexes.accuracyIndex)); + trackPoint.setHorizontalAccuracy(Distance.of(cursor.getFloat(indexes.accuracyIndex))); } if (!cursor.isNull(indexes.speedIndex)) { trackPoint.setSpeed(Speed.of(cursor.getFloat(indexes.speedIndex))); @@ -681,8 +681,8 @@ public class ContentProviderUtils { if (trackPoint.hasAltitude()) { values.put(TrackPointsColumns.ALTITUDE, trackPoint.getAltitude().toM()); } - if (trackPoint.hasAccuracy()) { - values.put(TrackPointsColumns.ACCURACY, trackPoint.getAccuracy()); + if (trackPoint.hasHorizontalAccuracy()) { + values.put(TrackPointsColumns.HORIZONTAL_ACCURACY, trackPoint.getHorizontalAccuracy().toM()); } if (trackPoint.hasSpeed()) { values.put(TrackPointsColumns.SPEED, trackPoint.getSpeed().toMPS()); diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 43243fa8b..e3593019e 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -492,7 +492,7 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand } @Override - public void newTrackPoint(TrackPoint trackPoint, int recordingGpsAccuracy) { + public void newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) { if (!isRecording() || isPaused()) { Log.w(TAG, "Ignore newTrackPoint. Not recording or paused."); return; @@ -504,7 +504,7 @@ public class TrackRecordingService extends Service implements HandlerServer.Hand return; } - notificationManager.updateTrackPoint(this, track.getTrackStatistics(), trackPoint, recordingGpsAccuracy); + notificationManager.updateTrackPoint(this, track.getTrackStatistics(), trackPoint, thresholdHorizontalAccuracy); //TODO Figure out how to avoid loading the lastValidTrackPoint from the database TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(track.getId()); diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java index 0b88e33bc..763f60a45 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java @@ -65,12 +65,12 @@ class TrackRecordingServiceNotificationManager { updateNotification(); } - void updateTrackPoint(Context context, TrackStatistics trackStatistics, TrackPoint trackPoint, int recordingGpsAccuracy) { + void updateTrackPoint(Context context, TrackStatistics trackStatistics, TrackPoint trackPoint, Distance recordingGpsAccuracy) { String formattedAccuracy = context.getString(R.string.value_none); - if (trackPoint.hasAccuracy()) { - formattedAccuracy = StringUtils.formatDistance(context, Distance.of(trackPoint.getAccuracy()), metricUnits); + if (trackPoint.hasHorizontalAccuracy()) { + formattedAccuracy = StringUtils.formatDistance(context, trackPoint.getHorizontalAccuracy(), metricUnits); - boolean currentLocationWasAccurate = trackPoint.getAccuracy() < recordingGpsAccuracy; + boolean currentLocationWasAccurate = trackPoint.getHorizontalAccuracy().lessThan(recordingGpsAccuracy); boolean shouldAlert = !currentLocationWasAccurate && previousLocationWasAccurate; notificationBuilder.setOnlyAlertOnce(!shouldAlert); previousLocationWasAccurate = currentLocationWasAccurate; diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java b/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java index 7f4e96388..9458f8c3f 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/GpsStatus.java @@ -5,11 +5,13 @@ import android.content.SharedPreferences; import android.location.LocationManager; import android.os.Handler; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.time.Duration; import java.time.Instant; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -24,8 +26,7 @@ class GpsStatus { // The duration that GpsStatus waits from minimal interval to consider GPS lost. private static final Duration SIGNAL_LOST_THRESHOLD = Duration.ofSeconds(10); - // Threshold for accuracy. - private double signalBadThreshold; //TODO Distance? + private Distance thresholdHorizontalAccuracy; // Threshold for time without points. private Duration signalLostThreshold; @@ -68,7 +69,7 @@ class GpsStatus { this.context = context; SharedPreferences sharedPreferences = PreferencesUtils.getSharedPreferences(context); - signalBadThreshold = PreferencesUtils.getRecordingDistanceInterval(sharedPreferences, context).toM(); + thresholdHorizontalAccuracy = PreferencesUtils.getRecordingDistanceInterval(sharedPreferences, context); Duration minRecordingInterval = Duration.ofSeconds(PreferencesUtils.getMinRecordingInterval(sharedPreferences, context)); signalLostThreshold = !minRecordingInterval.isNegative() ? SIGNAL_LOST_THRESHOLD.plus(minRecordingInterval) : SIGNAL_LOST_THRESHOLD; @@ -97,8 +98,8 @@ class GpsStatus { * * @param value New preference value to signalBadThreshold. */ - public void onRecordingDistanceChanged(int value) { - signalBadThreshold = value; + public void onRecordingDistanceChanged(@NonNull Distance value) { + thresholdHorizontalAccuracy = value; } /** @@ -147,13 +148,13 @@ class GpsStatus { gpsStatus = GpsStatusValue.GPS_SIGNAL_LOST; sendStatus(oldStatus, gpsStatus); stopStatusRunner(); - } else if (lastTrackPoint.getAccuracy() > signalBadThreshold && gpsStatus != GpsStatusValue.GPS_SIGNAL_BAD) { + } else if (lastTrackPoint.fulfillsAccuracy(thresholdHorizontalAccuracy) && gpsStatus != GpsStatusValue.GPS_SIGNAL_BAD) { // Too little accuracy -> bad signal. GpsStatusValue oldStatus = gpsStatus; gpsStatus = GpsStatusValue.GPS_SIGNAL_BAD; sendStatus(oldStatus, gpsStatus); startStatusRunner(); - } else if (lastTrackPoint.getAccuracy() <= signalBadThreshold && gpsStatus != GpsStatusValue.GPS_SIGNAL_FIX) { + } else if (lastTrackPoint.fulfillsAccuracy(thresholdHorizontalAccuracy) && gpsStatus != GpsStatusValue.GPS_SIGNAL_FIX) { // Gps okay. GpsStatusValue oldStatus = gpsStatus; gpsStatus = GpsStatusValue.GPS_SIGNAL_FIX; diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java b/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java index 04e08436b..50c147fa8 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/HandlerServer.java @@ -12,6 +12,7 @@ import androidx.annotation.VisibleForTesting; import java.time.Clock; import java.time.Instant; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.sensor.SensorDataSet; import de.dennisguse.opentracks.services.sensors.AltitudeSumManager; @@ -110,7 +111,7 @@ public class HandlerServer { locationHandler.onSharedPreferenceChanged(context, preferences, key); } - public void onNewTrackPoint(TrackPoint trackPoint, int recordingGpsAccuracy) { + public void onNewTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) { // if (serviceExecutor == null || serviceExecutor.isTerminated() || serviceExecutor.isShutdown()) { // return; // } @@ -119,8 +120,8 @@ public class HandlerServer { fillAndReset(trackPoint); -// serviceExecutor.execute(() -> service.newTrackPoint(trackPoint, recordingGpsAccuracy)); - service.newTrackPoint(trackPoint, recordingGpsAccuracy); +// serviceExecutor.execute(() -> service.newTrackPoint(trackPoint, thresholdHorizontalAccuracy)); + service.newTrackPoint(trackPoint, thresholdHorizontalAccuracy); } public TrackPoint createSegmentStartManual() { @@ -176,7 +177,7 @@ public class HandlerServer { } public interface HandlerServerInterface { - void newTrackPoint(TrackPoint trackPoint, int gpsAccuracy); + void newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy); void newGpsStatus(GpsStatusValue gpsStatusValue); } diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java b/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java index 0e88218aa..b6a971459 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java @@ -13,6 +13,7 @@ import androidx.annotation.NonNull; import java.time.Duration; import de.dennisguse.opentracks.R; +import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.util.LocationUtils; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -26,7 +27,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener { private GpsStatus gpsStatus; private LocationListenerPolicy locationListenerPolicy; private Duration currentRecordingInterval; - private int recordingGpsAccuracy; + private Distance thresholdHorizontalAccuracy; private TrackPoint lastValidTrackPoint; public LocationHandler(HandlerServer handlerServer) { @@ -69,7 +70,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener { registerLocationListener(); } if (PreferencesUtils.isKey(context, R.string.recording_gps_accuracy_key, key)) { - recordingGpsAccuracy = PreferencesUtils.getRecordingGPSAccuracy(sharedPreferences, context); + thresholdHorizontalAccuracy = PreferencesUtils.getThresholdHorizontalAccuracy(sharedPreferences, context); } if (PreferencesUtils.isKey(context, R.string.min_recording_interval_key, key)) { if (gpsStatus != null) { @@ -78,7 +79,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener { } if (PreferencesUtils.isKey(context, R.string.recording_distance_interval_key, key)) { if (gpsStatus != null) { - gpsStatus.onRecordingDistanceChanged((int) PreferencesUtils.getRecordingDistanceInterval(sharedPreferences, context).toM()); //TODO Use Distance? + gpsStatus.onRecordingDistanceChanged(PreferencesUtils.getRecordingDistanceInterval(sharedPreferences, context)); } } } @@ -91,7 +92,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener { @Override public void onLocationChanged(@NonNull Location location) { TrackPoint trackPoint = new TrackPoint(location, handlerServer.createNow()); - boolean isAccurate = trackPoint.fulfillsAccuracy(recordingGpsAccuracy); + boolean isAccurate = trackPoint.fulfillsAccuracy(thresholdHorizontalAccuracy); boolean isValid = LocationUtils.isValidLocation(location); if (gpsStatus != null) { @@ -119,7 +120,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener { } lastValidTrackPoint = trackPoint; - handlerServer.onNewTrackPoint(trackPoint, recordingGpsAccuracy); + handlerServer.onNewTrackPoint(trackPoint, thresholdHorizontalAccuracy); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index b7af715f9..ec022bd24 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -247,9 +247,9 @@ public class PreferencesUtils { return Integer.parseInt(context.getResources().getString(R.string.min_recording_interval_default)); } - public static int getRecordingGPSAccuracy(SharedPreferences sharedPreferences, Context context) { + public static Distance getThresholdHorizontalAccuracy(SharedPreferences sharedPreferences, Context context) { final int RECORDING_GPS_ACCURACY = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default)); - return getInt(sharedPreferences, context, R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY); + return Distance.of(getInt(sharedPreferences, context, R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY)); } public static boolean shouldInstantExportAfterWorkout(SharedPreferences sharedPreferences, Context context) {