forked from upstream-mirrors/OpenTracks
TrackDataListener now passes most recent TrackPoint to onNewTrackPointsDone().
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user