Added support for average pace of the current segment

This commit is contained in:
Jeff Shelley
2025-10-08 21:56:06 -05:00
parent 1fa76301e2
commit 94595f2a1f
10 changed files with 67 additions and 27 deletions
@@ -10,8 +10,7 @@ import de.dennisguse.opentracks.stats.TrackStatistics;
/**
* {@link Track} and {@link TrackPoint} must be immutable (i.e., their content does not change).
*/
public record RecordingData(Track track, TrackPoint latestTrackPoint, SensorDataSet sensorDataSet) {
public record RecordingData(Track track, TrackPoint latestTrackPoint, SensorDataSet sensorDataSet, TrackStatistics currentSegment) {
public String getTrackCategory() {
if (track == null) {
return "";
@@ -20,11 +19,21 @@ public record RecordingData(Track track, TrackPoint latestTrackPoint, SensorData
}
@NonNull
public TrackStatistics getTrackStatistics() {
public TrackStatistics getStatisticsTrack() {
if (track == null) {
return new TrackStatistics();
}
return track.getTrackStatistics();
}
@NonNull
public TrackStatistics getStatisticsCurrentSegment() {
if (currentSegment == null) {
return new TrackStatistics();
}
return currentSegment;
}
}
@@ -116,7 +116,7 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen
reset();
}
Pair<Track, Pair<TrackPoint, SensorDataSet>> getDataForUI() {
RecordingData getDataForUI() {
TrackStatisticsUpdater tmpTrackStatisticsUpdater = new TrackStatisticsUpdater(trackStatisticsUpdater);
Pair<TrackPoint, SensorDataSet> current = trackPointCreator.createCurrentTrackPoint(lastTrackPointUIWithSpeed, lastTrackPointUIWithAltitude, lastStoredTrackPointWithLocation);
@@ -131,8 +131,9 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen
}
track.setTrackStatistics(tmpTrackStatisticsUpdater.getTrackStatistics());
TrackStatistics currentSegment = tmpTrackStatisticsUpdater.getCurrentSegment();
return new Pair<>(track, current);
return new RecordingData(track, current.first, current.second, currentSegment);
}
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
@@ -55,7 +55,7 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
private static final Duration RECORDING_DATA_UPDATE_INTERVAL = Duration.ofSeconds(1);
public static final RecordingStatus STATUS_DEFAULT = RecordingStatus.notRecording();
public static final RecordingData NOT_RECORDING = new RecordingData(null, null, null);
public static final RecordingData NOT_RECORDING = new RecordingData(null, null, null, null);
public static final GpsStatusValue STATUS_GPS_DEFAULT = GpsStatusValue.GPS_NONE;
public TrackPoint getLastStoredTrackPointWithLocation() {
@@ -315,11 +315,11 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
}
// Compute temporary track statistics using sensorData and update time.
Pair<Track, Pair<TrackPoint, SensorDataSet>> data = trackRecordingManager.getDataForUI();
RecordingData data = trackRecordingManager.getDataForUI();
voiceAnnouncementManager.announceStatisticsIfNeeded(data.first, data.second.second);
voiceAnnouncementManager.announceStatisticsIfNeeded(data.track(), data.sensorDataSet());
recordingDataObservable.postValue(new RecordingData(data.first, data.second.first, data.second.second));
recordingDataObservable.postValue(data);
}
public void onIdle() {