Watchface: Volumes

*NEW* Check out my watch face, Volumes!




Connect IQ Link: https://apps.garmin.com/apps/9c363ae4-5fee-434d-8c81-9c1dee2b349e

Volumes has:

  • An AMOLED-optimized design that uses minimal pixels to help maximize battery life.
  • Three customizable data fields, supporting all major data types.
  • Tons of color theme options.
  • Tap-to-launch widget/complication support.
  • Customizable time and date formatting.


Give it a try and let me know what you think!

  • In v1.14 I added pulse ox as a data option. My goal was grab whatever value was shown in the pulse ox widget and display it on the watch face. This proved to be pretty challenging. I found that the pulse ox iterator didn't always return values I expected. I often ended up with a null reading when the last pulse ox sample was more than ~30 minutes old. Here's the implementation I went with. It's not perfect, but it matches the reading in the pulse ox widget most of the time. 

    // Initialize variable to hold the iterator for pulse ox samples
    var pulseOxIterator = null;
    
    // Check if device supports SensorHistory and oxygen saturation history
    if ((Toybox has :SensorHistory) && (Toybox.SensorHistory has :getOxygenSaturationHistory)) {
        // Get the latest oxygen saturation sample (only 1 sample to avoid issues with multiple)
        pulseOxIterator = Toybox.SensorHistory.getOxygenSaturationHistory({
            :period => 1, 
            :order => SensorHistory.ORDER_NEWEST_FIRST
        });
    }
    
    // Validate the iterator and the sample data before storing the pulse ox value
    if ((pulseOxIterator != null) && (pulseOxIterator.next() != null) && (pulseOxIterator.next().data != null)) {
        // Store the valid pulse ox sample in persistent storage
        Storage.setValue("pulseOxDataKey", pulseOxIterator.next().data);
    }
    
    // Retrieve the last valid pulse ox sample from storage
    var lastValidPulseOx = Storage.getValue("pulseOxDataKey");

    Let me know if you have a cleaner/nicer/simpler way achieving this. Thanks!