forcing a mark fix into the track for RaceLogTracking if it is the first or replaces an existing at the same time point

Change-Id: I352c05808e3dad0988a4507f3f13a4652ddc0b71
This commit is contained in:
Axel Uhl
2016-04-15 22:16:53 +02:00
parent 51cbb8ba64
commit 4286c9a924
@@ -532,7 +532,15 @@ public class RaceLogRaceTracker implements RaceTracker, GPSFixReceivedListener {
for (DeviceMapping<Mark> mapping : markMappingsByDevices.get(device)) {
Mark mark = mapping.getMappedTo();
if (mapping.getTimeRange().includes(timePoint)) {
trackedRace.recordFix(mark, fix);
final DynamicGPSFixTrack<Mark, GPSFix> markTrack = trackedRace.getOrCreateTrack(mark);
final GPSFix firstFixAtOrAfter;
if (Util.isEmpty(markTrack.getRawFixes()) ||
(firstFixAtOrAfter=markTrack.getFirstFixAtOrAfter(timePoint)) != null &&
firstFixAtOrAfter.getTimePoint().equals(timePoint)) {
trackedRace.recordFix(mark, fix, /* only when in tracking interval */ false); // force fix into track
} else {
trackedRace.recordFix(mark, fix);
}
}
}
}