Cleanup: pass RecordingData to VoiceAnnouncementManager.

This commit is contained in:
Dennis Guse
2025-11-01 09:30:47 +01:00
parent ca4cb648e7
commit 65c8e8542e
3 changed files with 11 additions and 11 deletions
@@ -318,7 +318,7 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
// Compute temporary track statistics using sensorData and update time. // Compute temporary track statistics using sensorData and update time.
RecordingData data = trackRecordingManager.getDataForUI(); RecordingData data = trackRecordingManager.getDataForUI();
voiceAnnouncementManager.announceStatisticsIfNeeded(data.track(), data.sensorDataSet()); voiceAnnouncementManager.announceStatisticsIfNeeded(data);
recordingDataObservable.postValue(data); recordingDataObservable.postValue(data);
} }
@@ -32,9 +32,8 @@ import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.Statistics; import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet; import de.dennisguse.opentracks.services.RecordingData;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
import de.dennisguse.opentracks.stats.SensorStatistics; import de.dennisguse.opentracks.stats.SensorStatistics;
import de.dennisguse.opentracks.ui.intervals.IntervalStatisticsUpdater; import de.dennisguse.opentracks.ui.intervals.IntervalStatisticsUpdater;
@@ -120,13 +119,13 @@ public class VoiceAnnouncementManager implements SharedPreferences.OnSharedPrefe
voiceAnnouncement.speak(VoiceAnnouncementUtils.createIdle(context)); voiceAnnouncement.speak(VoiceAnnouncementUtils.createIdle(context));
} }
public void announceStatisticsIfNeeded(@NonNull Track track, @NonNull SensorDataSet sensorDataSet) { public void announceStatisticsIfNeeded(@NonNull RecordingData data) {
if (shouldNotAnnounce()) { if (shouldNotAnnounce()) {
return; return;
} }
boolean announce = false; boolean announce = false;
this.trackStatistics = track.getStatistics(); this.trackStatistics = data.track().getStatistics();
if (trackStatistics.totalDistance().greaterThan(nextTotalDistance)) { if (trackStatistics.totalDistance().greaterThan(nextTotalDistance)) {
updateNextTaskDistance(); updateNextTaskDistance();
announce = true; announce = true;
@@ -137,11 +136,11 @@ public class VoiceAnnouncementManager implements SharedPreferences.OnSharedPrefe
} }
if (announce) { if (announce) {
voiceAnnouncement.speak(createAnnouncement(track, sensorDataSet)); voiceAnnouncement.speak(createAnnouncement(data));
} }
} }
private Spannable createAnnouncement(Track track, SensorDataSet sensorDataSet) { private Spannable createAnnouncement(RecordingData data) {
Distance currentIntervalDistance = PreferencesUtils.getVoiceAnnouncementDistance(); Distance currentIntervalDistance = PreferencesUtils.getVoiceAnnouncementDistance();
if (currentIntervalDistance != intervalDistance) { if (currentIntervalDistance != intervalDistance) {
intervalStatistics = new IntervalStatisticsUpdater(currentIntervalDistance); intervalStatistics = new IntervalStatisticsUpdater(currentIntervalDistance);
@@ -150,15 +149,15 @@ public class VoiceAnnouncementManager implements SharedPreferences.OnSharedPrefe
} }
//TODO Avoid reloading (some) TrackPoints just to announce the last interval. //TODO Avoid reloading (some) TrackPoints just to announce the last interval.
try (AutoCloseableIterator<TrackPoint> trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(track.getId(), startTrackPointId)) { try (AutoCloseableIterator<TrackPoint> trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(data.track().getId(), startTrackPointId)) {
startTrackPointId = intervalStatistics.addTrackPoints(trackPointIterator); startTrackPointId = intervalStatistics.addTrackPoints(trackPointIterator);
Statistics lastInterval = intervalStatistics.getLastInterval(); Statistics lastInterval = intervalStatistics.getLastInterval();
SensorStatistics sensorStatistics = null; SensorStatistics sensorStatistics = null;
if (track.getId() != null) { if (data.track().getId() != null) {
sensorStatistics = contentProviderUtils.getSensorStats(track.getId()); sensorStatistics = contentProviderUtils.getSensorStats(data.track().getId());
} }
return VoiceAnnouncementUtils.createStatistics(context, track, sensorDataSet, PreferencesUtils.getUnitSystem(), PreferencesUtils.isReportSpeed(track), lastInterval, sensorStatistics); return VoiceAnnouncementUtils.createStatistics(context, data.track(), data.sensorDataSet(), PreferencesUtils.getUnitSystem(), PreferencesUtils.isReportSpeed(data.track()), lastInterval, sensorStatistics);
} }
} }
@@ -11,6 +11,7 @@ import java.util.stream.Collectors;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
//TODO Migrate to DataStore.
public class RecordingLayoutIO { public class RecordingLayoutIO {
private static final String TAG = RecordingLayout.class.getSimpleName(); private static final String TAG = RecordingLayout.class.getSimpleName();