TrackDataListener now passes most recent TrackPoint to onNewTrackPointsDone().

This commit is contained in:
Dennis Guse
2021-02-27 22:28:26 +01:00
parent fdf4336a9b
commit fce76230e1
5 changed files with 21 additions and 16 deletions
@@ -365,10 +365,11 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
next = new TrackPoint.Id(localLastSeenTrackPointIdId.getId() + 1); //TODO startTrackPointId + 1 is an assumption assumption; should be derived from the DB. next = new TrackPoint.Id(localLastSeenTrackPointIdId.getId() + 1); //TODO startTrackPointId + 1 is an assumption assumption; should be derived from the DB.
} }
TrackPoint trackPoint = null;
try (TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(selectedTrackId, next)) { try (TrackPointIterator trackPointIterator = contentProviderUtils.getTrackPointLocationIterator(selectedTrackId, next)) {
while (trackPointIterator.hasNext()) { while (trackPointIterator.hasNext()) {
TrackPoint trackPoint = trackPointIterator.next(); trackPoint = trackPointIterator.next();
TrackPoint.Id trackPointId = trackPoint.getId(); TrackPoint.Id trackPointId = trackPoint.getId();
// Stop if past the last wanted point // Stop if past the last wanted point
@@ -398,10 +399,13 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
} }
localNumLoadedTrackPoints++; localNumLoadedTrackPoints++;
localLastSeenTrackPointIdId = trackPointId;
} }
} }
if (trackPoint != null) {
localLastSeenTrackPointIdId = trackPoint.getId();
}
if (updateSamplingState) { if (updateSamplingState) {
numLoadedPoints = localNumLoadedTrackPoints; numLoadedPoints = localNumLoadedTrackPoints;
firstSeenTrackPointId = localFirstSeenTrackPointId; firstSeenTrackPointId = localFirstSeenTrackPointId;
@@ -409,7 +413,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
} }
for (TrackDataListener listener : sampledInListeners) { for (TrackDataListener listener : sampledInListeners) {
listener.onNewTrackPointsDone(); listener.onNewTrackPointsDone(trackPoint);
} }
} }
@@ -16,6 +16,8 @@
package de.dennisguse.opentracks.content; package de.dennisguse.opentracks.content;
import androidx.annotation.Nullable;
import de.dennisguse.opentracks.content.data.Marker; import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.Track; import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint; import de.dennisguse.opentracks.content.data.TrackPoint;
@@ -57,7 +59,7 @@ public interface TrackDataListener {
* Called when finish sending new track points. * Called when finish sending new track points.
* This gets called after every batch of calls to {@link #onSampledInTrackPoint(TrackPoint)} and {@link #onSampledOutTrackPoint(TrackPoint)}. * This gets called after every batch of calls to {@link #onSampledInTrackPoint(TrackPoint)} and {@link #onSampledOutTrackPoint(TrackPoint)}.
*/ */
void onNewTrackPointsDone(); void onNewTrackPointsDone(@Nullable TrackPoint lastTrackPoint);
/** /**
* Called to clear previously sent markers. * Called to clear previously sent markers.
@@ -240,7 +240,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
} }
@Override @Override
public void onNewTrackPointsDone() { public void onNewTrackPointsDone(TrackPoint unused) {
if (isResumed()) { if (isResumed()) {
chartView.addChartPoints(pendingPoints); chartView.addChartPoints(pendingPoints);
pendingPoints.clear(); pendingPoints.clear();
@@ -212,7 +212,7 @@ public class IntervalsFragment extends Fragment implements TrackDataListener {
} }
@Override @Override
public void onNewTrackPointsDone() { public void onNewTrackPointsDone(TrackPoint unused) {
if (isResumed()) { if (isResumed()) {
runOnUiThread(this::loadIntervals); runOnUiThread(this::loadIntervals);
} }
@@ -173,28 +173,27 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
@Override @Override
public void onSampledInTrackPoint(TrackPoint trackPoint) { public void onSampledInTrackPoint(TrackPoint trackPoint) {
lastTrackPoint = trackPoint; // We don't care.
} }
@Override @Override
public void onSampledOutTrackPoint(TrackPoint trackPoint) { public void onSampledOutTrackPoint(TrackPoint trackPoint) {
lastTrackPoint = trackPoint; // We don't care.
} }
@Override @Override
public void onNewTrackPointsDone() { public void onNewTrackPointsDone(TrackPoint newLastTrackPoint) {
if (isResumed()) { if (isResumed()) {
getActivity().runOnUiThread(() -> { getActivity().runOnUiThread(() -> {
if (isResumed()) { if (isResumed()) {
this.lastTrackPoint = newLastTrackPoint;
if (!isSelectedTrackRecording() || isSelectedTrackPaused()) { if (!isSelectedTrackRecording() || isSelectedTrackPaused()) {
lastTrackPoint = null; this.lastTrackPoint = null;
} }
TrackPoint trackPoint = lastTrackPoint; //NOTE: There seems to be a race condition; just fix the symptom for now. if (this.lastTrackPoint != null && this.lastTrackPoint.hasLocation() && !this.lastTrackPoint.isRecent()) {
if (trackPoint != null && trackPoint.hasLocation()) { this.lastTrackPoint = null;
if (!trackPoint.isRecent()) {
lastTrackPoint = null;
}
} }
setLocationValues(); setLocationValues();
} }
@@ -276,7 +275,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
if (sensorDataSet.getCyclingCadence() != null) { if (sensorDataSet.getCyclingCadence() != null) {
sensorDataList.add(new SensorDataModel(sensorDataSet.getCyclingCadence())); sensorDataList.add(new SensorDataModel(sensorDataSet.getCyclingCadence()));
} }
if(sensorDataSet.getCyclingPower() != null) { if (sensorDataSet.getCyclingPower() != null) {
sensorDataList.add(new SensorDataModel(sensorDataSet.getCyclingPower())); sensorDataList.add(new SensorDataModel(sensorDataSet.getCyclingPower()));
} }
sensorsAdapter.swapData(sensorDataList); sensorsAdapter.swapData(sensorDataList);