diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
index fa33186f6..7edd6506b 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
@@ -419,6 +419,7 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_FORCE_ENABLE_WEAR_LOCATION = "pref_force_enable_wear_location";
public static final String PREF_FORCE_DND_SUPPORT = "pref_force_dnd_support";
public static final String PREF_FORCE_ENABLE_HEARTRATE_SUPPORT = "pref_force_enable_heartrate_support";
+ public static final String PREF_FORCE_ENABLE_SPO2_SUPPORT = "pref_force_enable_spo2_support";
public static final String PREF_IGNORE_WAKEUP_STATUS_START = "pref_force_ignore_wakeup_status_start";
public static final String PREF_IGNORE_WAKEUP_STATUS_END = "pref_force_ignore_wakeup_status_end";
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java
index b8d32ad1c..61f1d7a17 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java
@@ -334,6 +334,10 @@ public class HuaweiCoordinator {
return supportsCommandForService(0x07, 0x24);
}
+ public boolean supportsSPo2(GBDevice gbDevice) {
+ return supportsSPo2() || getForceOption(gbDevice, PREF_FORCE_ENABLE_SPO2_SUPPORT);
+ }
+
public boolean supportsFitnessThresholdValue() {
return supportsCommandForService(0x07, 0x29);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java
index 7229402f9..2ad03622c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiSettingsCustomizer.java
@@ -103,6 +103,11 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
if (this.coordinator.supportsHeartRate(handler.getDevice())) {
heartRate.setVisible(true);
}
+ final ListPreference spo2 = handler.findPreference(PREF_SPO_AUTOMATIC_ENABLE);
+ spo2.setVisible(false);
+ if (this.coordinator.supportsSPo2(handler.getDevice())) {
+ spo2.setVisible(true);
+ }
}
}
@@ -114,6 +119,7 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
handler.addPreferenceHandlerFor(PREF_FORCE_ENABLE_WEAR_LOCATION);
handler.addPreferenceHandlerFor(PREF_FORCE_DND_SUPPORT);
handler.addPreferenceHandlerFor(PREF_FORCE_ENABLE_HEARTRATE_SUPPORT);
+ handler.addPreferenceHandlerFor(PREF_FORCE_ENABLE_SPO2_SUPPORT);
handler.addPreferenceHandlerFor(PREF_HUAWEI_WORKMODE);
handler.addPreferenceHandlerFor(PREF_HUAWEI_TRUSLEEP);
@@ -125,7 +131,8 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
boolean supportsSmartAlarm = this.coordinator.supportsSmartAlarm();
boolean supportsWearLocation = this.coordinator.supportsWearLocation();
boolean supportsHeartRate = this.coordinator.supportsHeartRate();
- if (!supportsSmartAlarm || !supportsWearLocation || !supportsHeartRate) {
+ boolean supportsSpO2 = this.coordinator.supportsSPo2();
+ if (!supportsSmartAlarm || !supportsWearLocation || !supportsHeartRate || !supportsSpO2) {
forceOptions.setVisible(true);
final SwitchPreferenceCompat forceSmartAlarm = handler.findPreference(PREF_FORCE_ENABLE_SMART_ALARM);
forceSmartAlarm.setVisible(false);
@@ -142,6 +149,11 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
if (!supportsHeartRate) {
forceHeartRate.setVisible(true);
}
+ final SwitchPreferenceCompat forceSpO2 = handler.findPreference(PREF_FORCE_ENABLE_SPO2_SUPPORT);
+ forceSpO2.setVisible(false);
+ if (!supportsSpO2) {
+ forceSpO2.setVisible(true);
+ }
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2fee482c0..9a1805359 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2408,6 +2408,8 @@
Force Do Not Disturb support.\nUSE AT YOUR OWN RISK
Force heart rate support
Force enable heart rate support.\nUSE AT YOUR OWN RISK
+ Force SpO2 support
+ Force enable SpO2 support.\nUSE AT YOUR OWN RISK
Ignore wakeup start status
May help with proper sleep detection. Visible immediately in the daily activities view.
Ignore wakeup end status
diff --git a/app/src/main/res/xml/devicesettings_huawei_debug.xml b/app/src/main/res/xml/devicesettings_huawei_debug.xml
index 3edcd2e4e..4aab40627 100644
--- a/app/src/main/res/xml/devicesettings_huawei_debug.xml
+++ b/app/src/main/res/xml/devicesettings_huawei_debug.xml
@@ -55,6 +55,14 @@
android:title="@string/pref_force_enable_heartrate_support"
android:summary="@string/pref_force_enable_heartrate_support_summary" />
+
+