Watchface: Forerunner 645 watchface

This watchface was created by request and is meant to mimic the stock Forerunner 645 watchface.

Screenshots:





Currently the features are...

Customizable:

- Foreground, background and main tint
- Show seconds in 1hz mode (if user chooses to)
- Customizable userfields (1 main field, 2 extra fields)
- Battery as icon or percentage text
- System icons can be shown or hidden (bluetooth, nodisturb, notifications, etc)

Values available for the customizable user fields:
- Steps
- Calories
- Distance
- Sunset/Sunrise (or automatically show whichever one is first)
- Heartrate (buggy?)

Still in development and open to suggestions and requests :)

Downloadable in the app store:

https://apps.garmin.com/en-US/apps/e...1e689bc5c75a#0

Changelog:

-3.0 .. 3.21

Fixed possible crash (every so many hours)
Fixed issue where stored hr was displayed when watch was not worn (now shows -- )
Reverted to original layout solution, which I believe is faster and uses less memory... Please let me know what I messed up now ;)
Fixed issues with seconds and hour not showing properly
Added option to hide leading 0 in single digit hours
Added option to include month name in date (only looks ok with the normal field font)
Fixed redraw issue with custom fields (changing between none, fields with icons and fields without)
Cleared up naming of fields in settings
Fixed HR refresh issues (messing up when hr went from 100+ to less then 100)
Fixed bug where hours always showed 00
Layout now done in a completely different way, using a bit more memory but less cpu (hopefully improving battery life). Also this might fix some issues of time not updating.

-2.0 .. 2.21

Fixed bugs with progress bar not being displayed
Move bar and progress bar can be shown (top or bottom) and colors can be customized, shown as arcs and for semi-round as lines
Option to use larger font for user-fields, results depend on watch and fields (it uses a one step larger system font, implementation varies by device). Values can get too big for fields now though.
Added option to hide icons other then battery icon (such as was the original behavior). To only show battery select icons as a custom field entry and check the 'Show battery (icon) only' checkbox
Fixed Sunset/Sunrise bug, it now should display the next day's sunrise if that one is the next one up.
All fields are user customizable now (From top to bottom: Top-left, Top-middle, Main, Bottom-middle and Bottom-left). This means icons are now a custom field instead of a option switching them on or off
Added 'altitude' and 'floors climbed' as optional fields
Seconds can be hidden completely (if not hidden they will be shown in 1hz mode when supported or when not in low power mode otherwise)

-1.0 .. 1.71

Various 1hz improvements (efficiency and bug fixing)
Various font and layout improvements
Bug fix with icons being drawn as squares
Added 2 more custom data fields, one above the date, one below the icons...
Added Heart Rate as option for datafield for supported devices
Added sunrise, sunset, sunrise/sunset (whichever one comes first) as custom datafield options
Added setting to always show seconds (when 1hz is supported) or only in active mode
When None is selected as custom field also the 'border' (surrounding line) is hidden...
  • I now notice that 1hz mode isn't working properly but unfortunately I don't have access to me computer until monday :/
  • FlipStone - either in the thread where there's the post about using Activity.Info for HR, or one of the threads about 1hz HR specifically, there are a couple things to note:

    - Activity.Info.currentHeartRate will usually be null on f5x, D2 Charlie. Descent, and similar, due to a difference with the display process. f5, f5s, va3, etc will work fine though.

    - HR doesn't usually change every second - it might be the same for a few seconds in a row. So remember what is currently displayed, and if it hasn't changed, don't do anything for it in onPartialUpdate(), as that can really help the power budget. (you might only update it 15 times a minute instead of 60 times a minute.)
  • Thanks for the comments jim_m_58!

    I already check for null with the alternative method and if necessary use the old fashioned approuch. The 1hz issue was with the seconds (believe I tried 2 setclips and/or realigned the seconds a bit without updating setclip...) but is fixed now.

    Good point about checking if hr is actually changed... But at the moment I think I'll just let it be. The hr can be set in 3 different fields and it's a bit tricky to find the safe clipping triangle that at the moment I'd rather let it be as it is.
  • Understand that with 1hz, you not only was to avoid exceeding the power budget, but as the code is run every second, you want to reduce what's run. Updating the display is pretty expensive, and if you can avoid it, you want to. With seconds, you don't have much choice as they change every second, but for other things, (like hr) "only if it changes" helps with battery consumption.
  • Thanks, good point! Just reuploaded it taking the previous hr into account and only updating when necessary....

    Would be interesting to test the impact of things on battery (in general) :) Might add some debug lines where I just write this to the log every 10 minutes or so to monitor this a bit for myself. Also to see how worthwhile it is to optimize code and things for battery usage.
  • Ehm, just thought it might be handy to update here so this post just contains a changelog from all the releases and from now on when I release a new version I'll just add it in a post here :)


    Changelog:

    -2.0

    All fields are user customizable now (From top to bottom: Top-left, Top-middle, Main, Bottom-middle and Bottom-left). This means icons are now a custom field instead of a option switching them on or off

    Added 'altitude' and 'floors climbed' as optional fields

    Seconds can be hidden completely (if not hidden they will be shown in 1hz mode when supported or when not in low power mode otherwise)

    Slightly more efficient 1hz code exectution and source/memory footprint

    Date now in bold font (properly matching the font on the FR645)

    Tweaked lines around main custom field a bit to better match the FR645

    -1.71

    More efficient 1hz updating of hr (more efficient code and only when actually changed, thanks jim_m_58 )

    -1.7

    Adjust battery percentage font, allowing for better alignmet to rest of UI

    A bit more spacing between custom (top-left and bottom-right) fields and icons/date

    HR now supports 1hz mode for those devices supporting it (only when a single custom field is set as HR field, when multiple fields are set to HR (why?!) only the last one is 1hz

    Removed some debug lines and made code a bit more efficient

    -1.61

    Fixed seconds 1hz redraw bug

    Use bit thinner font for seconds and realign a bit better

    -1.6

    Hopefully fixed bug where sundown/sunset was shown even when it was in the past (using the sunset/sundown field)

    Added another way to retrieve HeartRate hoping to get it more up to date (for the devices supporting it)

    Aligned the seconds a bit better with the right side of the hour/minutes digits

    Fixed possible bug where 1hz mode could cause a time out when redrawing seconds

    -1.51

    Fixed bug when sunup/sundown was selected for one of the datafields

    -1.5

    Adjusted way icons are drawn, hopefully fixing the issue of icons not showing (showing as squares) on some watches (such as Fenix3)

    Cleaned code up a bit...

    -1.4

    Added 2 more custom data fields, one above the date, one below the icons...

    Added Heart Rate as option for datafield (for supported devices,

    D2 Bravo Titanium
    fenix 3 HR
    fenix 5/S/X
    fenix Chronos
    Forerunner 235
    Forerunner 735XT
    Forerunner 935
    vivoactive HR

    -1.31

    Better alignment of battery icon and icons in general, now all on one line even when battery as percentage is selected

    -1.3

    Fixed possible watchface crashes! Please let me know if this fixes it...

    -1.22

    Fixed time display bug

    Added debug lines to determine workflow (for seen crashes)

    -1.21

    Removed some unused settings and cleaned up code a bit...

    -1.2

    Added sunrise, sunset, sunrise/sunset (whichever one comes first) as custom datafield options

    Added setting to always show seconds (when 1hz is supported) or only in active mode

    When None is selected as custom field also the 'border' (surrounding line) is hidden...

    -1.1

    Adjusted fonts, layout and sizes a bit to resemble FR645 watchface a bit more (digits are now more fixed into place and applied smoothing to fonts). Fonts now also more specific to device and resolution
  • Former Member
    Former Member over 7 years ago
    Ehm, just thought it might be handy to update here so this post just contains a changelog from all the releases and from now on when I release a new version I'll just add it in a post here :)


    Ha, good idea ;). I do have a small tip for you though: I wouldn't put every little detail for every minor bugfix and every pixel tweak in your public changelog. I do keep my private changelog as elaborate as this, but when publishing, I try to think of what a user would be interested to know, and also sometimes reformulate things to be a bit less technical. I think that may help to let the truly valuable additions / changes to your app stand out more.

    Cheers,
    Matt
  • Ha, good idea ;). I do have a small tip for you though: I wouldn't put every little detail for every minor bugfix and every pixel tweak in your public changelog. I do keep my private changelog as elaborate as this, but when publishing, I try to think of what a user would be interested to know, and also sometimes reformulate things to be a bit less technical. I think that may help to let the truly valuable additions / changes to your app stand out more.

    Cheers,
    Matt


    Haha, fair enough :)

    On the other hand most things have been reported or asked for by users so I also think it's handy to name those in the changelog so they now they've been addressed. And I'm also kind of a nerd myself, I like to know what actually has been changed instead of seeing those 'bugfixes and performance improvements' changelogs where they might have just released an identical version as a new one as there's nothing to check anyway ;)

    Thanks for the tip/feedback though, will keep it in mind (and I'm guessing there won't be as much changing anymore anyhow.... I hope)
  • v2.2 released

    * Added movebar and progress bar, colors can be chosen by user as well as position (top, bottom or none)
    * Added option for increased font size for user fields (as requested by a few users). Simply applies a one step larger system font, experience and results vary per device ;)
  • Flipstone, are you running the latest beta on the 5x? It seems like either the bata or this watch face (maybe the combo) are increasing battery use a substantial amount. Yesterday after my run, i noticed i was down to 24%, today when I wake up, i'm at 14%. 10% a day while not using an activity seems high to me. The watch face is configured with seconds showing and the sunset/sunrise field. I know battery is really hard to nail down, but are you seeing this as well?