diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestUtils.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestUtils.java index 214f152db..07441fd9d 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestUtils.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestUtils.java @@ -30,6 +30,6 @@ public class TrackRecordingServiceTestUtils { location.setSpeed(speed); trackPointCreator.setClock(time); - trackPointCreator.getGpsHandler().onLocationChanged(location); + trackPointCreator.getSensorManager().getGpsManager().onLocationChanged(location); } } diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java deleted file mode 100644 index 0b6519fe5..000000000 --- a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/TrackPointCreatorTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package de.dennisguse.opentracks.services.handlers; - -import static org.mockito.Mockito.verify; - -import android.content.Context; - -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import de.dennisguse.opentracks.data.models.Distance; -import de.dennisguse.opentracks.data.models.TrackPoint; - -@RunWith(MockitoJUnitRunner.class) -public class TrackPointCreatorTest { - - @Mock - private Context context; - - @Mock - private TrackPointCreator.Callback server; - - @Mock - private GPSManager locationHandler; - - private TrackPointCreator subject; - - @Before - public void setUp() { - subject = new TrackPointCreator(locationHandler, server); - subject.start(context, null); - } - - @After - public void tearDown() { - subject.stop(); - } - - @Ignore("ServiceExecutor disabled for #822") - @Test - public void sendTrackPoint() throws InterruptedException { - // given - TrackPoint trackPoint = new TrackPoint(TrackPoint.Type.TRACKPOINT, null); - Distance horizontalAccuracyThreshold = Distance.of(50); - - // when - subject.onNewTrackPoint(trackPoint); - - // then - Thread.sleep(10); // Wait for executor service - verify(server).newTrackPoint(trackPoint, horizontalAccuracyThreshold); - } -} \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java b/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java index 2e2743c9d..520af52e2 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java @@ -9,6 +9,7 @@ import androidx.annotation.VisibleForTesting; import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.sensors.sensorData.SensorData; import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet; +import de.dennisguse.opentracks.services.handlers.GPSManager; import de.dennisguse.opentracks.services.handlers.TrackPointCreator; public class SensorManager { @@ -40,14 +41,20 @@ public class SensorManager { private AltitudeSumManager altitudeSumManager; - public SensorManager(Context context, Handler handler, TrackPointCreator observer) { + private GPSManager gpsManager; + + public SensorManager(TrackPointCreator observer) { this.observer = observer; - bluetoothSensorManager = new BluetoothRemoteSensorManager(context, handler, listener); - altitudeSumManager = new AltitudeSumManager(); } public void start(Context context, Handler handler) { + gpsManager = new GPSManager(observer); //TODO Pass listener + gpsManager.start(context, handler); + + bluetoothSensorManager = new BluetoothRemoteSensorManager(context, handler, listener); bluetoothSensorManager.start(context, handler); + + altitudeSumManager = new AltitudeSumManager(); altitudeSumManager.start(context, handler); } @@ -62,6 +69,11 @@ public class SensorManager { altitudeSumManager = null; } + if (gpsManager != null) { + gpsManager.stop(context); + gpsManager = null; + } + sensorDataSet.clear(); } @@ -86,6 +98,10 @@ public class SensorManager { return bluetoothSensorManager; } + public GPSManager getGpsManager() { + return gpsManager; + } + @Deprecated @VisibleForTesting public AltitudeSumManager getAltitudeSumManager() { diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/GPSManager.java b/src/main/java/de/dennisguse/opentracks/services/handlers/GPSManager.java index 2174b0a54..81611f3ee 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/GPSManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/GPSManager.java @@ -30,7 +30,7 @@ public class GPSManager implements SensorConnector, LocationListenerCompat, GpsS private final String TAG = GPSManager.class.getSimpleName(); - public static final String LOCATION_PROVIDER = LocationManager.GPS_PROVIDER; + private static final String LOCATION_PROVIDER = LocationManager.GPS_PROVIDER; private final TrackPointCreator trackPointCreator; private Context context; diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java b/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java index df8b3f120..635313055 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java @@ -18,6 +18,7 @@ import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.sensors.SensorManager; import de.dennisguse.opentracks.sensors.sensorData.SensorDataSet; +import de.dennisguse.opentracks.settings.PreferencesUtils; /** * Creates TrackPoints while recording by fusing data from different sensors (e.g., GNSS, barometer, BLE sensors). @@ -32,26 +33,21 @@ public class TrackPointCreator { @NonNull private Clock clock = new MonotonicClock(); - - private final GPSManager gpsManager; private SensorManager sensorManager; public TrackPointCreator(Callback service, Context context, Handler handler) { this.service = service; - this.gpsManager = new GPSManager(this); - this.sensorManager = new SensorManager(context, handler, this); + this.sensorManager = new SensorManager(this); } @VisibleForTesting - TrackPointCreator(GPSManager gpsManager, Callback service) { + TrackPointCreator(Callback service) { this.service = service; - this.gpsManager = gpsManager; } public synchronized void start(@NonNull Context context, @NonNull Handler handler) { this.context = context; - gpsManager.start(context, handler); sensorManager.start(context, handler); } @@ -73,8 +69,7 @@ public class TrackPointCreator { } public synchronized void stop() { - gpsManager.stop(context); - + sensorManager.stop(context); this.context = null; } @@ -93,7 +88,7 @@ public class TrackPointCreator { public void onNewTrackPoint(@NonNull TrackPoint trackPoint) { addSensorData(trackPoint); - boolean stored = service.newTrackPoint(trackPoint, gpsManager.getThresholdHorizontalAccuracy()); + boolean stored = service.newTrackPoint(trackPoint, PreferencesUtils.getThresholdHorizontalAccuracy()); //TODO Cache preference for performance if (stored) { reset(); } @@ -151,16 +146,6 @@ public class TrackPointCreator { this.clock = Clock.fixed(Instant.parse(time), ZoneId.of("CET")); } - @VisibleForTesting - public void setClock(@NonNull Clock clock) { - this.clock = clock; - } - - @VisibleForTesting - public GPSManager getGpsHandler() { - return gpsManager; - } - void sendGpsStatus(GpsStatusValue gpsStatusValue) { service.newGpsStatus(gpsStatusValue); }