TrackPoint: moved methods into class.

This commit is contained in:
Dennis Guse
2021-02-27 21:39:59 +01:00
parent 784942ffd2
commit 844c6e9609
5 changed files with 43 additions and 22 deletions
@@ -0,0 +1,28 @@
package de.dennisguse.opentracks.content.data;
import org.junit.Test;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class TrackPointTest {
@Test
public void isRecent_true() {
TrackPoint tp = new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL);
tp.setTime(Instant.now());
assertTrue(tp.isRecent());
}
@Test
public void isRecent_false() {
TrackPoint tp = new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL);
tp.setTime(Instant.now().minus(2, ChronoUnit.MINUTES));
assertFalse(tp.isRecent());
}
}
@@ -21,6 +21,7 @@ import android.os.Parcel;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.time.Duration;
import java.time.Instant;
import java.util.Objects;
@@ -42,6 +43,8 @@ import java.util.Objects;
*/
public class TrackPoint {
private static final Duration MAX_LOCATION_AGE = Duration.ofMinutes(1);
private TrackPoint.Id id;
private Instant time;
@@ -246,6 +249,12 @@ public class TrackPoint {
this.time = time;
}
public boolean isRecent() {
return Instant.now()
.isBefore(time.plus(MAX_LOCATION_AGE));
}
public boolean hasAltitude() {
return altitude_m != null;
}
@@ -15,7 +15,7 @@ public class SensorData<T> {
private final String sensorAddress;
private final String sensorName;
private final Instant timestamp_ms;
private final Instant time;
SensorData(String sensorAddress) {
this(sensorAddress, null);
@@ -26,10 +26,10 @@ public class SensorData<T> {
}
@VisibleForTesting
SensorData(String sensorAddress, String sensorName, Instant timestamp_ms) {
SensorData(String sensorAddress, String sensorName, Instant time) {
this.sensorAddress = sensorAddress;
this.sensorName = sensorName;
this.timestamp_ms = timestamp_ms;
this.time = time;
}
@NonNull
@@ -58,6 +58,7 @@ public class SensorData<T> {
* Is the data recent considering the current time.
*/
public boolean isRecent() {
return Instant.now().isBefore(timestamp_ms.plus(BluetoothRemoteSensorManager.MAX_SENSOR_DATE_SET_AGE_MS));
return Instant.now()
.isBefore(time.plus(BluetoothRemoteSensorManager.MAX_SENSOR_DATE_SET_AGE_MS));
}
}
@@ -32,7 +32,6 @@ import de.dennisguse.opentracks.databinding.StatisticsRecordingBinding;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.services.TrackRecordingServiceInterface;
import de.dennisguse.opentracks.stats.TrackStatistics;
import de.dennisguse.opentracks.util.LocationUtils;
import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.util.TrackIconUtils;
@@ -193,9 +192,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
TrackPoint trackPoint = lastTrackPoint; //NOTE: There seems to be a race condition; just fix the symptom for now.
if (trackPoint != null && trackPoint.hasLocation()) {
boolean hasFix = !LocationUtils.isTrackPointOld(trackPoint);
if (!hasFix) {
if (!trackPoint.isRecent()) {
lastTrackPoint = null;
}
}
@@ -17,11 +17,6 @@ package de.dennisguse.opentracks.util;
import android.location.Location;
import java.time.Duration;
import java.time.Instant;
import de.dennisguse.opentracks.content.data.TrackPoint;
/**
* Utility class for decimating tracks at a given level of precision.
*
@@ -31,8 +26,6 @@ public class LocationUtils {
private static final String TAG = LocationUtils.class.getSimpleName();
private static final Duration MAX_LOCATION_AGE = Duration.ofMinutes(1);
private LocationUtils() {
}
@@ -47,11 +40,4 @@ public class LocationUtils {
&& Math.abs(location.getLatitude()) <= 90
&& Math.abs(location.getLongitude()) <= 180;
}
public static boolean isTrackPointOld(TrackPoint trackPoint) {
Instant now = Instant.now();
return !(Duration.between(trackPoint.getTime(), now)
.minus(MAX_LOCATION_AGE)
.isNegative());
}
}