Forerunner Watch Faces

You can customize the watch face information and appearance. From the watch face, hold UP. Select Watch Face. Select UP or DOWN to preview the watch face options. Select Accent Color to change the accent color (optional). Press and hold this button: when the FR235 is displaying the watch face on its screen, until the Options menu comes up, from which you then select Clock Options and then Watch Face under that. Apologies everyone, I wasn't aware I could actually mess with those options from the watch, thought it all had to be done via the app. Forerunner® 45/45 Plus. Get Help Garmin Support Center. You can customize the appearance of the watch face by selecting the layout and accent. Customize with free watch faces, apps and more from our Connect IQ™ store You Do It All, Now Your Watch Can Too Be a better athlete today than you were yesterday with Forerunner 735XT. Brahmastra Aerospace Systems. Jun 2020 - May 20211 year. Chennai, Tamil Nadu. Brahmastra Aerospace Systems is a start-up committed with a team of innovators, enthusiasts, and thinkers established in 2019 in Chennai. We came up together with the intention of providing STEM Education based on Aeronautics & Astronautics to students of various.

Time is an illusion. (Albert Einstein)
Lunchtime – doubly so. (Douglas Adams)

There’s a good chance you’re wearing a watch on your wrist right now, and if you’re not wearing a horologically significant or sentimental time piece you’re probably wearing a smart watch, and if you’re wearing a smart watch it should be a Garmin watch (they did NOT pay me to say this)

Garmin watches are awesome. They are rugged, they hold the battery charge for days, some models even weeks, and they are highly customizable.
It is that last aspect that we’re going to concentrate on in this tutorial.

Garmin has an equivalent of Apple App Store (good name) or Google Play Store (horrible name), and it’s called Garmin Connect IQ Store (I’d like to be in that naming meeting)

App development for Garmin watches is done using proprietary language “Monkey C” (https://developer.garmin.com/connect-iq/monkey-c/) (probably named in that same meeting after everyone got drunk)

…yeah, really! What’s next? Monkey Do?

So, with that in mind, we’re going to design and implement a watch dial in monkey-c and deploy it to Garmin’s IQ store.

I wanted the watch face to look like Casio G-Shock because they are awesome, particularly G-LIDE model (GBX100)

I wanted the dial to show time, date, weather, pulse, steps, calories, distance walked today, and battery charge. I didn’t want to ask users for any extra permissions and I wanted this app to be as easy on the battery as possible, without any background processing.

I went on to design the dial on a piece of paper as I’ve heard that designing upfront makes the whole development process easier, and so I went through a couple of iterations.

Forerunner

Nothing exciting to talk about here, I just followed Garmin’s getting started guide: https://developer.garmin.com/connect-iq/connect-iq-basics/getting-started/
In short, you’ll need to download and install the Connect IQ SDK, sign up for dev account, install Eclipse (yuck) if you don’t already have one, install Connect IQ Eclipse plug-in, which turns Eclipse into a Connect IQ development environment, and generate dev key.
The installation will be somewhat painful if it’s your first development endeavor, but nothing like installation of an IBM Websphere Portal.

After all installation is done you can go ahead and create your own sample app to make sure everything works.

Follow this: https://developer.garmin.com/connect-iq/connect-iq-basics/your-first-app/
Once all steps are completed, run the app and this is what you’ll see in a simulator:

If you followed the instructions to the letter then you’ve probably installed command line tools, which give you wonderful commands like:

// Compile the executable:
> monkeyc -d fenix5plus -f /path/to/monkey.jungle -o project_name.prg -y /path/to/Dev_Key

// Run in the simulator
> monkeydo myApp.prg fenix5plus

I’m starting to really like these Garmin folks, they seem to have a sense of humor.

Source code of the sample app looks very much like Android source code, with classes extending Views, xml layouts and referencing elements by id:

Again, the way layout works is very similar to Android, the watch face layout is located in /resources/layouts/layout.xml

It looks like Garmin is running a highly customized version of Android, so Android devs will feel right at home here… if you want a flashback to the early days of Android.

Unlike working in Android Studio however, working in Eclipse feels like I’m back in early 2000s. It’s clunky and unnatural and unintuitive. Something that only takes a few seconds to implement in Android Studio now takes forever in Eclipse. This makes you really appreciate JetBrains’ IDEs (They did not pay me to say this.)

When laying out the elements on the watch face you have to remember that the coordinate system is based on a square screen, so the corners are beyond the round viewport of the watch. So, if you place something in the corners they will not show up, you’ll have to experiment with coordinates, like in the layout I have below:

You can define coordinates in pixels or percent.

I also wanted to display a grid of gray lines, like on Casio watches, this is taken care of by:

<drawable id=“scaffolding”></drawable> which references scaffolding.xml:

At this point all data except for the time is hardcoded. Time to connect it to the real data.

For getting the data on the screen we’ll use

Toybox.ActivityMonitor gives us heart rate, steps, burned calories and distance walked/ran since midnight. The distance is in cm, so we’ll have to convert it to miles or km based on system settings

Toybox.System gives us clock and battery

Toybox.Weather gives us weather

Toybox.Application gives us access to properties that can be set by the user in the app settings.

So now, once we have a layout defined, we can get the element in code by

and set its value, for example for the hours and minutes:

There is a way to create a watch face that would accept users’ custom settings, like for colors, or optional fields on the screen. For this you’ll define resources/settings/settings.xml

and resources/settings/properties.xml

To run settings screen for the simulator, use Eclipse’s ConnectIQ tab, then select App Settings Editor.

One of the main struggles I had was the battery icon. I wanted it to be a proper graph, indicating a real-time charge level. The problem is all Garmin devices have different resolutions, and there’s no notion of DIP in Garmin (Density Independent Pixels) So, I had to create my own DIP calculation:

Please don’t laugh, my brain still hurts.

Oh yeah, and be prepared to draw or modify icons pixel by pixel, and with specific colors Garmin recognizes. I used Gimp, it’s free and it’s awesome:

Anyway, after all said and done here’s what I got:

You can find it in Garmin’s app store here: https://apps.garmin.com/en-US/apps/c2f2b648-ab65-4329-991a-b9f240bcb92f

It’s great to be able to develop watch faces and apps for smart watches, and I feel that Garmin is making the whole process easy for new developers, especially if you have some Android background.
The only suggestion I have is to make the dev environment a little friendlier and documentation more organized. Working with Eclipse and Garmin’s plugin is a huge step back when compared to Android Studio and Intelli-J that it’s based on.

Working with current dev documentation can be frustrating and you’ll end up hunting for a simple answer forever.

Also, there’s a great forum for Garmin devs: https://forums.garmin.com/developer/connect-iq/

You’ll meet a lot of good folks there. They have changed my perspective on Garmin development from negative to positive over the course of 3 weeks.

Developers and the engaging and appreciative users are what made me enjoy the whole process.

Happy coding!

Joe Berger

References:

Special thanks to Joshua Miller for inspiration: https://medium.com/@JoshuaTheMiller/making-a-watchface-for-garmin-devices-8c3ce28cae08

Faces

Time is an illusion. (Albert Einstein)
Lunchtime – doubly so. (Douglas Adams)

There’s a good chance you’re wearing a watch on your wrist right now, and if you’re not wearing a horologically significant or sentimental time piece you’re probably wearing a smart watch, and if you’re wearing a smart watch it should be a Garmin watch (they did NOT pay me to say this)

Watch

Garmin watches are awesome. They are rugged, they hold the battery charge for days, some models even weeks, and they are highly customizable.
It is that last aspect that we’re going to concentrate on in this tutorial.

Garmin Forerunner 45 App

Garmin has an equivalent of Apple App Store (good name) or Google Play Store (horrible name), and it’s called Garmin Connect IQ Store (I’d like to be in that naming meeting)

App development for Garmin watches is done using proprietary language “Monkey C” (https://developer.garmin.com/connect-iq/monkey-c/) (probably named in that same meeting after everyone got drunk)

…yeah, really! What’s next? Monkey Do?

So, with that in mind, we’re going to design and implement a watch dial in monkey-c and deploy it to Garmin’s IQ store.

I wanted the watch face to look like Casio G-Shock because they are awesome, particularly G-LIDE model (GBX100)

I wanted the dial to show time, date, weather, pulse, steps, calories, distance walked today, and battery charge. I didn’t want to ask users for any extra permissions and I wanted this app to be as easy on the battery as possible, without any background processing.

I went on to design the dial on a piece of paper as I’ve heard that designing upfront makes the whole development process easier, and so I went through a couple of iterations.

Nothing exciting to talk about here, I just followed Garmin’s getting started guide: https://developer.garmin.com/connect-iq/connect-iq-basics/getting-started/
In short, you’ll need to download and install the Connect IQ SDK, sign up for dev account, install Eclipse (yuck) if you don’t already have one, install Connect IQ Eclipse plug-in, which turns Eclipse into a Connect IQ development environment, and generate dev key.
The installation will be somewhat painful if it’s your first development endeavor, but nothing like installation of an IBM Websphere Portal.

After all installation is done you can go ahead and create your own sample app to make sure everything works.

Follow this: https://developer.garmin.com/connect-iq/connect-iq-basics/your-first-app/
Once all steps are completed, run the app and this is what you’ll see in a simulator:

If you followed the instructions to the letter then you’ve probably installed command line tools, which give you wonderful commands like:

// Compile the executable:
> monkeyc -d fenix5plus -f /path/to/monkey.jungle -o project_name.prg -y /path/to/Dev_Key

// Run in the simulator
> monkeydo myApp.prg fenix5plus

I’m starting to really like these Garmin folks, they seem to have a sense of humor.

Source code of the sample app looks very much like Android source code, with classes extending Views, xml layouts and referencing elements by id:

Again, the way layout works is very similar to Android, the watch face layout is located in /resources/layouts/layout.xml

It looks like Garmin is running a highly customized version of Android, so Android devs will feel right at home here… if you want a flashback to the early days of Android.

Unlike working in Android Studio however, working in Eclipse feels like I’m back in early 2000s. It’s clunky and unnatural and unintuitive. Something that only takes a few seconds to implement in Android Studio now takes forever in Eclipse. This makes you really appreciate JetBrains’ IDEs (They did not pay me to say this.)

When laying out the elements on the watch face you have to remember that the coordinate system is based on a square screen, so the corners are beyond the round viewport of the watch. So, if you place something in the corners they will not show up, you’ll have to experiment with coordinates, like in the layout I have below:

You can define coordinates in pixels or percent.

I also wanted to display a grid of gray lines, like on Casio watches, this is taken care of by:

<drawable id=“scaffolding”></drawable> which references scaffolding.xml:

At this point all data except for the time is hardcoded. Time to connect it to the real data.

For getting the data on the screen we’ll use

Toybox.ActivityMonitor gives us heart rate, steps, burned calories and distance walked/ran since midnight. The distance is in cm, so we’ll have to convert it to miles or km based on system settings

Toybox.System gives us clock and battery

Toybox.Weather gives us weather

Toybox.Application gives us access to properties that can be set by the user in the app settings.

So now, once we have a layout defined, we can get the element in code by

and set its value, for example for the hours and minutes:

There is a way to create a watch face that would accept users’ custom settings, like for colors, or optional fields on the screen. For this you’ll define resources/settings/settings.xml

Garmin 45 Gps

and resources/settings/properties.xml

To run settings screen for the simulator, use Eclipse’s ConnectIQ tab, then select App Settings Editor.

Forerunner 45 reviews

One of the main struggles I had was the battery icon. I wanted it to be a proper graph, indicating a real-time charge level. The problem is all Garmin devices have different resolutions, and there’s no notion of DIP in Garmin (Density Independent Pixels) So, I had to create my own DIP calculation:

Please don’t laugh, my brain still hurts.

Oh yeah, and be prepared to draw or modify icons pixel by pixel, and with specific colors Garmin recognizes. I used Gimp, it’s free and it’s awesome:

Anyway, after all said and done here’s what I got:

Forerunner 35 Watch Faces

You can find it in Garmin’s app store here: https://apps.garmin.com/en-US/apps/c2f2b648-ab65-4329-991a-b9f240bcb92f

It’s great to be able to develop watch faces and apps for smart watches, and I feel that Garmin is making the whole process easy for new developers, especially if you have some Android background.
The only suggestion I have is to make the dev environment a little friendlier and documentation more organized. Working with Eclipse and Garmin’s plugin is a huge step back when compared to Android Studio and Intelli-J that it’s based on.

Working with current dev documentation can be frustrating and you’ll end up hunting for a simple answer forever.

Also, there’s a great forum for Garmin devs: https://forums.garmin.com/developer/connect-iq/

Forerunner 735xt Watch Faces

You’ll meet a lot of good folks there. They have changed my perspective on Garmin development from negative to positive over the course of 3 weeks.

Developers and the engaging and appreciative users are what made me enjoy the whole process.

Happy coding!

Joe Berger

Garmin 4runner 45

References:

Garmin 45 Forerunner Review

Special thanks to Joshua Miller for inspiration: https://medium.com/@JoshuaTheMiller/making-a-watchface-for-garmin-devices-8c3ce28cae08