Return to programming
Adventures with the FitBit SDK
A couple of weeks ago I purchased a FitBit Sense after neighbor Grant showed me his. FitBit was having them on deep discounts, probably because of their recent recall problems. Anyway, it turns out that the Developer IDE (Integrated Development Environment) is easy to access and based (mostly) on standard technologies. It’s the “mostly” that caused me hours of frustration. In the end it was the code examples provided by several community members that got me over the obstacles.
My first version was based on sample code from FitBit, using the “messaging” method of transferring settings data from a phone to the watch. That worked well, reliably, and fast for custom colour selections. It doesn’t support setting custom backgrounds, so I grafted in some code provided by forum member “Gondwana”, a developer in Canberra. After days of frustration, I decided to change direction. I started with Gondwana’s (his name is Peter) code for the image settings and added back in the colour selection settings. This is the “file transfer” method. That worked. At least it worked on the simulator and when I side-loaded the watch face in Developer mode. Then I submitted the code to the FitBit developer website, which allows one to re-download it via a private link for testing and review.
The image settings changes worked fine. The colour selections didn’t. I shut everything down and called it a day. The next day I re-downloaded my app, and everything worked! I’ve been emailing Peter, and he confirmed that the file transfers are sometimes a bit flaky. Still, I just submitted the app to the FitBit team for inclusion on the public Gallery website. We’ll see what happens.
For running I’ve used Garmins, TomToms, a Wear OS smartwatch, and now the FitBit. So far it’s by far the nicest looking, compact, and capable of them all. OK, the Fossil is a nice watch, but doesn’t have the fitness and exercise areas worked out as well as FitBit. Now that Google owns both Wear OS and FitBit, we’ll see how things change.
I’ve resisted getting a FitBit for various reasons. The main one is the history. In 2010 a developer in Waterloo by the name of Eric Migicovsky was developing the “InPulse” smartwatch to work with BlackBerrys. I contacted him, offering to show one at the Lotusphere conference to which I was headed. He wasn’t ready, and shortly after abandoned development for the BlackBerry. He moved to California, changed the name to “Pebble”, had what at that time was by far the most lucrative Kickstarter campaign, and built a successful business. I’ve supported both the original model and the “Pebble Time Steel” campaigns on Kickstarter, and was very pleased with both watches.
Pebble’s third Kickstarter campaign was to fund the “Pebble Time 2”, and I subscribed. Again, it brought in millions in pledges. Then Eric sold the company to FitBit and the Kickstarter deposits were refunded. FitBit purchased the intellectual property, but not the watch inventories. FitBit didn’t pay enough to eliminate accumulated debts, so Pebble filed for insolvency in 2016.
When the current FitBit Versa and Sense models came out, I thought “Gee, those look an awful lot like my Pebble!” Display technology has advanced enormously in 6-8 years, and the battery life is still among the best in the business. Even though FitBit didn’t buy the inventory, they clearly took many of the design cues from Pebble. So I’ve always had a bit of a problem with how it all unfolded.
In any case, this has been a valuable learning experience. I haven’t done any coding in a couple of years, and I found it quite rewarding (and challenging!!) to dive back in. Maybe I’ll keep at it and develop the second watch face I have in mind. The first one is digital, and looks like this:
The items displayed are Battery Charge, Heart Rate, Hour (either 12 or 24 hour format depending on user selection), Minute, Day, Date, Steps.
The next one I have in mind will replace the hour and minute values with simple analog pointers. My submission to FitBit specifies that this watch face is “Free'“, but in the product description I invite people who like it to send me money via my PayPal.me link. Who knows… maybe I’ll become a watch face mogul! Stranger things happen.
***** UPDATE! *****
I’ve been thinking of a follow-up to the “Inunnguat” series based on current realities. I don’t have a schedule for posting it, but if you have thoughts I should consider, please let me know.