forked from upstream-mirrors/OpenTracks
@@ -310,11 +310,11 @@ public class TrackPoint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Distance distanceToPrevious(@NonNull TrackPoint previous) {
|
public Distance distanceToPrevious(TrackPoint previous) {
|
||||||
if (hasSensorDistance()) {
|
if (hasSensorDistance()) {
|
||||||
return getSensorDistance();
|
return getSensorDistance();
|
||||||
}
|
}
|
||||||
if (!(hasLocation() && previous.hasLocation())) {
|
if (previous == null || !(hasLocation() && previous.hasLocation())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -111,6 +111,11 @@ class TrackRecordingManager {
|
|||||||
tmpTrackStatisticsUpdater.addTrackPoint(current.first, recordingDistanceInterval);
|
tmpTrackStatisticsUpdater.addTrackPoint(current.first, recordingDistanceInterval);
|
||||||
|
|
||||||
Track track = getTrack(); //Get copy
|
Track track = getTrack(); //Get copy
|
||||||
|
if (track == null) {
|
||||||
|
Log.w(TAG, "Requesting data if not recording is taking place, should not be done.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
track.setTrackStatistics(tmpTrackStatisticsUpdater.getTrackStatistics());
|
track.setTrackStatistics(tmpTrackStatisticsUpdater.getTrackStatistics());
|
||||||
|
|
||||||
return new Pair<>(track, current);
|
return new Pair<>(track, current);
|
||||||
@@ -157,26 +162,28 @@ class TrackRecordingManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastValidTrackPoint);
|
Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastValidTrackPoint);
|
||||||
if (distanceToLastTrackLocation.greaterThan(maxRecordingDistance)) {
|
if (distanceToLastTrackLocation != null) {
|
||||||
insertTrackPointIfNewer(track, lastTrackPoint);
|
if (distanceToLastTrackLocation.greaterThan(maxRecordingDistance)) {
|
||||||
|
insertTrackPointIfNewer(track, lastTrackPoint);
|
||||||
|
|
||||||
trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
|
trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
|
||||||
insertTrackPoint(track, trackPoint);
|
insertTrackPoint(track, trackPoint);
|
||||||
|
|
||||||
isIdle = false;
|
isIdle = false;
|
||||||
lastTrackPoint = trackPoint;
|
lastTrackPoint = trackPoint;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trackPoint.hasSensorData() || distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval)) {
|
if (trackPoint.hasSensorData() || distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval)) {
|
||||||
insertTrackPointIfNewer(track, lastTrackPoint);
|
insertTrackPointIfNewer(track, lastTrackPoint);
|
||||||
|
|
||||||
insertTrackPoint(track, trackPoint);
|
insertTrackPoint(track, trackPoint);
|
||||||
|
|
||||||
isIdle = false;
|
isIdle = false;
|
||||||
|
|
||||||
lastTrackPoint = trackPoint;
|
lastTrackPoint = trackPoint;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isIdle && !trackPoint.isMoving()) {
|
if (!isIdle && !trackPoint.isMoving()) {
|
||||||
|
|||||||
@@ -450,6 +450,10 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
|
|||||||
}
|
}
|
||||||
|
|
||||||
Pair<Track, Pair<TrackPoint, SensorDataSet>> data = trackRecordingManager.get(handlerServer);
|
Pair<Track, Pair<TrackPoint, SensorDataSet>> data = trackRecordingManager.get(handlerServer);
|
||||||
|
if (data == null) {
|
||||||
|
Log.w(TAG, "Requesting data if not recording is taking place, should not be done.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
TrackPoint trackPoint = data.second.first;
|
TrackPoint trackPoint = data.second.first;
|
||||||
egm2008CorrectionManager.correctAltitude(this, trackPoint);
|
egm2008CorrectionManager.correctAltitude(this, trackPoint);
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,10 @@ public class TrackPointCreator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void resetSensorData() {
|
public void resetSensorData() {
|
||||||
|
if (remoteSensorManager == null || altitudeSumManager == null) {
|
||||||
|
Log.d(TAG, "No recording running and no reset necessary.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
remoteSensorManager.reset();
|
remoteSensorManager.reset();
|
||||||
altitudeSumManager.reset();
|
altitudeSumManager.reset();
|
||||||
}
|
}
|
||||||
@@ -101,6 +105,16 @@ public class TrackPointCreator {
|
|||||||
// }
|
// }
|
||||||
// serviceExecutor = null;
|
// serviceExecutor = null;
|
||||||
|
|
||||||
|
if (remoteSensorManager != null) {
|
||||||
|
remoteSensorManager.stop();
|
||||||
|
remoteSensorManager = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (altitudeSumManager != null) {
|
||||||
|
altitudeSumManager.stop(context);
|
||||||
|
altitudeSumManager = null;
|
||||||
|
}
|
||||||
|
|
||||||
this.context = null;
|
this.context = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,6 +170,7 @@ public class TrackPointCreator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO Limit visibility
|
//TODO Limit visibility
|
||||||
|
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
||||||
public Instant createNow() {
|
public Instant createNow() {
|
||||||
return Instant.now(clock);
|
return Instant.now(clock);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user