diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java index 0993e69d5..65c833770 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceRecordingTest.java @@ -344,11 +344,12 @@ public class TrackRecordingServiceRecordingTest { String sensor1 = "2020-02-02T02:02:03Z"; trackPointCreator.setClock(sensor1); - sensorManager.onChanged(new Raw<>(sensor1, HeartRate.of(5))); //Should be ignored + //Should be ignored + sensorManager.onChange(new Raw(sensor1, HeartRate.of(5))); String sensor3 = "2020-02-02T02:02:13Z"; trackPointCreator.setClock(sensor3); - sensorManager.onChanged(new Raw<>(sensor3, HeartRate.of(7))); + sensorManager.onChange(new Raw(sensor3, HeartRate.of(7))); String stopTime = "2020-02-02T02:02:15Z"; trackPointCreator.setClock(stopTime); @@ -815,12 +816,13 @@ public class TrackRecordingServiceRecordingTest { // when String sensor1 = "2020-02-02T02:02:03Z"; trackPointCreator.setClock(sensor1); - sensorManager.onChanged(new Raw<>(sensor1, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(1), Distance.ZERO))); //Should be ignored + //Should be ignored + sensorManager.onChange(new Raw(sensor1, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(1), Distance.ZERO))); // when String sensor2 = "2020-02-02T02:02:04Z"; trackPointCreator.setClock(sensor2); - sensorManager.onChanged(new Raw<>(sensor2, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(2), Distance.of(2)))); + sensorManager.onChange(new Raw(sensor2, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(2), Distance.of(2)))); // when String gps1 = "2020-02-02T02:02:05Z"; @@ -829,12 +831,13 @@ public class TrackRecordingServiceRecordingTest { // when String sensor3 = "2020-02-02T02:02:06Z"; trackPointCreator.setClock(sensor3); - sensorManager.onChanged(new Raw<>(sensor3, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(3), Distance.of(12)))); + sensorManager.onChange(new Raw(sensor3, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(3), Distance.of(12)))); // when String sensor4 = "2020-02-02T02:02:07Z"; trackPointCreator.setClock(sensor4); - sensorManager.onChanged(new Raw<>(sensor4, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(4), Distance.of(14)))); //Should be ignored + //Should be ignored + sensorManager.onChange(new Raw(sensor4, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(4), Distance.of(14)))); // when String gps2 = "2020-02-02T02:02:08Z"; @@ -843,7 +846,8 @@ public class TrackRecordingServiceRecordingTest { // when String sensor5 = "2020-02-02T02:02:10Z"; trackPointCreator.setClock(sensor5); - sensorManager.onChanged(new Raw<>(sensor5, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(5), Distance.of(16)))); //Should be ignored + //Should be ignored + sensorManager.onChange(new Raw(sensor5, new BluetoothHandlerRunningSpeedAndCadence.Data(Speed.of(5), Cadence.of(5), Distance.of(16)))); // when String gps3 = "2020-02-02T02:02:12Z"; diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothConnectionManager.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothConnectionManager.java index ac1cc7ee2..9464d74fa 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothConnectionManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothConnectionManager.java @@ -45,7 +45,7 @@ public class BluetoothConnectionManager implements Driver { private static final String TAG = BluetoothConnectionManager.class.getSimpleName(); - private final SensorManager.SensorDataChangedObserver observer; + private final SensorManager observer; private final SensorHandlerInterface sensorHandler; @@ -131,7 +131,7 @@ public class BluetoothConnectionManager implements Driver { } }; - BluetoothConnectionManager(BluetoothAdapter bluetoothAdapter, SensorManager.SensorDataChangedObserver observer, SensorHandlerInterface sensorHandler) { + BluetoothConnectionManager(BluetoothAdapter bluetoothAdapter, SensorManager observer, SensorHandlerInterface sensorHandler) { this.bluetoothAdapter = bluetoothAdapter; this.observer = observer; this.sensorHandler = sensorHandler; diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerBarometricPressure.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerBarometricPressure.java index ce7f58823..75868f03f 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerBarometricPressure.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerBarometricPressure.java @@ -29,7 +29,7 @@ public class BluetoothHandlerBarometricPressure implements SensorHandlerInterfac } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { AtmosphericPressure value = parseEnvironmentalSensing(characteristic); if (value == null) return; diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingCadence.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingCadence.java index 64ba0e0b5..98de00f94 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingCadence.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingCadence.java @@ -29,7 +29,7 @@ public class BluetoothHandlerCyclingCadence implements SensorHandlerInterface { } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { if (serviceMeasurementUUID.equals(BluetoothHandlerCyclingPower.CYCLING_POWER)) { BluetoothHandlerCyclingPower.Data data = BluetoothHandlerCyclingPower.parseCyclingPower(characteristic); if (data != null && data.crank() != null) { diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingDistanceSpeed.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingDistanceSpeed.java index 28219799f..f7ae6a60e 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingDistanceSpeed.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingDistanceSpeed.java @@ -31,7 +31,7 @@ public class BluetoothHandlerCyclingDistanceSpeed implements SensorHandlerInterf } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { Pair data = parseCyclingCrankAndWheel(address, sensorName, characteristic); if (data.first != null) { observer.onChange(new Raw<>(observer.getNow(), data.first)); diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingPower.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingPower.java index 126bea6b0..b78a7609b 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingPower.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerCyclingPower.java @@ -31,7 +31,7 @@ public class BluetoothHandlerCyclingPower implements SensorHandlerInterface { } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, @NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, @NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { Data cyclingPower = parseCyclingPower(characteristic); if (cyclingPower != null) { diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerHeartRate.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerHeartRate.java index 7294b3136..e9c741ba9 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerHeartRate.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerHeartRate.java @@ -41,7 +41,7 @@ public class BluetoothHandlerHeartRate implements SensorHandlerInterface { } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, @NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, @NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { HeartRate heartRate = parseHeartRate(characteristic); if (heartRate != null) { diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerRunningSpeedAndCadence.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerRunningSpeedAndCadence.java index fd147845c..3d9701b30 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerRunningSpeedAndCadence.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerRunningSpeedAndCadence.java @@ -34,7 +34,7 @@ public class BluetoothHandlerRunningSpeedAndCadence implements SensorHandlerInte } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, @NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, @NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { Data data = parseRunningSpeedAndCadence(sensorName, characteristic); observer.onChange(new Raw<>(observer.getNow(), data)); } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerTemperature.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerTemperature.java index 18b1ac1fa..9625832e7 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerTemperature.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothHandlerTemperature.java @@ -30,7 +30,7 @@ public class BluetoothHandlerTemperature implements SensorHandlerInterface { } @Override - public void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { + public void handlePayload(SensorManager observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { Temperature value = parseEnvironmentalSensing(characteristic); if (value == null) return; diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java index 844653017..9256aded6 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java @@ -49,7 +49,7 @@ public class BluetoothRemoteSensorManager implements SharedPreferences.OnSharedP private final BluetoothConnectionManager cyclingPower; private final BluetoothConnectionManager runningSpeedAndCadence; - public BluetoothRemoteSensorManager(@NonNull Context context, @NonNull Handler handler, @Nullable SensorManager.SensorDataChangedObserver observer) { + public BluetoothRemoteSensorManager(@NonNull Context context, @NonNull Handler handler, @Nullable SensorManager observer) { this.context = context; this.handler = handler; diff --git a/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java b/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java index 6cace34bb..822158e92 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/GainManager.java @@ -18,7 +18,7 @@ public class GainManager { private static final String TAG = GainManager.class.getSimpleName(); - private final SensorManager.SensorDataChangedObserver listener; + private final SensorManager listener; private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (sharedPreferences, key) -> connect(); @@ -26,7 +26,7 @@ public class GainManager { private Handler handler; private Driver driver; - public GainManager(SensorManager.SensorDataChangedObserver listener) { + public GainManager(SensorManager listener) { this.listener = listener; } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/GpsManager.java b/src/main/java/de/dennisguse/opentracks/sensors/GpsManager.java index 7398db858..eceb62dda 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/GpsManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/GpsManager.java @@ -34,7 +34,7 @@ public class GpsManager implements LocationListenerCompat, GpsStatusManager.GpsS private TrackPointCreator trackPointCreator; - private SensorManager.SensorDataChangedObserver observer; + private SensorManager observer; private Context context; private Handler handler; @@ -43,7 +43,7 @@ public class GpsManager implements LocationListenerCompat, GpsStatusManager.GpsS private Duration gpsInterval; private Distance thresholdHorizontalAccuracy; - public GpsManager(TrackPointCreator trackPointCreator, SensorManager.SensorDataChangedObserver observer) { + public GpsManager(TrackPointCreator trackPointCreator, SensorManager observer) { this.trackPointCreator = trackPointCreator; this.observer = observer; } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java b/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java index ea34eb109..1c03fad49 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/SensorManager.java @@ -43,35 +43,6 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange private final TrackPointCreator observer; - private final SensorDataChangedObserver listener = new SensorDataChangedObserver() { - - @Override - public void onConnect(Aggregator aggregator) { - add(aggregator); - } - - @Override - public void onChange(Raw data) { - update(data); - observer.onChange(); - } - - @Override - public void onDisconnect(Aggregator aggregator) { - add(aggregator); - } - - @Override - public void onRemove(Aggregator aggregator) { - remove(aggregator); - } - - @Override - public Instant getNow() { - return observer.createNow(); - } - }; - private BluetoothRemoteSensorManager bluetoothSensorManager; private GainManager altitudeSumManager; @@ -89,9 +60,9 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange wakeLock = SystemUtils.acquireWakeLock(context, wakeLock); - gpsManager = new GpsManager(observer, listener); - altitudeSumManager = new GainManager(listener); - bluetoothSensorManager = new BluetoothRemoteSensorManager(context, handler, listener); + gpsManager = new GpsManager(observer, this); + altitudeSumManager = new GainManager(this); + bluetoothSensorManager = new BluetoothRemoteSensorManager(context, handler, this); onSharedPreferenceChanged(null, null); @@ -133,9 +104,23 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange if (gps != null) gps.resetAggregated(); } - @VisibleForTesting - public void onChanged(Raw data) { - listener.onChange(data); + @Deprecated + public void onConnect(Aggregator aggregator) { + add(aggregator); + } + + @Deprecated + public void onDisconnect(Aggregator aggregator) { + add(aggregator); + } + + @Deprecated + public void onRemove(Aggregator aggregator) { + remove(aggregator); + } + + public Instant getNow() { + return observer.createNow(); } public GpsManager getGpsManager() { @@ -162,20 +147,7 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange } } - public interface SensorDataChangedObserver { - - void onConnect(Aggregator sensorData); - void onChange(Raw sensorData); - - void onDisconnect(Aggregator sensorData); - - void onRemove(Aggregator sensorData); - - Instant getNow(); - } - - - //TODO Inline from SensorDataAggregator; Aggregators will be moved into Drivers. + //TODO Inlined from SensorDataAggregator; Aggregators will be moved into Drivers. @VisibleForTesting public AggregatorHeartRate heartRate; @@ -252,8 +224,14 @@ public class SensorManager implements SharedPreferences.OnSharedPreferenceChange set(data, data); } + @Deprecated + public void onChange(Raw data) { + update(data); + observer.onChange(); + } + //TODO Refactor generic "fun" here: go explicit. - public void update(@NonNull Raw data) { + private void update(@NonNull Raw data) { Object value = data.value(); if (value instanceof HeartRate) { diff --git a/src/main/java/de/dennisguse/opentracks/sensors/SensorType.java b/src/main/java/de/dennisguse/opentracks/sensors/SensorType.java index ad66d7fce..9fefe5195 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/SensorType.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/SensorType.java @@ -3,6 +3,8 @@ package de.dennisguse.opentracks.sensors; public enum SensorType { NONE("NONE"), INTERNAL("INTERNAL"), + + //NOTE: preferenceValue of REMOTE should not be used anywhere. REMOTE("*"); private final String preferenceValue; diff --git a/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java b/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java index 0929e875c..d81967b45 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/driver/BarometerInternal.java @@ -22,7 +22,7 @@ public class BarometerInternal implements Driver { private static final int SAMPLING_PERIOD = (int) TimeUnit.SECONDS.toMicros(5); - private final SensorManager.SensorDataChangedObserver observer; + private final SensorManager observer; private Context context; @@ -43,7 +43,7 @@ public class BarometerInternal implements Driver { } }; - public BarometerInternal(@NonNull SensorManager.SensorDataChangedObserver observer) { + public BarometerInternal(@NonNull SensorManager observer) { this.observer = observer; } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/sensorData/SensorHandlerInterface.java b/src/main/java/de/dennisguse/opentracks/sensors/sensorData/SensorHandlerInterface.java index 3406c907f..d9a162eee 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/sensorData/SensorHandlerInterface.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/sensorData/SensorHandlerInterface.java @@ -13,5 +13,5 @@ public interface SensorHandlerInterface { Aggregator createEmptySensorData(String address, String name); - void handlePayload(SensorManager.SensorDataChangedObserver observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic); + void handlePayload(SensorManager observer, ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic); }