diff --git a/src/main/java/de/dennisguse/opentracks/sensors/SensorHandler.java b/src/main/java/de/dennisguse/opentracks/sensors/SensorHandler.java index 542f82126..fdb684227 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/SensorHandler.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/SensorHandler.java @@ -1,7 +1,6 @@ package de.dennisguse.opentracks.sensors; import android.content.Context; -import android.os.Handler; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; @@ -16,8 +15,6 @@ public abstract class SensorHandler { private final SensorManager sensorManager; - private Context context; - private Handler handler; private Driver driver; private Aggregator aggregator; @@ -49,19 +46,6 @@ public abstract class SensorHandler { this.sensorManager = sensorManager; } - //TODO Do we really need start and stop? - void start(Context context, Handler handler) { - this.context = context; - this.handler = handler; - } - - void stop() { - this.context = null; - this.handler = null; - - disconnect(); - } - void connect() { disconnect(); @@ -80,7 +64,7 @@ public abstract class SensorHandler { default -> throw new UnsupportedOperationException(); } - driver.connect(context, handler, address); + driver.connect(sensorManager.getContext(), sensorManager.getHandler(), address); } void disconnect() { @@ -106,7 +90,7 @@ public abstract class SensorHandler { protected abstract int getSensorPreferenceKey(); protected Context getContext() { - return context; + return sensorManager.getContext(); } //TODO Try to keep aggregator private. diff --git a/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java b/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java index ab67bdef6..8c65baec5 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java @@ -32,7 +32,6 @@ import de.dennisguse.opentracks.services.handlers.TrackPointCreator; import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.util.SystemUtils; -//TODO provide context and handler for different Managers (not passing via start(), but similar to getNow()). public class SensorManager implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String TAG = SensorManager.class.getSimpleName(); @@ -71,20 +70,12 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange gpsManager = new GpsManager(observer, this); altitudeChangeHandler = new AltitudeChangeHandler(this); - this.heartRateHandler = new HeartRateHandler(this); - this.temperatureHandler = new TemperatureHandler(this); - this.cyclingCadenceHandler = new CyclingCadenceHandler(this); - this.cyclingDistanceSpeedHandler = new CyclingDistanceSpeedHandler(this); - this.cyclingPowerHandler = new CyclingPowerHandler(this); - this.runningSpeedCadenceDistanceHandler = new RunningSpeedCadenceDistanceHandler(this); - - altitudeChangeHandler.start(context, handler); - heartRateHandler.start(context, handler); - temperatureHandler.start(context, handler); - cyclingCadenceHandler.start(context, handler); - cyclingDistanceSpeedHandler.start(context, handler); - cyclingPowerHandler.start(context, handler); - runningSpeedCadenceDistanceHandler.start(context, handler); + heartRateHandler = new HeartRateHandler(this); + temperatureHandler = new TemperatureHandler(this); + cyclingCadenceHandler = new CyclingCadenceHandler(this); + cyclingDistanceSpeedHandler = new CyclingDistanceSpeedHandler(this); + cyclingPowerHandler = new CyclingPowerHandler(this); + runningSpeedCadenceDistanceHandler = new RunningSpeedCadenceDistanceHandler(this); onSharedPreferenceChanged(null, null); @@ -94,25 +85,25 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange public void stop() { wakeLock = SystemUtils.releaseWakeLock(wakeLock); - heartRateHandler.stop(); + heartRateHandler.disconnect(); heartRateHandler = null; - temperatureHandler.stop(); + temperatureHandler.disconnect(); temperatureHandler = null; - cyclingCadenceHandler.stop(); + cyclingCadenceHandler.disconnect(); cyclingCadenceHandler = null; - cyclingDistanceSpeedHandler.stop(); + cyclingDistanceSpeedHandler.disconnect(); cyclingDistanceSpeedHandler = null; - cyclingPowerHandler.stop(); + cyclingPowerHandler.disconnect(); cyclingPowerHandler = null; - runningSpeedCadenceDistanceHandler.stop(); + runningSpeedCadenceDistanceHandler.disconnect(); runningSpeedCadenceDistanceHandler = null; - altitudeChangeHandler.stop(); + altitudeChangeHandler.disconnect(); altitudeChangeHandler = null; gpsManager.stop(); @@ -189,8 +180,15 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange return observer.getNow(); } - @VisibleForTesting - public SensorData getHeartRate(Instant now) { + public Context getContext() { + return context; + } + + public Handler getHandler() { + return handler; + } + + private SensorData getHeartRate(Instant now) { if (heartRateHandler.getAggregator() != null) { SensorData value = ((AggregatorHeartRate) heartRateHandler.getAggregator()).getAggregatedValueWithSensorName(now); //TODO Move this check into HeartRateHandler