forked from upstream-mirrors/OpenTracks
Cleanup: SensorManager provides context and handler.
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package de.dennisguse.opentracks.sensors;
|
package de.dennisguse.opentracks.sensors;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
@@ -16,8 +15,6 @@ public abstract class SensorHandler<T> {
|
|||||||
|
|
||||||
private final SensorManager sensorManager;
|
private final SensorManager sensorManager;
|
||||||
|
|
||||||
private Context context;
|
|
||||||
private Handler handler;
|
|
||||||
private Driver driver;
|
private Driver driver;
|
||||||
|
|
||||||
private Aggregator<T, ?> aggregator;
|
private Aggregator<T, ?> aggregator;
|
||||||
@@ -49,19 +46,6 @@ public abstract class SensorHandler<T> {
|
|||||||
this.sensorManager = sensorManager;
|
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() {
|
void connect() {
|
||||||
disconnect();
|
disconnect();
|
||||||
|
|
||||||
@@ -80,7 +64,7 @@ public abstract class SensorHandler<T> {
|
|||||||
default -> throw new UnsupportedOperationException();
|
default -> throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
driver.connect(context, handler, address);
|
driver.connect(sensorManager.getContext(), sensorManager.getHandler(), address);
|
||||||
}
|
}
|
||||||
|
|
||||||
void disconnect() {
|
void disconnect() {
|
||||||
@@ -106,7 +90,7 @@ public abstract class SensorHandler<T> {
|
|||||||
protected abstract int getSensorPreferenceKey();
|
protected abstract int getSensorPreferenceKey();
|
||||||
|
|
||||||
protected Context getContext() {
|
protected Context getContext() {
|
||||||
return context;
|
return sensorManager.getContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO Try to keep aggregator private.
|
//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.settings.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.SystemUtils;
|
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 {
|
public class SensorManager implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
private static final String TAG = SensorManager.class.getSimpleName();
|
private static final String TAG = SensorManager.class.getSimpleName();
|
||||||
@@ -71,20 +70,12 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
|
|||||||
|
|
||||||
gpsManager = new GpsManager(observer, this);
|
gpsManager = new GpsManager(observer, this);
|
||||||
altitudeChangeHandler = new AltitudeChangeHandler(this);
|
altitudeChangeHandler = new AltitudeChangeHandler(this);
|
||||||
this.heartRateHandler = new HeartRateHandler(this);
|
heartRateHandler = new HeartRateHandler(this);
|
||||||
this.temperatureHandler = new TemperatureHandler(this);
|
temperatureHandler = new TemperatureHandler(this);
|
||||||
this.cyclingCadenceHandler = new CyclingCadenceHandler(this);
|
cyclingCadenceHandler = new CyclingCadenceHandler(this);
|
||||||
this.cyclingDistanceSpeedHandler = new CyclingDistanceSpeedHandler(this);
|
cyclingDistanceSpeedHandler = new CyclingDistanceSpeedHandler(this);
|
||||||
this.cyclingPowerHandler = new CyclingPowerHandler(this);
|
cyclingPowerHandler = new CyclingPowerHandler(this);
|
||||||
this.runningSpeedCadenceDistanceHandler = new RunningSpeedCadenceDistanceHandler(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);
|
|
||||||
|
|
||||||
onSharedPreferenceChanged(null, null);
|
onSharedPreferenceChanged(null, null);
|
||||||
|
|
||||||
@@ -94,25 +85,25 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
|
|||||||
public void stop() {
|
public void stop() {
|
||||||
wakeLock = SystemUtils.releaseWakeLock(wakeLock);
|
wakeLock = SystemUtils.releaseWakeLock(wakeLock);
|
||||||
|
|
||||||
heartRateHandler.stop();
|
heartRateHandler.disconnect();
|
||||||
heartRateHandler = null;
|
heartRateHandler = null;
|
||||||
|
|
||||||
temperatureHandler.stop();
|
temperatureHandler.disconnect();
|
||||||
temperatureHandler = null;
|
temperatureHandler = null;
|
||||||
|
|
||||||
cyclingCadenceHandler.stop();
|
cyclingCadenceHandler.disconnect();
|
||||||
cyclingCadenceHandler = null;
|
cyclingCadenceHandler = null;
|
||||||
|
|
||||||
cyclingDistanceSpeedHandler.stop();
|
cyclingDistanceSpeedHandler.disconnect();
|
||||||
cyclingDistanceSpeedHandler = null;
|
cyclingDistanceSpeedHandler = null;
|
||||||
|
|
||||||
cyclingPowerHandler.stop();
|
cyclingPowerHandler.disconnect();
|
||||||
cyclingPowerHandler = null;
|
cyclingPowerHandler = null;
|
||||||
|
|
||||||
runningSpeedCadenceDistanceHandler.stop();
|
runningSpeedCadenceDistanceHandler.disconnect();
|
||||||
runningSpeedCadenceDistanceHandler = null;
|
runningSpeedCadenceDistanceHandler = null;
|
||||||
|
|
||||||
altitudeChangeHandler.stop();
|
altitudeChangeHandler.disconnect();
|
||||||
altitudeChangeHandler = null;
|
altitudeChangeHandler = null;
|
||||||
|
|
||||||
gpsManager.stop();
|
gpsManager.stop();
|
||||||
@@ -189,8 +180,15 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange
|
|||||||
return observer.getNow();
|
return observer.getNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
public Context getContext() {
|
||||||
public SensorData<HeartRate> getHeartRate(Instant now) {
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Handler getHandler() {
|
||||||
|
return handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SensorData<HeartRate> getHeartRate(Instant now) {
|
||||||
if (heartRateHandler.getAggregator() != null) {
|
if (heartRateHandler.getAggregator() != null) {
|
||||||
SensorData<HeartRate> value = ((AggregatorHeartRate) heartRateHandler.getAggregator()).getAggregatedValueWithSensorName(now);
|
SensorData<HeartRate> value = ((AggregatorHeartRate) heartRateHandler.getAggregator()).getAggregatedValueWithSensorName(now);
|
||||||
//TODO Move this check into HeartRateHandler
|
//TODO Move this check into HeartRateHandler
|
||||||
|
|||||||
Reference in New Issue
Block a user