As with all app platforms, the value of Connect IQ is built around the quality and quantity of apps in the system from third-party app developers - developers who have leveraged the Connect IQ technology for innovative solutions. The following is a guest post from the creator of the SkyWatch app - one of the earliest innovations on the platform. If you would like to become a part of the Garmin developer community and make apps for Garmin devices, you can start now by downloading the free SDK.
Reach for the stars! This is a commonly used idiom, but now it’s a real possibility. People worldwide can locate stars, planets, constellations and even satellites simply by reaching for the sky. But how can this be possible?
I'm excited to share my outstanding experience using the Garmin Connect IQ API to develop my SkyWatch app that runs on many Garmin wearables such as the fēnix® 3 HR multisport training watch and the vívoactive® HR GPS smartwatch . In this article, I will introduce Garmin Connect IQ, explain how and why I used it and, finally, I'll share my plans to use the newest version of the Connect IQ SDK to enhance my SkyWatch app even further.
As an ambitious application developer, I often wondered how difficult it would be to modify existing consumer electronic products to do something truly amazing. For example, wouldn't it be neat to have a fitness tracker do something impressive after achieving a specific, customized goal? In most cases, this is not possible because most non-Garmin consumer electronic products run firmware that can't be modified by software developers.
However, this is not a problem anymore. With Connect IQ, it's now possible for outside software developers to access many of the sensors and technologies that exist on many new Garmin consumer products.
What Is Connect IQ?
Garmin created Connect IQ to provide outside software developers the power of extreme customization for new consumer electronic products from Garmin. A developer can create special watch faces, widgets, data fields and even full-blown apps that can be published and distributed for free on the Garmin Connect IQ Store. Anyone with a supporting Garmin product can simply select an interesting Connect IQ app or applet, and then the Garmin Connect™ Mobile app or Garmin Connect™ desktop software will install the Connect IQ app or applet on their Garmin products.
The list of supporting Garmin products is growing rapidly. At first, Connect IQ was only for wearables, but now it seems that Garmin will also be opening up other outdoor handheld products such as the Rino® 755t and Oregon® 750t. This is exciting because it provides even greater possibilities for third-party developers.
At its core, Garmin Connect IQ can be thought of as a lightweight process that runs on top of the native Garmin OS embedded on each supported product. Similar to an external plug-in, Connect IQ gets a time slice from the native Garmin OS to run custom code provided by third-party developers.
In order to keep the Connect IQ process efficient, Connect IQ apps and applets are written and compiled using specially optimized Monkey C from Garmin. This is a specialized object-oriented language that provides easy app development without the need to be concerned with the low-level details of the target device. It’s a dynamic language that is easy to learn and is similar in syntax to Java™, PHP, Ruby or Python™.
Writing Connect IQ apps and applets is simple. Garmin created a custom plugin for the Eclipse IDE, with a product simulator, that allows developers to create and test apps and applets without needing the target device. Garmin also provides excellent API documentation that is accessible from within the Eclipse IDE, a large collection of sample code and even a convenient wizard to get developers started. The latest Garmin Connect IQ SDK is version 2.
The Connect IQ overview page is a great place for developers to get started:
My Experience Using Connect IQ
You may have noticed from my bio that I work for Garmin as a product architect. However, my initial interest and involvement with Connect IQ was simply as a third-party developer. I first became aware of Connect IQ when the first SDK was launched publicly in fall 2014. Garmin encouraged all their associates to start using Connect IQ in their spare time by offering an associate app challenge, which I gladly accepted.
As an innovator, I was anxious to create an app that would demonstrate the unique capabilities of the Garmin wearable devices. I especially wanted to exploit the fact that the Garmin fēnix 3 and vívoactive devices have an embedded GPS sensor, accelerometer, compass and incredible battery life. I also like that they are rugged and water-resistant. No other non-Garmin wearable devices have these capabilities, so I was excited to get started on a really unique watch app.
You may have also noticed that I co-founded a mobile app software development company named Terminal Eleven, LLC. We created a popular stargazing app for Apple® and Android™ named SkyView® - Explore the Universe that uses augmented reality (AR) to make stargazing fun and simple for everyone, not just astronomers. By simply pointing your mobile device towards the sky, this app guides people to stars, galaxies, constellations, planets and even satellites. This app has done very well, and our development of the app started out simply as a hobby.
With Garmin Connect IQ, I suddenly had the ability to bring a similar stargazing experience to Garmin wearables. My vision was to point my watch toward the sky to help locate the popular stars, constellations and planets. At a minimum, this required the wearable have a GPS, compass and accelerometer.
The idea sounded good, but there were new challenges I hadn't considered at first. For example, these wearable target devices are not smartphones and do not have large amounts of RAM or processing time to share with Connect IQ apps and applets. To calculate and graphically present something so complex — the exact position of a selected sky object at any given time, from any geographic location around the world and relative to where your device is actually aiming — is not simple to accomplish using only about 64K RAM.