diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java index 911a282a9..c5bd6f527 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java @@ -3,7 +3,6 @@ package de.dennisguse.opentracks.services.handlers; import static org.mockito.Mockito.verify; import android.content.Context; -import android.content.SharedPreferences; import org.junit.After; import org.junit.Before; @@ -28,9 +27,6 @@ public class TrackPointCreatorTest { @Mock private GPSHandler locationHandler; - @Mock - private SharedPreferences sharedPreferences; - private TrackPointCreator subject; @Before diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index c18326cd1..46d18f5d8 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -142,7 +142,7 @@ class TrackRecordingManager { photoUrl = photoUrl != null ? photoUrl : ""; // Insert marker - Marker marker = new Marker(name, description, category, icon, trackId, getTrackStatistics(), lastStoredTrackPoint, photoUrl); + Marker marker = new Marker(name, description, category, icon, trackId, getTrackStatistics(), lastStoredTrackPointWithLocation, photoUrl); Uri uri = contentProviderUtils.insertMarker(marker); return new Marker.Id(ContentUris.parseId(uri)); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index ace7d127d..96cafce0d 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -87,6 +87,8 @@ public class TrackRecordingService extends Service implements TrackPointCreator. @Override public void run() { updateRecordingDataWhileRecording(); + trackPointCreator.onNewTrackPointWithoutGPS(); //TODO Should not be called every second, right? + with do some duplicate computation with updateRecordingDataWhileRecording(). + Handler localHandler = TrackRecordingService.this.handler; if (localHandler == null) { // when this happens, no recording is running and we should not send any notifications. diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java b/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java index 2ce546cfe..341618724 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java @@ -158,6 +158,10 @@ public class GPSHandler implements LocationListener, GpsStatus.GpsStatusListener return lastTrackPoint; } + Distance getThresholdHorizontalAccuracy() { + return thresholdHorizontalAccuracy; + } + /** * Called from {@link GpsStatus} to inform that GPS status has changed from prevStatus to currentStatus. * diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java b/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java index 3572fd974..aabceb84d 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java @@ -101,7 +101,7 @@ public class TrackPointCreator { gpsHandler.onSharedPreferenceChanged(key); } - public void onNewTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) { + public synchronized void onNewTrackPoint(@NonNull TrackPoint trackPoint, @NonNull Distance thresholdHorizontalAccuracy) { fill(trackPoint); boolean stored = service.newTrackPoint(trackPoint, thresholdHorizontalAccuracy); @@ -110,6 +110,10 @@ public class TrackPointCreator { } } + public void onNewTrackPointWithoutGPS() { + onNewTrackPoint(new TrackPoint(TrackPoint.Type.SENSORPOINT, createNow()), gpsHandler.getThresholdHorizontalAccuracy()); + } + public TrackPoint createSegmentStartManual() { return TrackPoint.createSegmentStartManualWithTime(createNow()); }