forked from upstream-mirrors/OpenTracks
Move GPSManager into SensorManager.
Includes Bugfix: SensorManager might not have been stopped. Part of #1424.
This commit is contained in:
+1
-1
@@ -30,6 +30,6 @@ public class TrackRecordingServiceTestUtils {
|
||||
location.setSpeed(speed);
|
||||
|
||||
trackPointCreator.setClock(time);
|
||||
trackPointCreator.getGpsHandler().onLocationChanged(location);
|
||||
trackPointCreator.getSensorManager().getGpsManager().onLocationChanged(location);
|
||||
}
|
||||
}
|
||||
|
||||
-57
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user