forked from upstream-mirrors/OpenTracks
While recording: UI updates altitude, speed, and bearing to most recently received value.
Fixes #866.
This commit is contained in:
@@ -134,16 +134,21 @@ public class HandlerServer {
|
|||||||
return segmentEnd;
|
return segmentEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO get lastTrackPoint from LocationHandler
|
public Pair<TrackPoint, SensorDataSet> createCurrentTrackPoint(@Nullable TrackPoint lastValidTrackPoint) {
|
||||||
public Pair<TrackPoint, SensorDataSet> createCurrentTrackPoint(@Nullable TrackPoint lastTrackPoint) {
|
|
||||||
TrackPoint currentTrackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, createNow());
|
TrackPoint currentTrackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, createNow());
|
||||||
|
TrackPoint lastTrackPoint = locationHandler.getLastTrackPoint();
|
||||||
|
|
||||||
if (lastTrackPoint != null && lastTrackPoint.hasLocation()) {
|
if (lastTrackPoint != null && lastTrackPoint.hasLocation()) {
|
||||||
//TODO Should happen in TrackPoint? via constructor
|
|
||||||
currentTrackPoint.setSpeed(lastTrackPoint.getSpeed());
|
currentTrackPoint.setSpeed(lastTrackPoint.getSpeed());
|
||||||
currentTrackPoint.setAltitude(lastTrackPoint.getAltitude());
|
currentTrackPoint.setAltitude(lastTrackPoint.getAltitude());
|
||||||
currentTrackPoint.setLongitude(lastTrackPoint.getLongitude());
|
if (lastTrackPoint.hasBearing()) {
|
||||||
currentTrackPoint.setLatitude(lastTrackPoint.getLatitude());
|
currentTrackPoint.setBearing(lastTrackPoint.getBearing());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (lastValidTrackPoint != null && lastValidTrackPoint.hasLocation()) {
|
||||||
|
//We are taking the coordinates from the last stored TrackPoint, so the distance is monotonously increasing.
|
||||||
|
currentTrackPoint.setLongitude(lastValidTrackPoint.getLongitude());
|
||||||
|
currentTrackPoint.setLatitude(lastValidTrackPoint.getLatitude());
|
||||||
}
|
}
|
||||||
SensorDataSet sensorDataSet = fill(currentTrackPoint);
|
SensorDataSet sensorDataSet = fill(currentTrackPoint);
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener {
|
|||||||
private LocationListenerPolicy locationListenerPolicy;
|
private LocationListenerPolicy locationListenerPolicy;
|
||||||
private Duration currentRecordingInterval;
|
private Duration currentRecordingInterval;
|
||||||
private Distance thresholdHorizontalAccuracy;
|
private Distance thresholdHorizontalAccuracy;
|
||||||
private TrackPoint lastValidTrackPoint;
|
private TrackPoint lastTrackPoint;
|
||||||
|
|
||||||
public LocationHandler(HandlerServer handlerServer) {
|
public LocationHandler(HandlerServer handlerServer) {
|
||||||
this.handlerServer = handlerServer;
|
this.handlerServer = handlerServer;
|
||||||
@@ -110,8 +110,8 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Duration idleTime = Duration.ofSeconds(0);
|
Duration idleTime = Duration.ofSeconds(0);
|
||||||
if (lastValidTrackPoint != null && trackPoint.getTime().isAfter(lastValidTrackPoint.getTime())) {
|
if (lastTrackPoint != null && trackPoint.getTime().isAfter(lastTrackPoint.getTime())) {
|
||||||
idleTime = Duration.between(lastValidTrackPoint.getTime(), trackPoint.getTime());
|
idleTime = Duration.between(lastTrackPoint.getTime(), trackPoint.getTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
locationListenerPolicy.updateIdleTime(idleTime);
|
locationListenerPolicy.updateIdleTime(idleTime);
|
||||||
@@ -119,7 +119,7 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener {
|
|||||||
registerLocationListener();
|
registerLocationListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
lastValidTrackPoint = trackPoint;
|
lastTrackPoint = trackPoint;
|
||||||
handlerServer.onNewTrackPoint(trackPoint, thresholdHorizontalAccuracy);
|
handlerServer.onNewTrackPoint(trackPoint, thresholdHorizontalAccuracy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,6 +155,10 @@ class LocationHandler implements LocationListener, GpsStatus.GpsStatusListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TrackPoint getLastTrackPoint() {
|
||||||
|
return lastTrackPoint;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called from {@link GpsStatus} to inform that GPS status has changed from prevStatus to currentStatus.
|
* Called from {@link GpsStatus} to inform that GPS status has changed from prevStatus to currentStatus.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user