forked from upstream-mirrors/OpenTracks
TrackRecordingManager: cleanup.
This commit is contained in:
@@ -86,18 +86,11 @@ class TrackRecordingManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void pause(TrackPointCreator trackPointCreator) {
|
void pause(TrackPointCreator trackPointCreator) {
|
||||||
if (lastTrackPoint != null) {
|
|
||||||
insertTrackPointIfNewer(trackId, lastTrackPoint);
|
|
||||||
}
|
|
||||||
insertTrackPoint(trackId, trackPointCreator.createSegmentEnd());
|
insertTrackPoint(trackId, trackPointCreator.createSegmentEnd());
|
||||||
currentSegmentHasTrackPoint = false;
|
currentSegmentHasTrackPoint = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void end(TrackPointCreator trackPointCreator) {
|
void end(TrackPointCreator trackPointCreator) {
|
||||||
if (lastTrackPoint != null) {
|
|
||||||
insertTrackPointIfNewer(trackId, lastTrackPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
TrackPoint segmentEnd = trackPointCreator.createSegmentEnd();
|
TrackPoint segmentEnd = trackPointCreator.createSegmentEnd();
|
||||||
insertTrackPoint(trackId, segmentEnd);
|
insertTrackPoint(trackId, segmentEnd);
|
||||||
|
|
||||||
@@ -156,65 +149,51 @@ class TrackRecordingManager {
|
|||||||
return new Marker.Id(ContentUris.parseId(uri));
|
return new Marker.Id(ContentUris.parseId(uri));
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean onNewTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
|
boolean onNewTrackPoint(TrackPoint trackPoint) {
|
||||||
//TODO Figure out how to avoid loading the lastValidTrackPoint from the database
|
//TODO Figure out how to avoid loading the lastValidTrackPoint from the database
|
||||||
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId);
|
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId);
|
||||||
|
|
||||||
|
|
||||||
//Storing trackPoint
|
//Storing trackPoint
|
||||||
|
|
||||||
// Always insert the first segment location
|
// Always insert the first segment location
|
||||||
if (!currentSegmentHasTrackPoint) {
|
if (!currentSegmentHasTrackPoint) {
|
||||||
insertTrackPoint(trackId, trackPoint);
|
insertTrackPoint(trackId, trackPoint);
|
||||||
currentSegmentHasTrackPoint = true;
|
currentSegmentHasTrackPoint = true;
|
||||||
lastTrackPoint = null;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastValidTrackPoint);
|
Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastValidTrackPoint);
|
||||||
if (distanceToLastTrackLocation != null) {
|
if (distanceToLastTrackLocation != null) {
|
||||||
if (distanceToLastTrackLocation.greaterThan(maxRecordingDistance)) {
|
if (distanceToLastTrackLocation.greaterThan(maxRecordingDistance)) {
|
||||||
insertTrackPointIfNewer(trackId, lastTrackPoint);
|
|
||||||
|
|
||||||
trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
|
trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC);
|
||||||
insertTrackPoint(trackId, trackPoint);
|
insertTrackPoint(trackId, trackPoint);
|
||||||
|
|
||||||
isIdle = false;
|
isIdle = false;
|
||||||
lastTrackPoint = null;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trackPoint.hasSensorData() || distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval)) {
|
if (trackPoint.hasSensorData() || distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval)) {
|
||||||
insertTrackPointIfNewer(trackId, lastTrackPoint);
|
|
||||||
|
|
||||||
insertTrackPoint(trackId, trackPoint);
|
insertTrackPoint(trackId, trackPoint);
|
||||||
|
|
||||||
isIdle = false;
|
isIdle = false;
|
||||||
lastTrackPoint = null;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isIdle && !trackPoint.isMoving()) {
|
if (!isIdle && !trackPoint.isMoving()) {
|
||||||
insertTrackPointIfNewer(trackId, lastTrackPoint);
|
|
||||||
|
|
||||||
insertTrackPoint(trackId, trackPoint);
|
insertTrackPoint(trackId, trackPoint);
|
||||||
|
|
||||||
isIdle = true;
|
isIdle = true;
|
||||||
lastTrackPoint = null;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isIdle && trackPoint.isMoving()) {
|
if (isIdle && trackPoint.isMoving()) {
|
||||||
insertTrackPointIfNewer(trackId, lastTrackPoint);
|
|
||||||
|
|
||||||
insertTrackPoint(trackId, trackPoint);
|
insertTrackPoint(trackId, trackPoint);
|
||||||
|
|
||||||
isIdle = false;
|
isIdle = false;
|
||||||
lastTrackPoint = null;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -253,23 +232,22 @@ class TrackRecordingManager {
|
|||||||
return contentProviderUtils.getLastValidTrackPoint(trackId);
|
return contentProviderUtils.getLastValidTrackPoint(trackId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private void insertTrackPoint(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) {
|
||||||
* Inserts a trackPoint if this trackPoint is different than lastValidTrackPoint.
|
if (lastTrackPoint != null) {
|
||||||
*/
|
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId);
|
||||||
private void insertTrackPointIfNewer(@NonNull Track.Id trackId, @Nullable TrackPoint trackPoint) {
|
if (lastValidTrackPoint != null && lastTrackPoint.getTime().equals(lastValidTrackPoint.getTime())) {
|
||||||
if (trackPoint == null) return;
|
// Do not insert if inserted already
|
||||||
|
Log.w(TAG, "Ignore insertTrackPoint. trackPoint time same as last valid trackId point time.");
|
||||||
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId);
|
} else {
|
||||||
if (lastValidTrackPoint != null && trackPoint.getTime().equals(lastValidTrackPoint.getTime())) {
|
insertTrackPointHelper(trackId, lastTrackPoint);
|
||||||
// Do not insert if inserted already
|
}
|
||||||
Log.w(TAG, "Ignore insertTrackPoint. trackPoint time same as last valid trackId point time.");
|
lastTrackPoint = null;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
insertTrackPoint(trackId, trackPoint);
|
insertTrackPointHelper(trackId, trackPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertTrackPoint(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) {
|
private void insertTrackPointHelper(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) {
|
||||||
try {
|
try {
|
||||||
contentProviderUtils.insertTrackPoint(trackPoint, trackId);
|
contentProviderUtils.insertTrackPoint(trackPoint, trackId);
|
||||||
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
|
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
|
|||||||
}
|
}
|
||||||
|
|
||||||
notificationManager.updateTrackPoint(this, trackRecordingManager.getTrackStatistics(), trackPoint, thresholdHorizontalAccuracy);
|
notificationManager.updateTrackPoint(this, trackRecordingManager.getTrackStatistics(), trackPoint, thresholdHorizontalAccuracy);
|
||||||
return trackRecordingManager.onNewTrackPoint(trackPoint, thresholdHorizontalAccuracy);
|
return trackRecordingManager.onNewTrackPoint(trackPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user