CyclingDistanceSpeedHandler: uses wheel size (again).

Skipped while to SensorHandler: a5dcbec3961957dfc651cf4ffd62ec075324c0ba
This commit is contained in:
Dennis Guse
2026-02-02 21:39:23 +01:00
parent 1c767c41a7
commit 0b849c3d55
8 changed files with 45 additions and 40 deletions
@@ -21,15 +21,10 @@ public class AltitudeChangeHandler extends SensorHandler<AtmosphericPressure, Al
super(sensorManager); super(sensorManager);
} }
@Override
protected int getSensorPreferenceKey() {
return R.string.settings_sensor_bluetooth_pressure_key;
}
@NonNull @NonNull
@Override @Override
protected Driver createDriverInternal() { protected Driver createDriverInternal() {
return new BarometerInternal(driverObserver); return new BarometerInternal(this);
} }
@NonNull @NonNull
@@ -37,7 +32,7 @@ public class AltitudeChangeHandler extends SensorHandler<AtmosphericPressure, Al
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new BarometerBluetooth() new BarometerBluetooth()
); );
} }
@@ -47,4 +42,9 @@ public class AltitudeChangeHandler extends SensorHandler<AtmosphericPressure, Al
public AggregatorBarometer createAggregator(String sensorAddress, String sensorName) { public AggregatorBarometer createAggregator(String sensorAddress, String sensorName) {
return new AggregatorBarometer(sensorAddress, sensorName); return new AggregatorBarometer(sensorAddress, sensorName);
} }
@Override
protected int getSensorPreferenceKey() {
return R.string.settings_sensor_bluetooth_pressure_key;
}
} }
@@ -20,7 +20,7 @@ public class CyclingCadenceHandler extends SensorHandler<CyclingCadenceBluetooth
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new CyclingCadenceBluetooth() new CyclingCadenceBluetooth()
); );
} }
@@ -7,6 +7,7 @@ import de.dennisguse.opentracks.sensors.driver.BluetoothDriver;
import de.dennisguse.opentracks.sensors.driver.CyclingDistanceSpeedBluetooth; import de.dennisguse.opentracks.sensors.driver.CyclingDistanceSpeedBluetooth;
import de.dennisguse.opentracks.sensors.driver.Driver; import de.dennisguse.opentracks.sensors.driver.Driver;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingDistanceSpeed; import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingDistanceSpeed;
import de.dennisguse.opentracks.settings.PreferencesUtils;
public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSpeedBluetooth.WheelData, AggregatorCyclingDistanceSpeed.Data> { public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSpeedBluetooth.WheelData, AggregatorCyclingDistanceSpeed.Data> {
@@ -17,10 +18,9 @@ public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSp
@NonNull @NonNull
@Override @Override
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
//TODO ((AggregatorCyclingDistanceSpeed) getAggregator()).setWheelCircumference(PreferencesUtils.getWheelCircumference()); //TODO Fetch once and then listen for changes.);
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new CyclingDistanceSpeedBluetooth() new CyclingDistanceSpeedBluetooth()
); );
} }
@@ -35,4 +35,12 @@ public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSp
protected int getSensorPreferenceKey() { protected int getSensorPreferenceKey() {
return R.string.settings_sensor_bluetooth_cycling_speed_key; return R.string.settings_sensor_bluetooth_cycling_speed_key;
} }
@Override
public void onDataReceived(CyclingDistanceSpeedBluetooth.WheelData value) {
//TODO Fetch once and then listen for changes.
((AggregatorCyclingDistanceSpeed) aggregator).setWheelCircumference(PreferencesUtils.getWheelCircumference());
super.onDataReceived(value);
}
} }
@@ -20,7 +20,7 @@ public class CyclingPowerHandler extends SensorHandler<CyclingPowerBluetooth.Dat
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new CyclingPowerBluetooth() new CyclingPowerBluetooth()
); );
} }
@@ -20,7 +20,7 @@ public class HeartRateHandler extends SensorHandler<HeartRate, HeartRate> {
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new HeartRateBluetooth() new HeartRateBluetooth()
); );
} }
@@ -19,7 +19,7 @@ public class RunningSpeedCadenceDistanceHandler extends SensorHandler<RunningSpe
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new RunningSpeedAndCadenceBluetooth() new RunningSpeedAndCadenceBluetooth()
); );
} }
@@ -15,36 +15,13 @@ import de.dennisguse.opentracks.sensors.sensorData.SensorData;
import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.settings.PreferencesUtils;
public abstract class SensorHandler<AggregatorInput, AggregatorOutput> { public abstract class SensorHandler<AggregatorInput, AggregatorOutput> implements DriverObserver<AggregatorInput> {
private final SensorManager sensorManager; private final SensorManager sensorManager;
private Driver driver; private Driver driver;
private Aggregator<AggregatorInput, AggregatorOutput> aggregator; protected Aggregator<AggregatorInput, AggregatorOutput> aggregator;
protected final DriverObserver<AggregatorInput> driverObserver = new DriverObserver<>() {
@Override
public void onConnected(String sensorAddress, String sensorName) {
SensorHandler.this.aggregator = createAggregator(sensorAddress, sensorName);
}
@Override
public void onConnectionLost() {
SensorHandler.this.aggregator.resetAggregated();
}
@Override
public void onDataReceived(AggregatorInput value) {
SensorHandler.this.aggregator.add(sensorManager.getNow(), value);
sensorManager.onChange();
}
@Override
public void onDisconnected() {
SensorHandler.this.aggregator = null;
}
};
protected SensorHandler(SensorManager sensorManager) { protected SensorHandler(SensorManager sensorManager) {
this.sensorManager = sensorManager; this.sensorManager = sensorManager;
@@ -57,7 +34,7 @@ public abstract class SensorHandler<AggregatorInput, AggregatorOutput> {
switch (PreferencesUtils.getSensorType(address)) { switch (PreferencesUtils.getSensorType(address)) {
case NONE -> { case NONE -> {
driverObserver.onDisconnected(); onDisconnected();
return; return;
} }
case INTERNAL -> { case INTERNAL -> {
@@ -117,4 +94,24 @@ public abstract class SensorHandler<AggregatorInput, AggregatorOutput> {
public void setAggregator(Aggregator<AggregatorInput, AggregatorOutput> aggregator) { public void setAggregator(Aggregator<AggregatorInput, AggregatorOutput> aggregator) {
this.aggregator = aggregator; this.aggregator = aggregator;
} }
public void onConnected(String sensorAddress, String sensorName) {
SensorHandler.this.aggregator = createAggregator(sensorAddress, sensorName);
}
@Override
public void onConnectionLost() {
SensorHandler.this.aggregator.resetAggregated();
}
@Override
public void onDataReceived(AggregatorInput value) {
SensorHandler.this.aggregator.add(sensorManager.getNow(), value);
sensorManager.onChange();
}
@Override
public void onDisconnected() {
SensorHandler.this.aggregator = null;
}
} }
@@ -20,7 +20,7 @@ public class TemperatureHandler extends SensorHandler<Temperature, Temperature>
protected Driver createDriverBluetooth(String address) { protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>( return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()), BluetoothUtils.getAdapter(getContext()),
driverObserver, this,
new TemperatureBluetooth() new TemperatureBluetooth()
); );
} }