forked from upstream-mirrors/OpenTracks
Refactoring: move TrackPointDataSet directly into TrackPoint.
This commit is contained in:
@@ -19,7 +19,6 @@ package de.dennisguse.opentracks;
|
|||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Commons utilities for creating stubs of track, location.
|
* Commons utilities for creating stubs of track, location.
|
||||||
@@ -63,6 +62,6 @@ public class TrackStubUtils {
|
|||||||
location.setTime(INITIAL_TIME);
|
location.setTime(INITIAL_TIME);
|
||||||
location.setBearing(INITIAL_BEARING);
|
location.setBearing(INITIAL_BEARING);
|
||||||
|
|
||||||
return new TrackPoint(location, new TrackPointSensorDataSet());
|
return new TrackPoint(location);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+53
-31
@@ -514,7 +514,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method {@link ContentProviderUtils#bulkInsertTrackPoint(TrackPoint[], int, long)}.
|
* Tests the method {@link ContentProviderUtils#bulkInsertTrackPoint(TrackPoint[], long)}.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testBulkInsertTrackPoint() {
|
public void testBulkInsertTrackPoint() {
|
||||||
@@ -533,44 +533,44 @@ public class CustomContentProviderUtilsTest {
|
|||||||
/**
|
/**
|
||||||
* Tests the method {@link ContentProviderUtils#createTrackPoint(Cursor)}.
|
* Tests the method {@link ContentProviderUtils#createTrackPoint(Cursor)}.
|
||||||
*/
|
*/
|
||||||
|
//TODO incomplete
|
||||||
@Test
|
@Test
|
||||||
public void testCreateTrackPoint() {
|
public void testCreateTrackPoint() {
|
||||||
// Set index.
|
// given
|
||||||
int index = 1;
|
when(cursorMock.getColumnIndex(TrackPointsColumns._ID)).thenReturn(1);
|
||||||
when(cursorMock.getColumnIndex(TrackPointsColumns._ID)).thenReturn(index++);
|
|
||||||
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE)).thenReturn(index++);
|
|
||||||
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE)).thenReturn(index++);
|
|
||||||
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.TIME)).thenReturn(index++);
|
|
||||||
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.SPEED)).thenReturn(index++);
|
|
||||||
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE)).thenReturn(index++);
|
|
||||||
|
|
||||||
// Set return value of isNull().
|
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE)).thenReturn(2);
|
||||||
index = 2;
|
when(cursorMock.isNull(2)).thenReturn(false);
|
||||||
when(cursorMock.isNull(index++)).thenReturn(false);
|
|
||||||
when(cursorMock.isNull(index++)).thenReturn(false);
|
|
||||||
when(cursorMock.isNull(index++)).thenReturn(false);
|
|
||||||
when(cursorMock.isNull(index++)).thenReturn(false);
|
|
||||||
when(cursorMock.isNull(index++)).thenReturn(false);
|
|
||||||
|
|
||||||
// Set return value of getInt().
|
|
||||||
index = 2;
|
|
||||||
int longitude = 11;
|
int longitude = 11;
|
||||||
when(cursorMock.getInt(index++)).thenReturn(longitude * 1000000);
|
when(cursorMock.getInt(2)).thenReturn(longitude * 1000000);
|
||||||
|
|
||||||
|
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE)).thenReturn(3);
|
||||||
|
when(cursorMock.isNull(3)).thenReturn(false);
|
||||||
int latitude = 22;
|
int latitude = 22;
|
||||||
when(cursorMock.getInt(index++)).thenReturn(latitude * 1000000);
|
when(cursorMock.getInt(3)).thenReturn(latitude * 1000000);
|
||||||
|
|
||||||
|
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.TIME)).thenReturn(4);
|
||||||
|
when(cursorMock.isNull(4)).thenReturn(false);
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
when(cursorMock.getLong(index++)).thenReturn(time);
|
when(cursorMock.getLong(4)).thenReturn(time);
|
||||||
|
|
||||||
|
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.SPEED)).thenReturn(5);
|
||||||
|
when(cursorMock.isNull(5)).thenReturn(false);
|
||||||
float speed = 2.2f;
|
float speed = 2.2f;
|
||||||
when(cursorMock.getFloat(index++)).thenReturn(speed);
|
when(cursorMock.getFloat(5)).thenReturn(speed);
|
||||||
|
|
||||||
byte[] sensor = "Sensor state".getBytes();
|
when(cursorMock.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE)).thenReturn(6);
|
||||||
when(cursorMock.getBlob(index++)).thenReturn(sensor);
|
when(cursorMock.isNull(6)).thenReturn(false);
|
||||||
|
|
||||||
TrackPoint location = contentProviderUtils.createTrackPoint(cursorMock);
|
// when
|
||||||
Assert.assertEquals(longitude, location.getLongitude(), 0.01);
|
TrackPoint trackPoint = contentProviderUtils.createTrackPoint(cursorMock);
|
||||||
Assert.assertEquals(latitude, location.getLatitude(), 0.01);
|
|
||||||
Assert.assertEquals(time, location.getTime(), 0.01);
|
// then
|
||||||
Assert.assertEquals(speed, location.getSpeed(), 0.01);
|
Assert.assertEquals(longitude, trackPoint.getLongitude(), 0.01);
|
||||||
|
Assert.assertEquals(latitude, trackPoint.getLatitude(), 0.01);
|
||||||
|
Assert.assertEquals(time, trackPoint.getTime(), 0.01);
|
||||||
|
Assert.assertEquals(speed, trackPoint.getSpeed(), 0.01);
|
||||||
|
Assert.assertFalse(trackPoint.hasHeartRate());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -584,7 +584,29 @@ public class CustomContentProviderUtilsTest {
|
|||||||
Track track = TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
Track track = TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||||
|
|
||||||
contentProviderUtils.insertTrackPoint(TestDataUtil.createTrackPoint(22), trackId);
|
contentProviderUtils.insertTrackPoint(TestDataUtil.createTrackPoint(22), trackId);
|
||||||
Assert.assertEquals(11, contentProviderUtils.getTrackPointCursor(trackId, -1L, 1000, false).getCount());
|
Assert.assertEquals(11, contentProviderUtils.getTrackPoints(trackId).size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInsertAndLoadTrackPoint() {
|
||||||
|
// given
|
||||||
|
long trackId = System.currentTimeMillis();
|
||||||
|
Track track = TestDataUtil.createTrackAndInsert(contentProviderUtils, trackId, 10);
|
||||||
|
|
||||||
|
TrackPoint trackPoint = TestDataUtil.createTrackPoint(5);
|
||||||
|
trackPoint.setHeartRate_bpm(1F);
|
||||||
|
trackPoint.setCyclingCadence_rpm(2F);
|
||||||
|
trackPoint.setPower(3F);
|
||||||
|
|
||||||
|
// when
|
||||||
|
contentProviderUtils.insertTrackPoint(trackPoint, trackId);
|
||||||
|
|
||||||
|
// then
|
||||||
|
List<TrackPoint> trackPoints = contentProviderUtils.getTrackPoints(trackId);
|
||||||
|
Assert.assertTrue(trackPoints.get(10).hasHeartRate());
|
||||||
|
Assert.assertEquals(trackPoint.getHeartRate_bpm(), trackPoints.get(10).getHeartRate_bpm(), 0.01);
|
||||||
|
Assert.assertEquals(trackPoint.getCyclingCadence_rpm(), trackPoints.get(10).getCyclingCadence_rpm(), 0.01);
|
||||||
|
Assert.assertEquals(trackPoint.getPower(), trackPoints.get(10).getPower(), 0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import de.dennisguse.opentracks.TrackStubUtils;
|
|||||||
import de.dennisguse.opentracks.chart.ChartPoint;
|
import de.dennisguse.opentracks.chart.ChartPoint;
|
||||||
import de.dennisguse.opentracks.chart.ChartView;
|
import de.dennisguse.opentracks.chart.ChartView;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
import de.dennisguse.opentracks.util.UnitConversions;
|
import de.dennisguse.opentracks.util.UnitConversions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,20 +71,13 @@ public class ChartFragmentTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testCreatePendingPoint_sensorIncorrect() {
|
public void testCreatePendingPoint_sensorIncorrect() {
|
||||||
|
// given
|
||||||
TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint();
|
TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint();
|
||||||
|
|
||||||
// No input.
|
// when
|
||||||
ChartPoint point = chartFragment.createPendingPoint(trackPoint);
|
ChartPoint point = chartFragment.createPendingPoint(trackPoint);
|
||||||
Assert.assertEquals(Float.NaN, point.getHeartRate(), 0.01);
|
|
||||||
Assert.assertEquals(Float.NaN, point.getCadence(), 0.01);
|
|
||||||
Assert.assertEquals(Float.NaN, point.getPower(), 0.01);
|
|
||||||
|
|
||||||
// Input incorrect state.
|
// then
|
||||||
// Creates SensorData.
|
|
||||||
TrackPointSensorDataSet sensorDataSet = new TrackPointSensorDataSet();
|
|
||||||
trackPoint.setSensorDataSet(sensorDataSet);
|
|
||||||
// Test.
|
|
||||||
point = chartFragment.createPendingPoint(trackPoint);
|
|
||||||
Assert.assertEquals(Float.NaN, point.getHeartRate(), 0.01);
|
Assert.assertEquals(Float.NaN, point.getHeartRate(), 0.01);
|
||||||
Assert.assertEquals(Float.NaN, point.getCadence(), 0.01);
|
Assert.assertEquals(Float.NaN, point.getCadence(), 0.01);
|
||||||
Assert.assertEquals(Float.NaN, point.getPower(), 0.01);
|
Assert.assertEquals(Float.NaN, point.getPower(), 0.01);
|
||||||
@@ -96,23 +88,16 @@ public class ChartFragmentTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testCreatePendingPoint_sensorCorrect() {
|
public void testCreatePendingPoint_sensorCorrect() {
|
||||||
|
// given
|
||||||
TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint();
|
TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint();
|
||||||
// No input.
|
trackPoint.setHeartRate_bpm(100f);
|
||||||
|
trackPoint.setCyclingCadence_rpm(101f);
|
||||||
|
trackPoint.setPower(102f);
|
||||||
|
|
||||||
|
// when
|
||||||
ChartPoint point = chartFragment.createPendingPoint(trackPoint);
|
ChartPoint point = chartFragment.createPendingPoint(trackPoint);
|
||||||
Assert.assertEquals(Float.NaN, point.getHeartRate(), 0.01);
|
|
||||||
Assert.assertEquals(Float.NaN, point.getCadence(), 0.01);
|
|
||||||
Assert.assertEquals(Float.NaN, point.getPower(), 0.01);
|
|
||||||
|
|
||||||
// Creates SensorData.
|
// then
|
||||||
TrackPointSensorDataSet sensorDataSet = new TrackPointSensorDataSet();
|
|
||||||
sensorDataSet.setHeartRate_bpm(100f);
|
|
||||||
sensorDataSet.setCyclingCadence(101);
|
|
||||||
sensorDataSet.setPower(102f);
|
|
||||||
|
|
||||||
// Creates SensorDataSet.
|
|
||||||
trackPoint.setSensorDataSet(sensorDataSet);
|
|
||||||
// Test.
|
|
||||||
point = chartFragment.createPendingPoint(trackPoint);
|
|
||||||
Assert.assertEquals(100.0, point.getHeartRate(), 0.01);
|
Assert.assertEquals(100.0, point.getHeartRate(), 0.01);
|
||||||
Assert.assertEquals(101.0, point.getCadence(), 0.01);
|
Assert.assertEquals(101.0, point.getCadence(), 0.01);
|
||||||
Assert.assertEquals(102.0, point.getPower(), 0.01);
|
Assert.assertEquals(102.0, point.getPower(), 0.01);
|
||||||
|
|||||||
+2
-2
@@ -331,7 +331,7 @@ public class TrackRecordingServiceTest {
|
|||||||
addTrack(dummyTrack, isRecording);
|
addTrack(dummyTrack, isRecording);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void insertLocation(TrackRecordingServiceInterface trackRecordingService) throws InterruptedException {
|
private static void insertLocation(TrackRecordingServiceInterface trackRecordingService) throws InterruptedException {
|
||||||
insertLocation(trackRecordingService, 45.0f, 35f, 5, 10, System.currentTimeMillis());
|
insertLocation(trackRecordingService, 45.0f, 35f, 5, 10, System.currentTimeMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,7 +342,7 @@ public class TrackRecordingServiceTest {
|
|||||||
/**
|
/**
|
||||||
* Inserts a location and waits for 200ms.
|
* Inserts a location and waits for 200ms.
|
||||||
*/
|
*/
|
||||||
static void insertLocation(TrackRecordingServiceInterface trackRecordingService, double latitude, double longitude, float accuracy, long speed, long time) throws InterruptedException {
|
private static void insertLocation(TrackRecordingServiceInterface trackRecordingService, double latitude, double longitude, float accuracy, long speed, long time) throws InterruptedException {
|
||||||
Location location = new Location("gps");
|
Location location = new Location("gps");
|
||||||
location.setLongitude(longitude);
|
location.setLongitude(longitude);
|
||||||
location.setLatitude(latitude);
|
location.setLatitude(latitude);
|
||||||
|
|||||||
+4
-1
@@ -27,6 +27,7 @@ import de.dennisguse.opentracks.content.data.TrackPoint;
|
|||||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
||||||
|
import de.dennisguse.opentracks.content.sensor.SensorDataHeartRate;
|
||||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||||
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
import de.dennisguse.opentracks.services.sensors.BluetoothRemoteSensorManager;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||||
@@ -245,7 +246,9 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SensorDataSet getSensorData() {
|
public SensorDataSet getSensorData() {
|
||||||
return new SensorDataSet();
|
SensorDataSet sensorDataSet = new SensorDataSet();
|
||||||
|
sensorDataSet.set(new SensorDataHeartRate("sensorName", "sensorAddress", 5f));
|
||||||
|
return sensorDataSet;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package de.dennisguse.opentracks.chart;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||||
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
|
||||||
import de.dennisguse.opentracks.util.UnitConversions;
|
import de.dennisguse.opentracks.util.UnitConversions;
|
||||||
@@ -25,7 +25,7 @@ public class ChartPoint {
|
|||||||
this.elevation = elevation;
|
this.elevation = elevation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChartPoint(@NonNull TrackStatisticsUpdater trackStatisticsUpdater, TrackPointSensorDataSet sensorDataSet, boolean chartByDistance, boolean metricUnits) {
|
public ChartPoint(@NonNull TrackStatisticsUpdater trackStatisticsUpdater, TrackPoint trackPoint, boolean chartByDistance, boolean metricUnits) {
|
||||||
TrackStatistics trackStatistics = trackStatisticsUpdater.getTrackStatistics();
|
TrackStatistics trackStatistics = trackStatisticsUpdater.getTrackStatistics();
|
||||||
|
|
||||||
if (chartByDistance) {
|
if (chartByDistance) {
|
||||||
@@ -48,15 +48,15 @@ public class ChartPoint {
|
|||||||
speed *= UnitConversions.KM_TO_MI;
|
speed *= UnitConversions.KM_TO_MI;
|
||||||
}
|
}
|
||||||
pace = speed == 0 ? 0.0 : 60.0 / speed;
|
pace = speed == 0 ? 0.0 : 60.0 / speed;
|
||||||
if (sensorDataSet != null) {
|
if (trackPoint != null) {
|
||||||
if (sensorDataSet.hasHeartRate()) {
|
if (trackPoint.hasHeartRate()) {
|
||||||
heartRate = sensorDataSet.getHeartRate_bpm();
|
heartRate = trackPoint.getHeartRate_bpm();
|
||||||
}
|
}
|
||||||
if (sensorDataSet.hasCyclingCadence()) {
|
if (trackPoint.hasCyclingCadence()) {
|
||||||
cadence = sensorDataSet.getCyclingCadence_rpm();
|
cadence = trackPoint.getCyclingCadence_rpm();
|
||||||
}
|
}
|
||||||
if (sensorDataSet.hasPower()) {
|
if (trackPoint.hasPower()) {
|
||||||
power = sensorDataSet.getPower();
|
power = trackPoint.getPower();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ public class TrackPoint {
|
|||||||
|
|
||||||
private final Location location;
|
private final Location location;
|
||||||
|
|
||||||
|
private Float heartRate_bpm = null;
|
||||||
|
private Float cyclingCadence_rpm = null;
|
||||||
|
private Float power = null;
|
||||||
|
|
||||||
public TrackPoint() {
|
public TrackPoint() {
|
||||||
this.location = new Location("");
|
this.location = new Location("");
|
||||||
}
|
}
|
||||||
@@ -37,17 +41,13 @@ public class TrackPoint {
|
|||||||
this.location = location;
|
this.location = location;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TrackPoint(@NonNull Location location, TrackPointSensorDataSet sensorDataSet) {
|
public TrackPoint(@NonNull TrackPoint trackPoint) {
|
||||||
this.location = location;
|
|
||||||
this.sensorDataSet = sensorDataSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TrackPoint(@NonNull TrackPoint trackPoint, TrackPointSensorDataSet sensorDataSet) {
|
|
||||||
this.location = trackPoint.getLocation();
|
this.location = trackPoint.getLocation();
|
||||||
this.sensorDataSet = sensorDataSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
private TrackPointSensorDataSet sensorDataSet = null;
|
this.heartRate_bpm = trackPoint.getHeartRate_bpm();
|
||||||
|
this.cyclingCadence_rpm = trackPoint.getCyclingCadence_rpm();
|
||||||
|
this.power = trackPoint.getPower();
|
||||||
|
}
|
||||||
|
|
||||||
public TrackPoint(double latitude, double longitude, Double altitude, long time) {
|
public TrackPoint(double latitude, double longitude, Double altitude, long time) {
|
||||||
location = new Location(LocationManager.GPS_PROVIDER);
|
location = new Location(LocationManager.GPS_PROVIDER);
|
||||||
@@ -88,14 +88,6 @@ public class TrackPoint {
|
|||||||
return location;
|
return location;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TrackPointSensorDataSet getSensorDataSet() {
|
|
||||||
return sensorDataSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSensorDataSet(TrackPointSensorDataSet sensorDataSet) {
|
|
||||||
this.sensorDataSet = sensorDataSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getLatitude() {
|
public double getLatitude() {
|
||||||
return location.getLatitude();
|
return location.getLatitude();
|
||||||
}
|
}
|
||||||
@@ -180,6 +172,47 @@ public class TrackPoint {
|
|||||||
return location.bearingTo(dest);
|
return location.bearingTo(dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sensor data
|
||||||
|
public boolean hasSensorData() {
|
||||||
|
return hasHeartRate() || hasCyclingCadence() || hasPower();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasHeartRate() {
|
||||||
|
return heartRate_bpm != null && heartRate_bpm > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getHeartRate_bpm() {
|
||||||
|
return heartRate_bpm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeartRate_bpm(Float heartRate_bpm) {
|
||||||
|
this.heartRate_bpm = heartRate_bpm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasCyclingCadence() {
|
||||||
|
return cyclingCadence_rpm != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Float getCyclingCadence_rpm() {
|
||||||
|
return cyclingCadence_rpm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCyclingCadence_rpm(Float cyclingCadence_rpm) {
|
||||||
|
this.cyclingCadence_rpm = cyclingCadence_rpm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasPower() {
|
||||||
|
return power != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Float getPower() {
|
||||||
|
return power;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPower(Float power) {
|
||||||
|
this.power = power;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|||||||
@@ -1,99 +0,0 @@
|
|||||||
package de.dennisguse.opentracks.content.data;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
//TODO Rename.
|
|
||||||
public final class TrackPointSensorDataSet {
|
|
||||||
private long time_ms;
|
|
||||||
|
|
||||||
private Float heartRate_bpm = null;
|
|
||||||
private Float cyclingCadence = null;
|
|
||||||
private Float cyclingSpeed = null;
|
|
||||||
private Float power = null;
|
|
||||||
|
|
||||||
public TrackPointSensorDataSet() {
|
|
||||||
this(System.currentTimeMillis());
|
|
||||||
}
|
|
||||||
|
|
||||||
public TrackPointSensorDataSet(long time_ms) {
|
|
||||||
this.time_ms = time_ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasHeartRate() {
|
|
||||||
return heartRate_bpm != null && heartRate_bpm > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getHeartRate_bpm() {
|
|
||||||
return heartRate_bpm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHeartRate_bpm(Float heartRate_bpm) {
|
|
||||||
this.heartRate_bpm = heartRate_bpm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasCyclingCadence() {
|
|
||||||
return cyclingCadence != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Float getCyclingCadence_rpm() {
|
|
||||||
return cyclingCadence;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCyclingCadence(Float cyclingCadence) {
|
|
||||||
this.cyclingCadence = cyclingCadence;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCyclingCadence(Integer cyclingCadence) {
|
|
||||||
this.cyclingCadence = cyclingCadence != null ? cyclingCadence.floatValue() : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasCyclingSpeed() {
|
|
||||||
return cyclingSpeed != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Float getCyclingSpeed() {
|
|
||||||
return cyclingSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCyclingSpeed(Float cyclingSpeed) {
|
|
||||||
this.cyclingSpeed = cyclingSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasPower() {
|
|
||||||
return power != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Float getPower() {
|
|
||||||
return power;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPower(Float power) {
|
|
||||||
this.power = power;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getTime() {
|
|
||||||
return time_ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTime(long time_ms) {
|
|
||||||
this.time_ms = time_ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the data recent considering the current time.
|
|
||||||
*
|
|
||||||
* @param maxAge the maximal age in milliseconds.
|
|
||||||
*/
|
|
||||||
public boolean isRecent(long maxAge) {
|
|
||||||
return time_ms + maxAge > System.currentTimeMillis();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "time=" + getTime()
|
|
||||||
+ (hasHeartRate() ? " heart=" + getHeartRate_bpm() : "")
|
|
||||||
+ (hasCyclingCadence() ? " cyclingCad=" + getCyclingCadence_rpm() : "")
|
|
||||||
+ (hasCyclingSpeed() ? " cyclingSpeed=" + getCyclingSpeed() : "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -36,7 +36,6 @@ import de.dennisguse.opentracks.android.ContentResolverWrapper;
|
|||||||
import de.dennisguse.opentracks.android.IContentResolver;
|
import de.dennisguse.opentracks.android.IContentResolver;
|
||||||
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;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||||
import de.dennisguse.opentracks.content.data.TracksColumns;
|
import de.dennisguse.opentracks.content.data.TracksColumns;
|
||||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||||
@@ -621,19 +620,16 @@ public class ContentProviderUtils {
|
|||||||
trackPoint.setBearing(cursor.getFloat(indexes.bearingIndex));
|
trackPoint.setBearing(cursor.getFloat(indexes.bearingIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
TrackPointSensorDataSet sensorDataSet = new TrackPointSensorDataSet();
|
if (!cursor.isNull(indexes.sensorHeartRateIndex)) {
|
||||||
|
trackPoint.setHeartRate_bpm(cursor.getFloat(indexes.sensorHeartRateIndex));
|
||||||
if (cursor.isNull(indexes.sensorHeartRateIndex)) {
|
|
||||||
sensorDataSet.setHeartRate_bpm(cursor.getFloat(indexes.sensorHeartRateIndex));
|
|
||||||
}
|
}
|
||||||
if (cursor.isNull(indexes.sensorCadenceIndex)) {
|
if (!cursor.isNull(indexes.sensorCadenceIndex)) {
|
||||||
sensorDataSet.setCyclingCadence(cursor.getFloat(indexes.sensorCadenceIndex));
|
trackPoint.setCyclingCadence_rpm(cursor.getFloat(indexes.sensorCadenceIndex));
|
||||||
}
|
}
|
||||||
if (cursor.isNull(indexes.sensorPowerIndex)) {
|
if (!cursor.isNull(indexes.sensorPowerIndex)) {
|
||||||
sensorDataSet.setCyclingSpeed(cursor.getFloat(indexes.sensorPowerIndex));
|
trackPoint.setPower(cursor.getFloat(indexes.sensorPowerIndex));
|
||||||
}
|
}
|
||||||
|
|
||||||
trackPoint.setSensorDataSet(sensorDataSet);
|
|
||||||
return trackPoint;
|
return trackPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -812,16 +808,14 @@ public class ContentProviderUtils {
|
|||||||
values.put(TrackPointsColumns.BEARING, trackPoint.getBearing());
|
values.put(TrackPointsColumns.BEARING, trackPoint.getBearing());
|
||||||
}
|
}
|
||||||
|
|
||||||
//SensorData
|
if (trackPoint.hasHeartRate()) {
|
||||||
TrackPointSensorDataSet sensorDataSet = trackPoint.getSensorDataSet();
|
values.put(TrackPointsColumns.SENSOR_HEARTRATE, trackPoint.getHeartRate_bpm());
|
||||||
if (sensorDataSet != null && sensorDataSet.hasHeartRate()) {
|
|
||||||
values.put(TrackPointsColumns.SENSOR_HEARTRATE, sensorDataSet.getHeartRate_bpm());
|
|
||||||
}
|
}
|
||||||
if (sensorDataSet != null && sensorDataSet.hasCyclingCadence()) {
|
if (trackPoint.hasCyclingCadence()) {
|
||||||
values.put(TrackPointsColumns.SENSOR_CADENCE, sensorDataSet.getCyclingCadence_rpm());
|
values.put(TrackPointsColumns.SENSOR_CADENCE, trackPoint.getCyclingCadence_rpm());
|
||||||
}
|
}
|
||||||
if (sensorDataSet != null && sensorDataSet.hasPower()) {
|
if (trackPoint.hasPower()) {
|
||||||
values.put(TrackPointsColumns.SENSOR_POWER, sensorDataSet.getPower());
|
values.put(TrackPointsColumns.SENSOR_POWER, trackPoint.getPower());
|
||||||
}
|
}
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
package de.dennisguse.opentracks.content.sensor;
|
package de.dennisguse.opentracks.content.sensor;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
|
||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -19,13 +18,6 @@ public final class SensorDataSet {
|
|||||||
public SensorDataSet() {
|
public SensorDataSet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
public SensorDataSet(SensorDataHeartRate heartRate, SensorDataCycling.Cadence cyclingCadence, SensorDataCycling.Speed cyclingSpeed) {
|
|
||||||
this.heartRate = heartRate;
|
|
||||||
this.cyclingCadence = cyclingCadence;
|
|
||||||
this.cyclingSpeed = cyclingSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SensorDataHeartRate getHeartRate() {
|
public SensorDataHeartRate getHeartRate() {
|
||||||
return heartRate;
|
return heartRate;
|
||||||
}
|
}
|
||||||
@@ -70,21 +62,18 @@ public final class SensorDataSet {
|
|||||||
this.cyclingSpeed = null;
|
this.cyclingSpeed = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TrackPointSensorDataSet createTrackPointSensorDataSet() {
|
public void fillTrackPoint(TrackPoint trackPoint) {
|
||||||
TrackPointSensorDataSet sensorDataSet = new TrackPointSensorDataSet();
|
|
||||||
if (heartRate != null) {
|
if (heartRate != null) {
|
||||||
sensorDataSet.setHeartRate_bpm(heartRate.getHeartRate_bpm());
|
trackPoint.setHeartRate_bpm(heartRate.getHeartRate_bpm());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cyclingCadence != null && cyclingCadence.hasCadence_rpm()) {
|
if (cyclingCadence != null && cyclingCadence.hasCadence_rpm()) {
|
||||||
sensorDataSet.setCyclingCadence(cyclingCadence.getCadence_rpm());
|
trackPoint.setCyclingCadence_rpm(cyclingCadence.getCadence_rpm());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cyclingSpeed != null && cyclingSpeed.hasSpeed()) {
|
if (cyclingSpeed != null && cyclingSpeed.hasSpeed()) {
|
||||||
sensorDataSet.setCyclingCadence(cyclingSpeed.getSpeed_ms());
|
trackPoint.setSpeed(cyclingSpeed.getSpeed_ms());
|
||||||
}
|
}
|
||||||
|
|
||||||
return sensorDataSet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
ChartPoint createPendingPoint(@NonNull TrackPoint trackPoint) {
|
ChartPoint createPendingPoint(@NonNull TrackPoint trackPoint) {
|
||||||
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
|
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
|
||||||
return new ChartPoint(trackStatisticsUpdater, trackPoint.getSensorDataSet(), chartByDistance, chartView.getMetricUnits());
|
return new ChartPoint(trackStatisticsUpdater, trackPoint, chartByDistance, chartView.getMetricUnits());
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import de.dennisguse.opentracks.content.TrackDataHub;
|
|||||||
import de.dennisguse.opentracks.content.TrackDataListener;
|
import de.dennisguse.opentracks.content.TrackDataListener;
|
||||||
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;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||||
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
import de.dennisguse.opentracks.content.sensor.SensorDataSet;
|
||||||
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
||||||
@@ -436,7 +435,7 @@ public class StatsFragment extends Fragment implements TrackDataListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tries to fetch most recent {@link TrackPointSensorDataSet} from {@link de.dennisguse.opentracks.services.TrackRecordingService}.
|
* Tries to fetch most recent {@link SensorDataSet} from {@link de.dennisguse.opentracks.services.TrackRecordingService}.
|
||||||
*/
|
*/
|
||||||
private void updateSensorDataUI() {
|
private void updateSensorDataUI() {
|
||||||
TrackRecordingServiceInterface trackRecordingService = trackRecordingServiceConnection.getServiceIfBound();
|
TrackRecordingServiceInterface trackRecordingService = trackRecordingServiceConnection.getServiceIfBound();
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import de.dennisguse.opentracks.R;
|
|||||||
import de.dennisguse.opentracks.content.DescriptionGenerator;
|
import de.dennisguse.opentracks.content.DescriptionGenerator;
|
||||||
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;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.util.FileUtils;
|
import de.dennisguse.opentracks.util.FileUtils;
|
||||||
@@ -75,7 +74,7 @@ public class KmlTrackWriter implements TrackWriter {
|
|||||||
* @param context the context
|
* @param context the context
|
||||||
* @param hasMultipleTracks should encode multiple tracks into one file?
|
* @param hasMultipleTracks should encode multiple tracks into one file?
|
||||||
* @param exportTrackDetail should detailed information about the track be exported (e.g., title, description, waypoints, timing)?
|
* @param exportTrackDetail should detailed information about the track be exported (e.g., title, description, waypoints, timing)?
|
||||||
* @param exportSensorData should {@link TrackPointSensorDataSet} be exported?
|
* @param exportSensorData should {@link TrackPointSensorDataSet} be exported?
|
||||||
* @param exportPhotos should pictures be exported (if true: exports to KMZ)?
|
* @param exportPhotos should pictures be exported (if true: exports to KMZ)?
|
||||||
*/
|
*/
|
||||||
public KmlTrackWriter(Context context, boolean hasMultipleTracks, boolean exportTrackDetail, boolean exportSensorData, boolean exportPhotos) {
|
public KmlTrackWriter(Context context, boolean hasMultipleTracks, boolean exportTrackDetail, boolean exportSensorData, boolean exportPhotos) {
|
||||||
@@ -268,17 +267,14 @@ public class KmlTrackWriter implements TrackWriter {
|
|||||||
printWriter.println("<gx:coord>" + getCoordinates(trackPoint.getLocation(), " ") + "</gx:coord>");
|
printWriter.println("<gx:coord>" + getCoordinates(trackPoint.getLocation(), " ") + "</gx:coord>");
|
||||||
|
|
||||||
if (exportSensorData) {
|
if (exportSensorData) {
|
||||||
TrackPointSensorDataSet sensorDataSet = trackPoint.getSensorDataSet();
|
if (trackPoint.hasHeartRate()) {
|
||||||
if (sensorDataSet != null) {
|
heartRateList.add(trackPoint.getHeartRate_bpm());
|
||||||
if (sensorDataSet.hasHeartRate()) {
|
}
|
||||||
heartRateList.add(sensorDataSet.getHeartRate_bpm());
|
if (trackPoint.hasCyclingCadence()) {
|
||||||
}
|
cadenceList.add(trackPoint.getCyclingCadence_rpm());
|
||||||
if (sensorDataSet.hasCyclingCadence()) {
|
}
|
||||||
cadenceList.add(sensorDataSet.getCyclingCadence_rpm());
|
if (trackPoint.hasPower()) {
|
||||||
}
|
powerList.add(trackPoint.getPower());
|
||||||
if (sensorDataSet.hasPower()) {
|
|
||||||
powerList.add(sensorDataSet.getPower());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import org.xml.sax.SAXException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.io.file.exporter.KmlTrackWriter;
|
import de.dennisguse.opentracks.io.file.exporter.KmlTrackWriter;
|
||||||
|
|
||||||
@@ -223,25 +222,16 @@ public class KmlFileTrackImporter extends AbstractFileTrackImporter {
|
|||||||
for (int i = 0; i < trackPoints.size(); i++) {
|
for (int i = 0; i < trackPoints.size(); i++) {
|
||||||
TrackPoint trackPoint = trackPoints.get(i);
|
TrackPoint trackPoint = trackPoints.get(i);
|
||||||
|
|
||||||
boolean hasSensorData = false;
|
|
||||||
TrackPointSensorDataSet sensorDataSet = new TrackPointSensorDataSet(trackPoint.getTime());
|
|
||||||
|
|
||||||
if (i < heartRateList.size()) {
|
if (i < heartRateList.size()) {
|
||||||
sensorDataSet.setHeartRate_bpm(heartRateList.get(i));
|
trackPoint.setHeartRate_bpm(heartRateList.get(i));
|
||||||
hasSensorData = true;
|
|
||||||
}
|
}
|
||||||
if (i < cadenceList.size()) {
|
if (i < cadenceList.size()) {
|
||||||
sensorDataSet.setCyclingCadence(cadenceList.get(i));
|
trackPoint.setCyclingCadence_rpm(cadenceList.get(i));
|
||||||
hasSensorData = true;
|
|
||||||
}
|
}
|
||||||
if (i < powerList.size()) {
|
if (i < powerList.size()) {
|
||||||
sensorDataSet.setPower(cadenceList.get(i));
|
trackPoint.setPower(cadenceList.get(i));
|
||||||
hasSensorData = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasSensorData) {
|
|
||||||
trackPoint.setSensorDataSet(sensorDataSet);
|
|
||||||
}
|
|
||||||
insertTrackPoint(trackPoint);
|
insertTrackPoint(trackPoint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ import de.dennisguse.opentracks.TrackDetailActivity;
|
|||||||
import de.dennisguse.opentracks.TrackListActivity;
|
import de.dennisguse.opentracks.TrackListActivity;
|
||||||
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;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPointSensorDataSet;
|
|
||||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
import de.dennisguse.opentracks.content.provider.CustomContentProvider;
|
||||||
@@ -576,7 +575,9 @@ public class TrackRecordingService extends Service {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TrackPoint trackPoint = new TrackPoint(location, getTrackPointSensorDataSet());
|
TrackPoint trackPoint = new TrackPoint(location);
|
||||||
|
fillWithSensorDataSet(trackPoint);
|
||||||
|
|
||||||
notificationManager.updateTrackPoint(this, trackPoint, recordingGpsAccuracy);
|
notificationManager.updateTrackPoint(this, trackPoint, recordingGpsAccuracy);
|
||||||
|
|
||||||
if (!TrackPointUtils.fulfillsAccuracy(trackPoint, recordingGpsAccuracy)) {
|
if (!TrackPointUtils.fulfillsAccuracy(trackPoint, recordingGpsAccuracy)) {
|
||||||
@@ -627,7 +628,7 @@ public class TrackRecordingService extends Service {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trackPoint.getSensorDataSet() != null || distanceToLastTrackLocation >= recordingDistanceInterval) {
|
if (trackPoint.hasSensorData() || distanceToLastTrackLocation >= recordingDistanceInterval) {
|
||||||
insertTrackPointIfNewer(track, lastTrackPoint);
|
insertTrackPointIfNewer(track, lastTrackPoint);
|
||||||
insertTrackPoint(track, trackPoint);
|
insertTrackPoint(track, trackPoint);
|
||||||
isIdle = false;
|
isIdle = false;
|
||||||
@@ -716,13 +717,11 @@ public class TrackRecordingService extends Service {
|
|||||||
return remoteSensorManager.getSensorData();
|
return remoteSensorManager.getSensorData();
|
||||||
}
|
}
|
||||||
|
|
||||||
TrackPointSensorDataSet getTrackPointSensorDataSet() {
|
void fillWithSensorDataSet(TrackPoint trackPoint) {
|
||||||
SensorDataSet sensorData = getSensorDataSet();
|
SensorDataSet sensorData = getSensorDataSet();
|
||||||
if (sensorData != null) {
|
if (sensorData != null) {
|
||||||
return sensorData.createTrackPointSensorDataSet();
|
sensorData.fillTrackPoint(trackPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerLocationListener() {
|
private void registerLocationListener() {
|
||||||
|
|||||||
Reference in New Issue
Block a user