From 07676981b657f5e5a886bcfc70a69604eb69b46e Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 18 Jan 2026 16:46:13 +0000 Subject: [PATCH] Add setting to exclude external HR sensor for SDK 3.2+ - Created properties.xml with excludeExternalHR boolean property (default: false) - Created settings.xml UI for the new setting - Updated strings.xml with setting titles and descriptions - Modified QZCompanionGarminView.mc to read the property and conditionally enable/disable SENSOR_HEARTRATE - For SDK 3.2+: when enabled, only SENSOR_ONBOARD_HEARTRATE is used (SENSOR_HEARTRATE excluded) - For SDK < 3.2: always uses SENSOR_HEARTRATE (onboard not available) --- resources/properties.xml | 3 +++ resources/settings/settings.xml | 5 +++++ resources/strings/strings.xml | 4 ++++ source/QZCompanionGarminView.mc | 12 ++++++++++-- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 resources/properties.xml create mode 100644 resources/settings/settings.xml diff --git a/resources/properties.xml b/resources/properties.xml new file mode 100644 index 0000000..b5c9c04 --- /dev/null +++ b/resources/properties.xml @@ -0,0 +1,3 @@ + + false + diff --git a/resources/settings/settings.xml b/resources/settings/settings.xml new file mode 100644 index 0000000..52740fa --- /dev/null +++ b/resources/settings/settings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/strings/strings.xml b/resources/strings/strings.xml index 240eb51..a885746 100644 --- a/resources/strings/strings.xml +++ b/resources/strings/strings.xml @@ -5,4 +5,8 @@ Item 1 Item 2 + + Settings + Exclude External HR + Disable external heart rate sensor (SENSOR_HEARTRATE) and use only onboard sensor for SDK 3.2+ diff --git a/source/QZCompanionGarminView.mc b/source/QZCompanionGarminView.mc index 91b630e..31ac099 100644 --- a/source/QZCompanionGarminView.mc +++ b/source/QZCompanionGarminView.mc @@ -35,12 +35,20 @@ class QZCompanionGarminView extends WatchUi.View { function initialize() { View.initialize(); var deviceSettings = System.getDeviceSettings().monkeyVersion; + var excludeExternalHR = Application.Properties.getValue("excludeExternalHR"); // Now you can use apiLevel as needed System.println("API Level: " + deviceSettings); + System.println("Exclude External HR: " + excludeExternalHR); if((deviceSettings[0] == 3 && deviceSettings[1] >= 2) || deviceSettings[0] > 3) { - Sensor.setEnabledSensors( [Sensor.SENSOR_ONBOARD_HEARTRATE, Sensor.SENSOR_HEARTRATE, Sensor.SENSOR_FOOTPOD, Sensor.SENSOR_BIKEPOWER, Sensor.SENSOR_BIKECADENCE, Sensor.SENSOR_BIKESPEED] ); + if(excludeExternalHR) { + // Exclude external HR sensor (SENSOR_HEARTRATE), use only onboard + Sensor.setEnabledSensors( [Sensor.SENSOR_ONBOARD_HEARTRATE, Sensor.SENSOR_FOOTPOD, Sensor.SENSOR_BIKEPOWER, Sensor.SENSOR_BIKECADENCE, Sensor.SENSOR_BIKESPEED] ); + } else { + // Include both onboard and external HR sensors + Sensor.setEnabledSensors( [Sensor.SENSOR_ONBOARD_HEARTRATE, Sensor.SENSOR_HEARTRATE, Sensor.SENSOR_FOOTPOD, Sensor.SENSOR_BIKEPOWER, Sensor.SENSOR_BIKECADENCE, Sensor.SENSOR_BIKESPEED] ); + } } else { Sensor.setEnabledSensors( [Sensor.SENSOR_HEARTRATE, Sensor.SENSOR_FOOTPOD, Sensor.SENSOR_BIKEPOWER, Sensor.SENSOR_BIKECADENCE, Sensor.SENSOR_BIKESPEED] ); } @@ -48,7 +56,7 @@ class QZCompanionGarminView extends WatchUi.View { timer = new Timer.Timer(); timer.start(method(:tick), 1000, true); - Communications.registerForPhoneAppMessages(method(:phoneMessageCallback)); + Communications.registerForPhoneAppMessages(method(:phoneMessageCallback)); } // Load your resources here