Get step count from Activity Monitor on Watch Face to update faster than once every minute?

Hi all,

I'm developing a WatchFace that gets the current step count using the Activity Monitor: https://developer.garmin.com/connect-iq/api-docs/Toybox/ActivityMonitor/Info.html. In the simulator, i'm able to access the data every few seconds and get the updated count, but on the actual watch (a Forerunner 55) it seems it only updates every minute the count on the monitor. So, on the watch even though the data is requested a few times per minute, the actual count is only updated each minute. Does anyone know if this can be set to update faster?

  • What do you mean "even though the data is requested a few times per minute"? How?

    Leave the step count for a second, and try to display the seconds instead of the number of steps. Are you able to display it for more than 8 seconds?

  • Sorry, that was indeed not clear :). I am able to update the clock time, I'm now doing it once every 10 seconds by using the "onPartialUpdate" and tried to either update part of the screen and asking an updated step count (this will not refresh the screen and as such overwrite the seconds field) or to request a screen update from the "onPartialUpdate" and in that update the screen and the step count. With this, I'm able to get the step counts every 10 seconds, but the number received from the Activity Monitor will only update every minute. 

    I noticed a post with a similar issue here: https://forums.garmin.com/developer/connect-iq/f/discussion/237308/showing-the-steps-and-hr-each-second#pifragment-1298=2 ,so it might actually be the hardware that's causing this. Any help is appreciated!

  • I just tested this on fr965 and the BIG EASY watchface. I have the steps displayed. Started to walk, and every 10 seconds I looked at the watch and the steps count was changing as expected.

    My son has an fr55 so I can try when he'll be back, until then you can also try it.

    Note that fr965 is AMOLED and fr55 is MIP, so they behave slightly differently. And it might also depend on settings like gesture, AOD (on AMOLED) so the difference in HW and the system can play a role. But at least if it works for BIG EASY then you'll know it's possible :) If doesn't work, then I would play with all the possible settings (changing only one at a time), maybe it'll enable something and it'll work afterwards. Once it works in that watch face, it'll most probably work in your's as well.

  • Thanks for the suggestion, and good to hear it works on the fr965. I also installed the watch face you suggested and there it seems to be updated once per minute as well. Curious to hear if you'll get a similar result on the fr55 and whether you see any way to still get a faster update rate of step counts.

  • It doesn't work in fr55 as far as I can see. IMHO this is because it's MIP display. Interestingly though when I switched to one of the built-in WF-es where I can display both seconds and steps, there the seconds are updated every second, and the steps also only once a minute.

    I tested one more thing with the fr965: I open Garmin Connect app on the phone and look at the steps. I start to walk, while the watch is on the watchface (no activity started) and I do see the steps updated every second in the phone. When you try the same on fr55, does it also update? Or only when you are in an activity?

  • Thanks for the suggestion and now things become interesting. After a sync with watch to the phone, the steps are updated continuously on the phone (in Garmin Connect). But interestingly, in that case, the steps are also updated on the watch more often. As soon as the phone screen switches off, the updates on the watch also goes back to once per min. And when turning on the screen of the phone again, the faster sync is also happening on the watch again. Any thoughts on what's triggering this faster sync?

  • It doesn't work in fr55 as far as I can see. IMHO this is because it's MIP display

    Not sure I understand the reasoning here. Do you think MIP displays are more limited than AMOLED displays in general (wrt to Garmin watchfaces)? Or perhaps you think the BIG EASY watchface isn't coded properly for MIP displays?

    On the contrary:

    - both MIP and AMOLED watchfaces can update the entire display once per second in "high power mode" (the period of several seconds after you turn your wrist to look at your watch)

    - Only MIP watchfaces can continuously update part of the display once per second in "low power mode" (the period of time which isn't high power mode). Of course, to support continuous updates in low power mode, the app dev has to write special code for MIP watches (using onPartialUpdate). But even if they didn't do this, their watchface would still update just as often for MIP watches as it does for AMOLED watches.

    So if anything, MIP watchfaces should either have the same update capabilities as AMOLED watchfaces (if onPartialUpdate() is not implemented) or MIP watchfaces should have greater update capabilities (if onPartiaUpdate() is implemented).

  • To be clear, the once per second updates work properly for the FR55 using the onPartialUpdate. The problem here is that the number of steps stored in the Activity Monitor seems to be updated only once per minute. But now the interesting case is that when you view the number of steps in Garmin Connect with the watch connected, then the number of steps are updated more often (both Garmin Connect and in my Watch Face). So now the question would be whether I can make sure to update more often the number of steps in my Watch Face, currently read using Activity Monitor, using the connectIQ SDK.

  • Yeah I understand that.

    I just don't understand (or agree with) flocsy's comment that perhaps it doesn't work in fr55 because of the MIP display (as opposed to AMOLED).

    In high power mode, MIP should have the same watchface display update capabilities compared to AMOLED.

    In low power mode, MIP has greater watchface display update capabilities compared to AMOLED.

    Logically, none of that should be relevant to how often steps data is made available to CIQ apps via ActivityMonitor.

    What I have observed with my MIP fr955, using a native watchface:

    - seconds and HR are updated once per second

    - steps are not updated once per second (I didn't wait long enough to see how often they were updated, but I wouldn't be surprised if it was once per minute). However, if I "forced a refresh" by pressing DOWN followed by UP (scrolling to the first glance, then back to the watchface), which likely causes the watchface to be terminated and restarted, the step count would be updated immediately. (I walked continuously while doing this test).

    To me this suggests:

    - per-second (or otherwise frequent) updates to the step count are certainly available to native watchfaces

    - it's possible that native watchfaces purposely won't update the display of the steps value once per second in order to conserve battery life, instead only opting to update things like HR and seconds once per second. This may be similar to how CIQ watchfaces are constrained by onPartialUpdate()'s rules as to how much of the screen they can update in low power mode. However this analogy is imperfect apart as I was also turning my wrist regularly, as to hopefully keep the constantly watchface in high power mode. It's still possible that Garmin did this on purpose to conserve battery, though

    As for how often ActivityMonitor is updated: I did a similar test with a 3rd party CIQ glance that displays steps (among other things). I walked around continously, constantly entering and exiting the glance's main view (by pressing START and BACK). As I did so, I found that the steps value was continuously updated (once every few seconds, likely just as fast as the steps were counted).

    Assuming that the app is using ActivityMonitor to display steps, I think this would prove that step data in ActivityMonitor is refreshed faster than once per minute, on my fr955 (a MIP device). I didn't need to do anything special to trigger faster updates as you did.

    Unfortunately the app I used (My Day Advanced) isn't available for FR55, but it probably doesn't matter since it probably isn't doing anything special other than just reading ActivityMonitor the same as you. If you can find a CIQ app with a glance that also displays steps, you could do the same test, but I don't think it would really be any different than testing with some random watchface that displays steps. (To get around any differences in how often various UI elements are updated, you could simply scroll away from the watchface and back every few seconds, like I did, which should have the effect of terminating and restarting the watchface over and over again)

    I'd probably chalk this up to a weird quirk with fr55.