mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Fix: Hide only all-day HR interval and activity monitoring for devices without display
This commit is contained in:
+12
-3
@@ -36,6 +36,7 @@ import java.util.List;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos.ZeppOsCoordinator;
|
||||
|
||||
public class HeartRateCapability {
|
||||
public enum MeasurementInterval {
|
||||
@@ -95,8 +96,16 @@ public class HeartRateCapability {
|
||||
final ListPreference heartrateAlertLow = handler.findPreference(PREF_HEARTRATE_ALERT_LOW_THRESHOLD);
|
||||
// Newer devices that have low alert threshold can only use it if measurement interval is smart (-1) or 1 minute
|
||||
final boolean hrAlertsNeedSmartOrOne = heartrateAlertActiveHigh != null && heartrateAlertHigh != null && heartrateAlertLow != null && heartrateMeasurementInterval != null;
|
||||
// Devices without display (like Helio Strap) have continuous HR monitoring by default
|
||||
final boolean deviceHasContinuousHr;
|
||||
if (handler.getDevice().getDeviceCoordinator() instanceof ZeppOsCoordinator) {
|
||||
deviceHasContinuousHr = !((ZeppOsCoordinator) handler.getDevice().getDeviceCoordinator()).hasDisplay();
|
||||
} else {
|
||||
deviceHasContinuousHr = false;
|
||||
}
|
||||
if (hrAlertsNeedSmartOrOne) {
|
||||
final boolean hrMonitoringIsSmartOrOne = heartrateMeasurementInterval.getValue().equals("60") ||
|
||||
final boolean hrMonitoringIsSmartOrOne = deviceHasContinuousHr ||
|
||||
heartrateMeasurementInterval.getValue().equals("60") ||
|
||||
heartrateMeasurementInterval.getValue().equals("-1");
|
||||
|
||||
heartrateAlertHigh.setEnabled(hrMonitoringIsSmartOrOne);
|
||||
@@ -132,8 +141,8 @@ public class HeartRateCapability {
|
||||
heartrateAlertEnabled.setEnabled(isMeasurementIntervalEnabled);
|
||||
}
|
||||
if (hrAlertsNeedSmartOrOne) {
|
||||
// Same as above, check if smart or 1 minute
|
||||
final boolean hrMonitoringIsSmartOrOne = newVal.equals("60") || newVal.equals("-1");
|
||||
// Same as above, check if smart or 1 minute (or device has continuous HR)
|
||||
final boolean hrMonitoringIsSmartOrOne = deviceHasContinuousHr || newVal.equals("60") || newVal.equals("-1");
|
||||
|
||||
heartrateAlertActiveHigh.setEnabled(hrMonitoringIsSmartOrOne);
|
||||
heartrateAlertHigh.setEnabled(hrMonitoringIsSmartOrOne);
|
||||
|
||||
+12
-4
@@ -263,11 +263,19 @@ public class ZeppOsSettingsCustomizer extends HuamiSettingsCustomizer {
|
||||
setupGpsPreference(handler, prefs);
|
||||
setupButtonClickPreferences(handler);
|
||||
|
||||
// Hide heart rate monitoring for devices without display like Helio Strap (they have continuous monitoring by default)
|
||||
// For devices without display (like Helio Strap): they have continuous HR monitoring by default
|
||||
// Hide the preferences that can't be changed - the actual values come from the device on connection
|
||||
if (!coordinator.hasDisplay()) {
|
||||
final Preference heartRateMonitoringPref = handler.findPreference(DeviceSettingsPreferenceConst.PREF_SCREEN_HEARTRATE_MONITORING);
|
||||
if (heartRateMonitoringPref != null) {
|
||||
heartRateMonitoringPref.setVisible(false);
|
||||
// Hide the entire "All-day heart rate monitoring" category (contains only the interval preference)
|
||||
final Preference allDayHrCategory = handler.findPreference("pref_key_header_heartrate_allday");
|
||||
if (allDayHrCategory != null) {
|
||||
allDayHrCategory.setVisible(false);
|
||||
}
|
||||
|
||||
// Hide activity monitoring preference
|
||||
final Preference heartRateActivityMonitoring = handler.findPreference(DeviceSettingsPreferenceConst.PREF_HEARTRATE_ACTIVITY_MONITORING);
|
||||
if (heartRateActivityMonitoring != null) {
|
||||
heartRateActivityMonitoring.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user