mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-12 05:43:07 +02:00
+1
-16
@@ -32,7 +32,6 @@ import de.dennisguse.opentracks.content.data.Distance;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
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;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
@@ -130,21 +129,7 @@ public class AnnouncementPeriodicTask implements PeriodicTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(@NonNull TrackRecordingService trackRecordingService) {
|
||||
announce(trackRecordingService.getRecordingTrackId(), trackRecordingService.getTrackStatistics());
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs this task.
|
||||
*
|
||||
* @param trackStatistics the track statistics
|
||||
*/
|
||||
private void announce(Track.Id trackId, TrackStatistics trackStatistics) {
|
||||
if (trackStatistics == null) {
|
||||
Log.e(TAG, "TrackStatistics is null.");
|
||||
return;
|
||||
}
|
||||
|
||||
public void run(@NonNull Track.Id trackId, @NonNull TrackStatistics trackStatistics) {
|
||||
synchronized (this) {
|
||||
if (!ttsReady) {
|
||||
ttsReady = ttsInitStatus == TextToSpeech.SUCCESS;
|
||||
|
||||
@@ -18,7 +18,8 @@ package de.dennisguse.opentracks.services.tasks;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import de.dennisguse.opentracks.services.TrackRecordingService;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
|
||||
/**
|
||||
* This is interface for a task that will be executed on some schedule.
|
||||
@@ -34,12 +35,9 @@ public interface PeriodicTask {
|
||||
|
||||
/**
|
||||
* This method will be called periodically.
|
||||
*
|
||||
* @param trackRecordingService the track recording service
|
||||
*/
|
||||
@Deprecated
|
||||
//TODO Pass actual data instead of TrackRecordingService
|
||||
void run(@NonNull TrackRecordingService trackRecordingService);
|
||||
void run(@NonNull Track.Id trackId, @NonNull TrackStatistics trackStatistics);
|
||||
|
||||
/**
|
||||
* Shuts down this task and clean up resources.
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.time.Duration;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Distance;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.services.TrackRecordingService;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
|
||||
@@ -55,6 +56,7 @@ public class PeriodicTaskExecutor {
|
||||
|
||||
private boolean metricUnits;
|
||||
|
||||
private TrackStatistics trackStatistics;
|
||||
private Distance nextTaskDistance = Distance.of(Double.MAX_VALUE);
|
||||
|
||||
public PeriodicTaskExecutor(@NonNull TrackRecordingService trackRecordingService, PeriodicTaskFactory periodicTaskFactory) {
|
||||
@@ -84,12 +86,6 @@ public class PeriodicTaskExecutor {
|
||||
}
|
||||
|
||||
periodicTask = periodicTaskFactory.create(trackRecordingService);
|
||||
|
||||
// Returning null is ok
|
||||
if (periodicTask == null) {
|
||||
Log.d(TAG, "Periodic task is null.");
|
||||
return;
|
||||
}
|
||||
periodicTask.start();
|
||||
|
||||
if (isTimeFrequency()) {
|
||||
@@ -120,18 +116,14 @@ public class PeriodicTaskExecutor {
|
||||
/**
|
||||
* Updates the executor.
|
||||
*/
|
||||
public void update() {
|
||||
public void update(@NonNull Track.Id trackId, @NonNull TrackStatistics trackStatistics) {
|
||||
if (!isDistanceFrequency() || periodicTask == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
TrackStatistics trackStatistics = trackRecordingService.getTrackStatistics();
|
||||
if (trackStatistics == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (trackStatistics.getTotalDistance().greaterThan(nextTaskDistance)) {
|
||||
periodicTask.run(trackRecordingService);
|
||||
periodicTask.run(trackId, trackStatistics);
|
||||
this.trackStatistics = trackStatistics;
|
||||
updateNextTaskDistance();
|
||||
}
|
||||
}
|
||||
@@ -157,7 +149,6 @@ public class PeriodicTaskExecutor {
|
||||
return;
|
||||
}
|
||||
|
||||
TrackStatistics trackStatistics = trackRecordingService.getTrackStatistics();
|
||||
if (trackStatistics == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import de.dennisguse.opentracks.services.TrackRecordingService;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
|
||||
/**
|
||||
* This class will periodically perform a task.
|
||||
@@ -50,23 +49,18 @@ class TimerTaskExecutor {
|
||||
return;
|
||||
}
|
||||
|
||||
TrackStatistics trackStatistics = trackRecordingService.getTrackStatistics();
|
||||
if (trackStatistics == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
shutdown();
|
||||
periodicTask.start();
|
||||
timerTask = new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
periodicTask.run(trackRecordingService);
|
||||
trackRecordingService.run(periodicTask);
|
||||
}
|
||||
};
|
||||
timer = new Timer(TimerTaskExecutor.class.getSimpleName());
|
||||
|
||||
//TODO Simplify: far too complicated for it's purpose
|
||||
long next = System.currentTimeMillis() + interval.toMillis() - (trackStatistics.getTotalTime().toMillis() % interval.toMillis());
|
||||
long next = System.currentTimeMillis() + interval.toMillis() - (trackRecordingService.getTotalTime().toMillis() % interval.toMillis());
|
||||
timer.scheduleAtFixedRate(timerTask, new Date(next), interval.toMillis());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user