From 6ac0db723812ef726470d66209d10f6a503c9272 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 31 Oct 2020 10:17:34 +0100 Subject: [PATCH] Move handling of sensor removal (from settings) in BluetoothConnectionManager.BluetoothConnectionManager. --- .../content/sensor/SensorDataSet.java | 36 +++++++++++-------- .../StatisticsRecordingFragment.java | 17 ++------- .../sensors/BluetoothConnectionManager.java | 13 ++++--- .../sensors/BluetoothRemoteSensorManager.java | 6 ++++ .../opentracks/util/PreferencesUtils.java | 15 -------- 5 files changed, 39 insertions(+), 48 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java index cc24aafd9..9610f970a 100644 --- a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java +++ b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java @@ -28,21 +28,11 @@ public final class SensorDataSet { } public void set(SensorData data) { - if (data instanceof SensorDataHeartRate) { - this.heartRate = (SensorDataHeartRate) data; - return; - } + set(data, data); + } - if (data instanceof SensorDataCycling.Cadence) { - this.cyclingCadence = (SensorDataCycling.Cadence) data; - return; - } - if (data instanceof SensorDataCycling.Speed) { - this.cyclingSpeed = (SensorDataCycling.Speed) data; - return; - } - - throw new UnsupportedOperationException(); + public void remove(SensorData type) { + set(type, null); } public void clear() { @@ -72,4 +62,22 @@ public final class SensorDataSet { + (getCyclingCadence() != null ? " " + getCyclingCadence() : "") + (getCyclingSpeed() != null ? " " + getCyclingSpeed() : ""); } + + private void set(SensorData type, SensorData data) { + if (type instanceof SensorDataHeartRate) { + this.heartRate = (SensorDataHeartRate) data; + return; + } + + if (type instanceof SensorDataCycling.Cadence) { + this.cyclingCadence = (SensorDataCycling.Cadence) data; + return; + } + if (type instanceof SensorDataCycling.Speed) { + this.cyclingSpeed = (SensorDataCycling.Speed) data; + return; + } + + throw new UnsupportedOperationException(); + } } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java index b4ab658fc..431161f1a 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordingFragment.java @@ -418,10 +418,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi } private void setHeartRateSensorData(SensorDataSet sensorDataSet) { - int isVisible = View.VISIBLE; - if (PreferencesUtils.isBluetoothHeartRateSensorAddressNone(getContext())) { - isVisible = View.GONE; - } + int isVisible = sensorDataSet != null ? View.VISIBLE : View.GONE; heartRateGroup.setVisibility(isVisible); setVisibilitySensorHorizontalLine(); @@ -441,10 +438,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi } private void setCadenceSensorData(SensorDataSet sensorDataSet) { - int isVisible = View.VISIBLE; - if (PreferencesUtils.isBluetoothCyclingCadenceSensorAddressNone(getContext())) { - isVisible = View.GONE; - } + int isVisible = sensorDataSet != null ? View.VISIBLE : View.GONE; cadenceGroup.setVisibility(isVisible); setVisibilitySensorHorizontalLine(); @@ -522,13 +516,8 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi // Set activity type { - activityLabel.setVisibility(trackIconValue != null ? View.VISIBLE : View.GONE); - - activitySpinner.setVisibility(trackIconValue != null ? View.VISIBLE : View.GONE); activitySpinner.setEnabled(isRecording); - if (trackIconValue != null) { - TrackIconUtils.setIconSpinner(activitySpinner, trackIconValue); - } + TrackIconUtils.setIconSpinner(activitySpinner, trackIconValue); } // Set time diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java index 976853e40..df2a92e48 100644 --- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java @@ -118,7 +118,7 @@ public abstract class BluetoothConnectionManager { Log.d(TAG, "Connecting to: " + device); bluetoothGatt = device.connectGatt(context, true, connectCallback); - SensorData sensorData = createPreConnectSensorData(bluetoothGatt.getDevice().getAddress()); + SensorData sensorData = createEmptySensorData(bluetoothGatt.getDevice().getAddress()); observer.onChanged(sensorData); } @@ -128,6 +128,8 @@ public abstract class BluetoothConnectionManager { return; } bluetoothGatt.close(); + observer.onDisconnecting(createEmptySensorData(bluetoothGatt.getDevice().getAddress())); + bluetoothGatt = null; } @@ -139,7 +141,7 @@ public abstract class BluetoothConnectionManager { return address.equals(bluetoothGatt.getDevice().getAddress()); } - protected abstract SensorData createPreConnectSensorData(String address); + protected abstract SensorData createEmptySensorData(String address); /** * @return null if data could not be parsed. @@ -153,7 +155,7 @@ public abstract class BluetoothConnectionManager { } @Override - protected SensorData createPreConnectSensorData(String address) { + protected SensorData createEmptySensorData(String address) { return new SensorDataHeartRate(address); } @@ -172,7 +174,7 @@ public abstract class BluetoothConnectionManager { } @Override - protected SensorData createPreConnectSensorData(String address) { + protected SensorData createEmptySensorData(String address) { return new SensorDataCycling.Cadence(address); } @@ -203,7 +205,7 @@ public abstract class BluetoothConnectionManager { } @Override - protected SensorData createPreConnectSensorData(String address) { + protected SensorData createEmptySensorData(String address) { return new SensorDataCycling.Speed(address); } @@ -221,5 +223,6 @@ public abstract class BluetoothConnectionManager { void onChanged(SensorData sensorData); + void onDisconnecting(SensorData sensorData); } } diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java index 401d772a5..46547b7b1 100644 --- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java @@ -121,6 +121,7 @@ public class BluetoothRemoteSensorManager implements BluetoothConnectionManager. if (PreferencesUtils.isBluetoothSensorAddressNone(context, address)) { Log.w(TAG, "No Bluetooth address."); + connectionManager.disconnect(); return; } @@ -168,4 +169,9 @@ public class BluetoothRemoteSensorManager implements BluetoothConnectionManager. sensorDataSet.set(sensorData); } + + @Override + public void onDisconnecting(SensorData sensorData) { + sensorDataSet.remove(sensorData); + } } diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index 0f0d037d2..1fa437942 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -245,29 +245,14 @@ public class PreferencesUtils { return getBluetoothSensorAddressNone(context).equals(currentValue); } - - public static boolean isBluetoothHeartRateSensorAddressNone(Context context) { - return isBluetoothSensorAddressNone(context, getBluetoothHeartRateSensorAddress(context)); - } - public static String getBluetoothHeartRateSensorAddress(Context context) { return getString(context, R.string.settings_sensor_bluetooth_heart_rate_key, getBluetoothSensorAddressNone(context)); } - - public static boolean isBluetoothCyclingCadenceSensorAddressNone(Context context) { - return isBluetoothSensorAddressNone(context, getBluetoothCyclingCadenceSensorAddress(context)); - } - public static String getBluetoothCyclingCadenceSensorAddress(Context context) { return getString(context, R.string.settings_sensor_bluetooth_cycling_cadence_key, getBluetoothSensorAddressNone(context)); } - - public static boolean isBluetoothCyclingSpeedSensorAddressNone(Context context) { - return isBluetoothSensorAddressNone(context, getBluetoothCyclingSpeedSensorAddress(context)); - } - public static String getBluetoothCyclingSpeedSensorAddress(Context context) { return getString(context, R.string.settings_sensor_bluetooth_cycling_speed_key, getBluetoothSensorAddressNone(context)); }