diff --git a/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java b/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java index f9ad816e6..7c95045cd 100644 --- a/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java +++ b/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java @@ -23,12 +23,13 @@ import android.speech.tts.TextToSpeech; import android.speech.tts.UtteranceProgressListener; import android.util.Log; -import java.util.List; +import java.util.ArrayList; import java.util.Locale; import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.provider.ContentProviderUtils; +import de.dennisguse.opentracks.content.provider.TrackPointIterator; import de.dennisguse.opentracks.services.TrackRecordingService; import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.util.AnnouncementUtils; @@ -172,8 +173,13 @@ public class AnnouncementPeriodicTask implements PeriodicTask { Track track = contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(sharedPreferences, context)); String category = track != null ? track.getCategory() : ""; - //TODO Querying all TrackPoints all the time is inefficient; use TrackDataHub - List trackPoints = contentProviderUtils.getTrackPoints(track.getId()); + //TODO Querying all TrackPoints all the time is inefficient; use TrackDataHub or something else. + TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(track.getId(), null); + ArrayList trackPoints = new ArrayList<>(); + while (trackPointIterator.hasNext()) { + trackPoints.add(trackPointIterator.next()); + } + boolean isMetricUnits = PreferencesUtils.isMetricUnits(sharedPreferences, context); boolean isReportSpeed = PreferencesUtils.isReportSpeed(sharedPreferences, context, category);