mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-02 09:33:06 +02:00
Cleanup: SensorManager provides context and handler.
This commit is contained in:
@@ -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<T> {
|
||||
|
||||
private final SensorManager sensorManager;
|
||||
|
||||
private Context context;
|
||||
private Handler handler;
|
||||
private Driver driver;
|
||||
|
||||
private Aggregator<T, ?> aggregator;
|
||||
@@ -49,19 +46,6 @@ public abstract class SensorHandler<T> {
|
||||
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<T> {
|
||||
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<T> {
|
||||
protected abstract int getSensorPreferenceKey();
|
||||
|
||||
protected Context getContext() {
|
||||
return context;
|
||||
return sensorManager.getContext();
|
||||
}
|
||||
|
||||
//TODO Try to keep aggregator private.
|
||||
|
||||
@@ -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<HeartRate> getHeartRate(Instant now) {
|
||||
public Context getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public Handler getHandler() {
|
||||
return handler;
|
||||
}
|
||||
|
||||
private SensorData<HeartRate> getHeartRate(Instant now) {
|
||||
if (heartRateHandler.getAggregator() != null) {
|
||||
SensorData<HeartRate> value = ((AggregatorHeartRate) heartRateHandler.getAggregator()).getAggregatedValueWithSensorName(now);
|
||||
//TODO Move this check into HeartRateHandler
|
||||
|
||||
Reference in New Issue
Block a user