2pi Pulse Halo Analog
· v1.1.10
About
A minimal + fast analog watchface that draws your heartrate history as a radial chart.
Data is beautiful. Turn your pulse data into personal art on your watchface. You’re the artist.
A reminder that time is not a straight line. But a dimension with no beginning and no end.
As the chart sweeps around the clock, new data erases old data. Nothing is forever & tomorrow’s a new adventure.
The watchface is powered by your pulse. It comes to life when you put it on. When your pulse stops, it stops too.
FEATURES
- Low power & optimized (under 1ms per update & 0.1% battery per hour on fenix6pro)
- As responsive as a stock watchface when pressing buttons or switching screens. No sacrificing function for form.
- 12-hour radial heart chart that shows both average & max.
- Option to draw the heart chart's bars inward or outward.
- 3 text data fields (Default layout: date, heart rate, next Sunrise/Sunset)
- Up to 4 "progress" data triangles that rotate clockwise (E.g., daily steps %, battery %, body battery %, move bar %)
DESIGN DETAILS
- Smartwatches aren’t physical watches. If we can draw anything on a smartwatch, why copy a physical analog face only to look worse? What’s a better design if we’re free to do anything?
- Classic analog hands suck - they bisect the entire face & waste prime real estate in the center. Physical hands must meet in the middle but digital hands don’t.
- Physical watches are 3-D, so we can peek under hands to read complications. But digital watches are 2-D - hands cover everything as they sweep around the face.
- Static elements like bezel ticks and numbers are a waste - every pixel should have a purpose
- Plus, how to draw text on a round face? This is a tricky design problem. Watch time elements are round but text likes to live in rectangles.
- Example attempts to solve the hybrid face design problem:
* Apple watch: square face allows data fields to be moved to the corners.
* Garmin Crossover: complex dance to move physical hands out of the way.
- This watchface tries a new analog design. It’s a compact presentation on a round face with: analog hands, data scales, text data fields and a radial chart... and has minimum overlapping elements for maximum legibility... while still being zippy and sipping as little power as possible.
- The hour/minute hands occupy a ring region instead of bisecting data elements. Hands can overlap with each other and the radial chart to give an illusion of depth.
- This frees the center for 2 types of data complications: 1) A vertical stack of 3 text data fields. 2) An orbit of 4 data triangles that race clockwise to represent 0-100%. Data triangles stack based on your assigned priority.
- The segments of the radial chart double as bezel ticks for the analog hands.
- I made this analog face because most CIQ analog faces are pretty but lacking something to be a daily driver. They tend to make the watch laggy when switching screens & drain too much battery. It also sucks when analog hands cover data fields.
TECHNICAL DETAILS
- When there are no changes, a cached BufferedBitmap is displayed without any recompute. Updates are incrementally drawn on the BufferedBitmap.
- Sunrise/Sunset time uses the last GPS location. The last location is saved to Application.Storage as a fallback in case no live location is available.
- Anti-burn-in is auto-enabled for AMOLED devices. In Always-On-Display mode, a checkerboard overlay reduces active pixels to 10% and ensures no pixel is on for more than 3 minutes.
PERMISSIONS
- GPS permission needed to get last GPS location for Sunrise/Sunset Time (but GPS is never activated).
- Garmin Connect fitness profile permission needed to get your heart rate range for drawing the radial chart.
- Sensor History permission needed to read body battery and stress level.
NOTE: The watchface auto-refreshes when you change Settings. But if it's asleep, please wake it with the wrist gesture to pick up the latest changes.
What's new
This watchface is fully functional and supports all the features forever. There is no trial period and no expiration date.
But, if you’d like to customize the colors, please leave a review and contact me for an unlock code (click Contact Developer or email me at [email protected]). It might take me some time to reply, but I will reply. Thank you for being patient. Donation is optional but very much appreciated -- it lets me know you value the engineering in a watch face that looks good, runs fast and sips very little battery: https://paypal.me/secretsciencelab
Also check out the Digital version of this watch face: https://apps.garmin.com/en-US/apps/127f8baa-196b-4634-b80f-c1991915eaa6
1.1.10 - Updated to SDK 8.4.1 & added D2Mach2.
1.1.9 - Added Venu 4 & Fenix 8 pro.
1.1.8 - Added Forerunner 570 & 970.
1.1.7 - Added Vivoactive 6, Descent G2 and Approach S50 & rebuilt with latest SDK.
1.1.4 - Added Instinct 3 amoled & rebuild with latest SDK version.
1.1.3 - Fixed digital time overlay on AMOLED devices.
1.1.2 - Added Enduro 3, Fenix E and Fenix 8 & rebuilt with latest SDK version.
1.1.1 - Fixed a bug that made color selections not stick. Sorry!
1.1.0 - Added option to set/use 4 custom colors.
1.0.31 - Fixed crash on some devices.
1.0.30 - Added option to change text datafield color.
1.0.29 - Updated to SDK 7.2.1
1.0.28 - Added "Daily Distance" data field option.
1.0.27 - Added Approach S70, Fenix 7 solar, Descent Mk3, Forerunner 165. Updated to SDK 6.4.2.
1.0.24 - Fixed Garmin bug that gives bad GPS location.
1.0.23 - Added "Calories burned today" data field option.
1.0.22 - Added Vivoactive 5, Venu 3 and Venu 3s
1.0.15
- Added Fenix 7pro and Epix 2pro
- Reduced memory to allow adding more settings
- Added new setting to increase data field font size
1.0.12 - 1.0.14
- Added "phone connection status indicator" to wrist gesture overlay. Phone status shows on the inner triangle of the hour hand.
- Improved readability of gesture overlay.
- Removed unused settings to save memory.
1.0.10 - Added Notification Count data field option
1.0.3 - 1.0.9
- Added option to show auxiliary data on wrist gesture
- Runtime/battery/memory optimizations
1.0.2
- Added option for a "Digital time" text data field
- Added option to turn off individual text data fields