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);
}
@Override
protected int getSensorPreferenceKey() {
return R.string.settings_sensor_bluetooth_pressure_key;
}
@NonNull
@Override
protected Driver createDriverInternal() {
return new BarometerInternal(driverObserver);
return new BarometerInternal(this);
}
@NonNull
@@ -37,7 +32,7 @@ public class AltitudeChangeHandler extends SensorHandler<AtmosphericPressure, Al
protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
new BarometerBluetooth()
);
}
@@ -47,4 +42,9 @@ public class AltitudeChangeHandler extends SensorHandler<AtmosphericPressure, Al
public AggregatorBarometer createAggregator(String sensorAddress, String 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) {
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
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.Driver;
import de.dennisguse.opentracks.sensors.sensorData.AggregatorCyclingDistanceSpeed;
import de.dennisguse.opentracks.settings.PreferencesUtils;
public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSpeedBluetooth.WheelData, AggregatorCyclingDistanceSpeed.Data> {
@@ -17,10 +18,9 @@ public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSp
@NonNull
@Override
protected Driver createDriverBluetooth(String address) {
//TODO ((AggregatorCyclingDistanceSpeed) getAggregator()).setWheelCircumference(PreferencesUtils.getWheelCircumference()); //TODO Fetch once and then listen for changes.);
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
new CyclingDistanceSpeedBluetooth()
);
}
@@ -35,4 +35,12 @@ public class CyclingDistanceSpeedHandler extends SensorHandler<CyclingDistanceSp
protected int getSensorPreferenceKey() {
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) {
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
new CyclingPowerBluetooth()
);
}
@@ -20,7 +20,7 @@ public class HeartRateHandler extends SensorHandler<HeartRate, HeartRate> {
protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
new HeartRateBluetooth()
);
}
@@ -19,7 +19,7 @@ public class RunningSpeedCadenceDistanceHandler extends SensorHandler<RunningSpe
protected Driver createDriverBluetooth(String address) {
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
new RunningSpeedAndCadenceBluetooth()
);
}
@@ -15,36 +15,13 @@ import de.dennisguse.opentracks.sensors.sensorData.SensorData;
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 Driver driver;
private 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 Aggregator<AggregatorInput, AggregatorOutput> aggregator;
protected SensorHandler(SensorManager sensorManager) {
this.sensorManager = sensorManager;
@@ -57,7 +34,7 @@ public abstract class SensorHandler<AggregatorInput, AggregatorOutput> {
switch (PreferencesUtils.getSensorType(address)) {
case NONE -> {
driverObserver.onDisconnected();
onDisconnected();
return;
}
case INTERNAL -> {
@@ -117,4 +94,24 @@ public abstract class SensorHandler<AggregatorInput, AggregatorOutput> {
public void setAggregator(Aggregator<AggregatorInput, AggregatorOutput> 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) {
return new BluetoothDriver<>(
BluetoothUtils.getAdapter(getContext()),
driverObserver,
this,
new TemperatureBluetooth()
);
}