- Add supportsWorkoutActivityTypesConfiguration() to enable workout settings for devices without display
- Add supportsWorkoutDetectionCategories() to control visibility of workout categories
- Update ZeppOsSettingsCustomizer to hide workout categories preference for devices that don't support it
- Enable workout detection sensitivity configuration for Amazfit Helio Strap
- Workout categories selector is hidden for Helio Strap, only alert and sensitivity settings are shown
This allows the Helio Strap to configure automatic workout detection sensitivity despite having no display.
Changed boundary checks from exclusive [start, end) to inclusive [start, end] to ensure samples occurring exactly at slice boundaries are synced correctly. This fixes the issue where the last sample in the database would never get synced because it was filtered out by the exclusive end boundary check while the sync state advanced to its timestamp.
Affected syncers:
- AbstractTimeSampleSyncer (HRV, SpO2, Weight, etc.)
- StepsSyncer
- HeartRateSyncer
- SleepSyncer
Changed getLastSampleTimestamp() for WORKOUTS to use workout EndTime instead of
StartTime. Previously, using StartTime caused the sync state to advance only to
the start of the last workout, resulting in that workout being re-synced on every
sync run and any new workouts started after it being missed until the next sync.
Now correctly advances to workout end time, ensuring proper incremental sync.
- Add PERMISSION_WRITE_EXERCISE_ROUTE import to HealthConnectPermissionManager
- Include ElevationGainedRecord, PowerRecord, SpeedRecord, and ExerciseRoute permissions in requiredHealthConnectPermissions
- Add WORKOUTS enum to HealthConnectDataType with comprehensive permission mapping
- Handle WORKOUTS branches in HealthConnectUtils when expressions for exhaustiveness
Body Temperature
Skin Temperature
Distance
Exercise
Heart rate
Heart rate variability
Oxygen saturation
Sleep
Steps
Total calories burned
VO2 max
Weight
The feature is configurable via Settings->External Integrations->Health Connect
Based on https://codeberg.org/LLan/Gadgetbridge
Kudos to LLan for the preliminary work!
This change adds filter filters to the calendar sync options:
1. Declined events
2. Canceled events
3. Color Label filtering
4. Focus Time event filtering
5. Working Location event filtering
6. All Day Event filtering
This changes also inverts the menu for teh sync black list so that is
now a white list. The underlying prefs variables have not changed, just
how the interface displays them so existing user settings will carry
over.
The color label filtering is more useful on calendars from Google
Workspace Calendars that actually have named colors. There is no way
that I can find to access the names of the colors to show to the user,
but it can still be useful to tag some events that you don't want synced.
In addition to the color filters, Google Workspace Calendar has extended
parameters called Focus Time and Working Location. Working location
appears as an all day event every day and if you use the Focus Time as a
Calendar block, your calendar may be filled with these events. For my
work calendar these two event types choke out the "real" events, so it
is nice to filter them.