From e16780277fbe1dbfec224c46200c933be0483372 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Mon, 19 Dec 2022 23:02:29 +0100 Subject: [PATCH] Refactor: introduced SensorConnector interface. --- .../opentracks/services/handlers/GPSHandlerTest.java | 2 +- .../opentracks/sensors/AltitudeSumManager.java | 2 +- .../sensors/BluetoothRemoteSensorManager.java | 8 +++++--- .../opentracks/sensors/SensorConnector.java | 11 +++++++++++ .../opentracks/services/handlers/GPSHandler.java | 7 ++++--- .../services/handlers/TrackPointCreator.java | 8 ++++---- 6 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 src/main/java/de/dennisguse/opentracks/sensors/SensorConnector.java diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/GPSHandlerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/GPSHandlerTest.java index fe4ea49b0..d83727926 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/handlers/GPSHandlerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/handlers/GPSHandlerTest.java @@ -50,7 +50,7 @@ public class GPSHandlerTest { Mockito.when(trackPointCreator.createNow()) .thenReturn(Instant.now()); - locationHandler.onStart(context, new Handler()); + locationHandler.start(context, new Handler()); } /** diff --git a/src/main/java/de/dennisguse/opentracks/sensors/AltitudeSumManager.java b/src/main/java/de/dennisguse/opentracks/sensors/AltitudeSumManager.java index 437945399..fbd7837aa 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/AltitudeSumManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/AltitudeSumManager.java @@ -19,7 +19,7 @@ import de.dennisguse.opentracks.data.models.TrackPoint; /** * Estimates the altitude gain and altitude loss using the device's pressure sensor (i.e., barometer). */ -public class AltitudeSumManager implements SensorEventListener { +public class AltitudeSumManager implements SensorConnector, SensorEventListener { private static final String TAG = AltitudeSumManager.class.getSimpleName(); diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java index 74192d028..a91abaa2d 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManager.java @@ -52,7 +52,7 @@ import de.dennisguse.opentracks.util.PermissionRequester; * * @author Sandor Dornbush */ -public class BluetoothRemoteSensorManager implements BluetoothConnectionManager.SensorDataObserver { +public class BluetoothRemoteSensorManager implements SensorConnector, BluetoothConnectionManager.SensorDataObserver { private static final String TAG = BluetoothRemoteSensorManager.class.getSimpleName(); @@ -121,14 +121,16 @@ public class BluetoothRemoteSensorManager implements BluetoothConnectionManager. bluetoothAdapter = BluetoothUtils.getAdapter(context); } - public void start() { + @Override + public void start(Context context, Handler handler) { started = true; //Registering triggers connection startup PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } - public synchronized void stop() { + @Override + public synchronized void stop(Context context) { heartRate.disconnect(); cyclingCadence.disconnect(); cyclingSpeed.disconnect(); diff --git a/src/main/java/de/dennisguse/opentracks/sensors/SensorConnector.java b/src/main/java/de/dennisguse/opentracks/sensors/SensorConnector.java new file mode 100644 index 000000000..cea9f44ee --- /dev/null +++ b/src/main/java/de/dennisguse/opentracks/sensors/SensorConnector.java @@ -0,0 +1,11 @@ +package de.dennisguse.opentracks.sensors; + +import android.content.Context; +import android.os.Handler; + +public interface SensorConnector { + + void start(Context context, Handler handler); + + void stop(Context context); +} diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java b/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java index 4bfc9111a..0d1ae1092 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/GPSHandler.java @@ -20,12 +20,13 @@ import java.time.Instant; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.TrackPoint; +import de.dennisguse.opentracks.sensors.SensorConnector; import de.dennisguse.opentracks.settings.PreferencesUtils; import de.dennisguse.opentracks.util.LocationUtils; import de.dennisguse.opentracks.util.PermissionRequester; @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) -public class GPSHandler implements LocationListenerCompat, GpsStatus.GpsStatusListener, SharedPreferences.OnSharedPreferenceChangeListener { +public class GPSHandler implements SensorConnector, LocationListenerCompat, GpsStatus.GpsStatusListener, SharedPreferences.OnSharedPreferenceChangeListener { private final String TAG = GPSHandler.class.getSimpleName(); @@ -44,7 +45,7 @@ public class GPSHandler implements LocationListenerCompat, GpsStatus.GpsStatusLi this.trackPointCreator = trackPointCreator; } - public void onStart(@NonNull Context context, @NonNull Handler handler) { + public void start(@NonNull Context context, @NonNull Handler handler) { this.context = context; this.handler = handler; @@ -61,7 +62,7 @@ public class GPSHandler implements LocationListenerCompat, GpsStatus.GpsStatusLi @SuppressWarnings({"MissingPermission"}) //TODO upgrade to AGP7.0.0/API31 started complaining about removeUpdates. - public void onStop() { + public void stop(Context context) { if (locationManager != null && context != null) { if (PermissionRequester.GPS.hasPermission(context)) { LocationManagerCompat.removeUpdates(locationManager, this); diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java b/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java index 0c9dc765b..89d99a7ba 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/TrackPointCreator.java @@ -52,12 +52,12 @@ public class TrackPointCreator implements BluetoothRemoteSensorManager.SensorDat public synchronized void start(@NonNull Context context, @NonNull Handler handler) { this.context = context; - gpsHandler.onStart(context, handler); + gpsHandler.start(context, handler); remoteSensorManager = new BluetoothRemoteSensorManager(context, handler, this); altitudeSumManager = new AltitudeSumManager(); - remoteSensorManager.start(); + remoteSensorManager.start(context, handler); altitudeSumManager.start(context, handler); } @@ -94,10 +94,10 @@ public class TrackPointCreator implements BluetoothRemoteSensorManager.SensorDat } public synchronized void stop() { - gpsHandler.onStop(); + gpsHandler.stop(context); if (remoteSensorManager != null) { - remoteSensorManager.stop(); + remoteSensorManager.stop(context); remoteSensorManager = null; }