Developer Blog

Connect IQ 2.3.1 Now Available!

06/09/17 @ 10:00 AM

The wait is over! Connect IQ 2.3 is now available! Here is what’s new:

  • Always Active Watch Faces allow Connect IQ custom watch faces to continuously update every second while maintaining industry leading battery life.This feature is available on fēnix 5/S/X and Forerunner 935.
  • Action Intelligence provides new levels of access to the onboard sensors and allows developers to create metrics for all sorts of activities, like measuring boxing power, tallying tennis racquet swings, rep counting, and more.
  • Background Services opens the ability for Connect IQ apps to periodically operate while the device is idle. These services can communicate over the web, check on sensors, communicate with ANT, and even notify the user of an event.
  • SDK improvements including a new debugger, a new Linux version of the SDK a unit test framework integration with Eclipse, and new additions to the Monkey C language make it easier than ever to develop with Connect IQ.
  • This SDK is the first to support the new Approach S60 Golf Watch.

What are you waiting for? Get started today!

 


Connect IQ Developer Summit 2017 Breakout - Practical App Testing

05/10/17 @ 01:00 PM


In this breakout your friendly neighborhood testers teach you tools for testing Connect IQ apps.


Connect IQ Developer Summit 2017 Breakout - Effective Monkey C

05/10/17 @ 01:00 PM

In this breakout Nick, Brian, and Marianne discuss how to take full advantage of the Monkey C language. There is a good discussion of some of these tips on our forum.


Connect IQ Developer Summit 2017 Breakout - Designing for Garmin Devices

05/10/17 @ 01:00 PM

CIQ Summit Logo
In this breakout you will learn how to design your Connect IQ app from a UX perspective, and how to implement it using the available Connect IQ tools. You can read more after the break.

Read More


Connect IQ Developer Summit 2017 Breakout - Survival of the FIT-test

05/10/17 @ 01:00 PM

In this breakout Robyn and Greg explain the mysteries of the FIT file format, and how you can use Connect IQ to add new metrics and display them on Garmin Connect. For more information on this topic you can read this blog post on Programmable Web.


Connect IQ Developer Award - Best ANT Enabled App - Winner

04/20/17 @ 03:00 PM

Stryd - Stryd

Stryd, a foot-mounted power meter, measures your running efficiency, pinpoints your performance bottleneck, and guides you through personalized cardiovascular and strength training, as well as form improvements, so you can improve your efficiency and run faster. Stryd also provides the power-based training intensity control and race-day pacing you have grown to expect.

Redefine your performance with power-based training by tracking power, improving run form, and letting Stryd guide your performance seamlessly on your watch screen. The Stryd power meter measures your body’s power output in watts, so you can train at the right intensity, pace yourself for optimal race-day performance, and run more efficiently.

Nominees

     

 

XERT Workout Player Stryd MOXY Trek

BaronBiosystems

StrydTeam

MoxyRoger

TrekBicycles

 


Connect IQ Developer Award - Best EDGE App - Winner

04/20/17 @ 03:00 PM

XERT Workout Player - Baron Biosystems

The Xert Workout Player plays Xert’s unique Smart Workouts. Using Garmin Connect Mobile, the Xert Player logs in to Xert Online, obtains your latest Fitness Signature, downloads your selected workout, configures the exact workout interval intensities and durations specific to you and then plays the workout using your power meter and/or smart trainer. With your smart trainer, it will do trainer control. If you have both a power meter and smart trainer, it will automatically do powermatch and trainer calibration on-the-fly. Playing Smart Intervals, it will auto-adjust interval power and duration, reducing/increasing intensity and slowing/accelerating the timer depending on how an interval is executed in real-time. Easily adjust target power or trainer resistance with swipes / up-down clicks. It will learn your cadence preferences and provide indication of when you’re pedaling too fast or too slow. The app also sends telemetry back to Xert Online so you can view your data online via the Xert Remote Player and follow your workout progress.

Nominees

     
XERT Workout Player JOIN Best Bike Split

BaronBiosystems

JOINcycling

BestBikeSplit

 


Connect IQ Developer Award - Best Wearable Workout App - Winner

04/19/17 @ 03:00 PM


Workout Genius - Robinson Milani

Is there a workout not represented on your Garmin device? Workout Genius has you covered. Workout Genius provides lots of data fields that are not available in most of the devices. It allows to set up a great variety of screen layouts, has a virtual partner with variable speed, enables to configure the lap size, sounds, vibrations, alerts, and more. And last but not least, it has a multisport mode that supports triathlon, duathlon, swim-run, and aquathlon. All of this is configurable on your device from the Genius Wrist website.

Nominees

     
Shred Deck Workout Genius Race Screen

devshed42

geniuswrist

dp0750


Connect IQ Developer Award - Best Wearable Smart App - Winner

04/19/17 @ 03:00 PM

dwMap - Marcus Needham

dwMap allows Garmin users to create routes on the dynamic.watch mobile-friendly website as well as import their routes from Strava, MapMyRun, Garmin Connect, Ride with GPS, Bikemap.net, GPX and more. You can then sync your routes to your Connect IQ compatible devices, and navigate them using the map. dwMap runs across most Connect IQ devices and at 300K downloads is very popular with Garmin users.

Nominees

     
dwMap WatchOut! Wallet Note 2 Watch Nightscout CGM Watch

mappicus

WatchOut! Wallet Team

rconradharris

andreas-may

 


Connect IQ Developer Award - Best Watch Face - Winner

04/19/17 @ 12:00 PM

Actiface - Petr Koula

With over 600K downloads, Actiface is by far the most popular app on the Connect IQ store. Customers appreciate its ability to get at a glance the time and a highly configurable dashboard summarizing their health.

Nominees - Best Watch Face

     
Actiface Gear Min No Frills

Petr.Koula

_MASHAKE_

HermoT


The Connect IQ Developer Summit Starts Today

04/19/17 @ 09:00 AM

Summit Logo

The Connect IQ Developer Summit starts today! Over the next two days we’ll be announcing talking about Garmin products, talking to industry leaders, announcing new features, and having a lot of fun. You can follow on the hashtag #ciqsummit17 on Twitter and Instagram.


Connect IQ 2.3.0 Beta Now Available!

04/19/17 @ 07:00 AM

Connect IQ 2.3 beta is now available! The new Connect IQ 2.3 release adds major new features for Connect IQ 2 compatible devices as well as many features for the SDK:

Always Active Watch Faces
Other smart watches turn off their screens to save power and still only get a day of battery life. On the new Fenix 5 family and Forerunner 935, your custom watch faces are always on and update every second while still having industry leading battery life.

Action Intelligence
25 Hz/3-axis accelerometer access, Finite Impulse Response (FIR) and Infinite Impulse Response (IIR) filters allow developers to create new active lifestyle metrics and use cases.

Background Services
Connect IQ apps can now start background services that can do periodic background processing, including communicating with web services, making your smart watch smarter than ever.

SDK Improvements
New Connect IQ debugger, Unit test framework integration with Eclipse, and new additions to the Monkey C language make Connect IQ easier to develop for. Also - SDK for Ubuntu!

Trial Apps - Coming Soon!
Customers download a locked version of your app, and come to you for the key. Bring Garmin customers to your services using Connect IQ. Contact our developer program for details.

We’ll be talking about these features at the Connect IQ Developer Summit. Keep watching the blog for updates.

To get started with the new beta, follow these instructions:

  1. Because we have a beta version of the Connect IQ Plug-in, we encourage developers to download a fresh installation of Eclipse Neon for Java Developers. This separates your beta and production Connect IQ environments.
  2. In the top menu, go to Help > Install New Software
  3. Use the Add… button to add http://developer.garmin.com/downloads/connect-iq/beta/eclipse/
  4. Check the box next to Connect IQ in the list and hit Next
  5. Dependent plug-in modules may need to be downloaded and installed. When this is complete, restart Eclipse to complete the installation.
  6. Use the steps from the Programmers Guide to configure the plug-in
  7. Use Connect IQ > Open SDK Manager to get the latest SDK

You can also download beta firmware for the following devices:

We will update the post as more betas are posted. We’ve been working on this release for a long time and are excited to see what you will create with it. Get started today!


New SDK and the Connect IQ Developer Awards Nominees

03/29/17 @ 02:22 PM

Today we are releasing the Connect IQ 2.2.5 SDK, which adds support for the Forerunner 935 as well as additional bug fixes.

Get the SDK today!

With that out of the way, it’s time to announce… (drum roll)...

Connect IQ Developer Awards

At this year’s Connect IQ Developer Summit, which will be held at Garmin headquarters April 18th - 20th, we will be presenting the first ever Connect IQ Developer Awards that highlight the content from the Connect IQ Developer Community. The apps were nominated by members of the Outdoor, Fitness, and Connect IQ teams. Only apps developed by developers outside of Garmin qualify for the awards. The nominated apps are below:

Best Watch Face

     
Actiface Gear Min No Frills

Petr.Koula

_MASHAKE_

HermoT

Best Wearable Smart App

     
dwMap WatchOut! Wallet Note 2 Watch Nightscout CGM Watch

mappicus

WatchOut! Wallet Team

rconradharris

andreas-may

Best Wearable Workout App

     
Shred Deck Workout Genius Race Screen

devshed42

geniuswrist

dp0750

Best EDGE App

     
XERT Workout Player JOIN Best Bike Split

BaronBiosystems

JOINcycling

BestBikeSplit

Best ANT Enabled App

     

 

XERT Workout Player Stryd MOXY Trek

BaronBiosystems

StrydTeam

MoxyRoger

TrekBicycles

The winners will be announced during the summit. If you cannot make the Summit, visit the blog April 20th to see who won in each category. Congratulations to the nominees!

 


Connect IQ : Important Updates

03/15/17 @ 05:59 PM

There are a few things changing or rolling out in the next few weeks that we’d like all of you to be aware of.

fēnix® Chronos is now a fēnix 5s

If you have started development for the fēnix 5s, you will know while it shares the same screen shape and resolution with the fēnix 3 family, the fonts are bolder to be more readable with the smaller screen. If you take advantage of our resource family system, this causes problems when you create apps for the fēnix 3 family and the fēnix 5s; as now you potentially need to keep two resources

resources-round-218x218/layouts.xml
resources-fenix5s/layouts.xml

In a future fēnix Chronos update, currently in beta, the firmware will shift from being based on the fēnix 3 to being base on the fēnix 5s. For you Chronos readers out there – congratulations, you’re getting a software upgrade! For Connect IQ developers – congratulations, all of the fonts will change to match the 5s! This has an effect on existing fēnix Chronos apps, as well as new development. For example, now you need three resource directories:

resources-round-218x218/layouts.xml
resources-fenix5s/layouts.xml
resources-fenixchronos/layouts.xml

Clearly this is less than ideal. The Connect IQ team is working on an SDK update that will change the fēnix Chronos simulator to match the fēnix 5s fonts, as well as make it easier to support both devices. Our goal is to make adapting your app to the new fēnix 5s as smooth as possible.

Changes to makeWebRequest

Apple introduced App Transport Security (ATS) in iOS 9. From the iOS 9 release notes:

App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. ATS prevents accidental disclosure, provides secure default behavior, and is easy to adopt; it is also on by default in iOS 9 and OS X v10.11. You should adopt ATS as soon as possible, regardless of whether you’re creating a new app or updating an existing one.

If you’re developing a new app, you should use HTTPS exclusively. If you have an existing app, you should use HTTPS as much as you can right now, and create a plan for migrating the rest of your app as soon as possible. In addition, your communication through higher-level APIs needs to be encrypted using TLS version 1.2 with forward secrecy. If you try to make a connection that doesn’t follow this requirement, an error is thrown. If your app needs to make a request to an insecure domain, you have to specify this domain in your app’s Info.plist file.

Up until now, Connect Mobile has allowed makeWebRequest to communicate over HTTP and HTTPS because it defined the NSAllowsArbitraryLoads permission. However, Apple has a declaration that all iOS 10 apps should support ATS by the end of 2017.

In light of this, Connect IQ will require that calls to makeWebRequest communicate only with ATS compliant servers.  In a future update the simulator is now going to check to make sure that all requests are talking to properly secured servers, and we will be removing NSArbitraryContent in an upcoming version of Connect Mobile.

App Store Update

A number of issues causing the app store mistakenly prevent users from downloading an app because it believes their firmware is out of date have been resolved. As long as users sync their device after they complete a software update they should be able to download the latest content. If you continue to see issues, please let us know on the developer forum.


Connect IQ Pro Tip: Custom Fonts Tricks

02/20/17 @ 11:14 AM

This guest post was written by Hermo Terblanche, a Connect IQ developer in South Africa.

Have you ever seen an app in the Connect IQ app store that made you wonder, “That is so cool! How did the developer do that?” In order to draw attention to your app you need to stand out from the rest, by for example applying some really cool font tricks. In this blog post I am going to let you in on some of my secrets from my own Connect IQ creations. Hopefully this will inspire you to create your very own jaw-dropping apps for Garmin Connect IQ devices.

Let’s jump straight into the magic! You’ll need the following tools:

  • BMFont - For exporting fonts to the required format for Connect IQ. You can read more about this in the Programmer’s Guide as well as the UX Guide
  • Graphics editor / Tool - For editing font png files. I prefer to use Photoshop to achieve the desired effects, but they can also be achieved using GIMP

Font Reflection

This technique is really simple and could easily be achieved in one of two ways:

Approach A

For the watch face Summer Sunset, I used a free font called Sunset that I downloaded and exported to a PNG using BMFont.

This font combines each number and its corresponding reflection into a single glyph. This means that when you draw a number, it draws both the number and reflection as a single character.

The benefit of this approach is efficiency: you only need a single font which requires fewer resources and results in a smaller compiled PRG file. Also, your code also runs cheaper as you only need a single statement to draw the number which is more battery friendly. Finally you don’t have to separately manage the positioning of drawing a number’s reflection, making this the simplest approach.  The downside is that you cannot have separate colors for the number and its reflection because the glyph is treated as one atomic character, and only one color can be applied to the glyph as a whole.

To see the skyline behind the time, you first draw the skyline, then you specify a transparent background color for the font and finally draw the time on top of the skyline:

//draw skyline here
..
//load custom font
var font = Ui.loadResource( Rez.Fonts.Sunset );

//set the time's color and draw it
dc.setColor(Gfx.COLOR_DK_GREEN, Gfx.COLOR_TRANSPARENT);
dc.drawText(timeX,timeY, font, timeStr, Gfx.TEXT_JUSTIFY_CENTER);

This approach is the most straightforward and does not need any further image processing of the font once it has been exported using the BMFont tool.

Approach B

The Reflection watch face is a bit more advanced and involves some image processing, but it offers the benefit of specifying a different color for the time and the reflection.

This approach uses two separate fonts. For this I also downloaded a free font and exported it to a PNG using BMFont. I then duplicated the *.PNG and *.FNT files and renamed them to something meaningful so I could easily distinguish between the files of the two different fonts. Using some Photoshop skills I transformed each glyph in the duplicated PNG file to look like a reflected character. It is important to keep in mind with this approach is that it works best with a monospaced font; having constant glyph sizes in both fonts makes it easier to align the normal and reflected time when drawing. Without going into too much detail about the exact image processing steps, here is a basic outline of what to do:

  • For each glyph (one at a time):
    • Use the selection tool to select a glyph
    • Use the transform menu and flip the selection vertically
    • Using the transform menu, either skew or distort the selection to get the desired angle of the character. Keep in mind that you cannot skew too much because you want the reflection of the time to still fit within the screen. In the screenshot above you will notice that the bottom of the reflected “1” touches the screen boundary. A more skewed effect will cause the reflected “1” to be clipped. You have to experiment a few times to get it right. This step is the most challenging, but also the most rewarding one!
    • You have to move the transformed selection to align it alongside other transformed glyphs. This makes it easier to specify the character coordinates in the *.FNT file.
  • Save the png for the reflection font once all glyphs have been transformed.
  • In Photoshop, use the selection tool to find the new x, y coordinates for each transformed glyph, and change the corresponding values in the duplicated *.FNT file.
  • Make sure to point the file property in the duplicated *.FNT file to the duplicated *.PNG (reflected font).
  • In code load your two fonts, and after you’ve drawn the normal time, you draw the same time using the reflection font. For the reflected time, you need to align the characters with the bottom of the normal time’s characters.

Below is an illustration of some of the glyphs from the normal font and their corresponding reflected glyphs in the reflection font.

//load custom font for the normal time
var normalFont = Ui.loadResource( Rez.Fonts.Normal );
//load custom font for the reflected time
var reflectedFont = Ui.loadResource( Rez.Fonts.Reflected );

//set the normal time's color and draw it
dc.setColor(Gfx.COLOR_DK_GREEN, Gfx.COLOR_TRANSPARENT);
dc.drawText(timeX,timeY, normalFont, timeStr, Gfx.TEXT_JUSTIFY_CENTER);

//set the reflected time's color and draw it
dc.setColor(Gfx.COLOR_ORANGE, Gfx.COLOR_TRANSPARENT);
dc.drawText(offsetX,offsetY, reflectedFont, timeStr, Gfx.TEXT_JUSTIFY_CENTER);

Fonts With Two Colors

Connect IQ supports only one color in custom fonts. This is because the font’s PNG is a grayscale image and therefore has only one channel. You cannot create a font to display multiple colors. Below is an illustration of the concept that is not possible within a single font:

But fear not! With some clever tricks it is possible to create the effect of a font that displays multiple colors. The watch face Watch Me displays its time using two colors: white border and blue fill.

The magic behind this trick involves a combination of two fonts with different masks. Below is an illustration of some of the glyphs from the two different font masks. The top image is the font for the border, while the bottom font is for the inner fill. An easy way to remember which is which, is to remember that white is the area that will be drawn onto the screen in a color of your or the user’s choice.

The top mask is the original font that was exported using the BMFont tool. For the bottom mask I created a duplicate of the top mask, and then basically inverted the colors to ensure it will only draw the inner area in a specific color.


//load custom font for the border
var borderFont = Ui.loadResource( Rez.Fonts.Border );
//load custom font for the inner fill
var innerFillFont = Ui.loadResource( Rez.Fonts.InnerFill );

//set the time's border color and draw it
dc.setColor(Gfx.COLOR_DK_GREEN, Gfx.COLOR_TRANSPARENT);
dc.drawText(timeX,timeY, borderFont, timeStr, Gfx.TEXT_JUSTIFY_CENTER);

//set the time's inner fill color and draw it
dc.setColor(Gfx.COLOR_ORANGE, Gfx.COLOR_TRANSPARENT);
dc.drawText(timeX,timeY, innerFillFont, timeStr, Gfx.TEXT_JUSTIFY_CENTER);

Font With a Diagonal Orientation

The idea to write text with an orientation other than horizontal is not something I innovated; I first saw it in another watch face in the store. Being a curious developer I had to try it out myself. The result of this experiment can be seen in my watch face South Africa. The time is displayed diagonal in either an ascending or descending orientation based on a user’s preference. Each orientation is created with its own separate font.

You need to apply a rotation factor to each glyph in your font PNG. Rotating the glyphs will result in glyphs that are slightly bigger than the original. Below is an illustration to get an idea of what the PNG for each font looks like after all glyphs have been rotated:

When drawing text diagonally, you can no longer draw the string as a single entity; otherwise you’ll just end up with a horizontal line of text with tilted characters, similar to what you now see in the above illustration. The real trick is to draw each character individually, but for each character adjust the y and x coordinates appropriately. For descending orientation, you need to increase the y coordinates, and for ascending you need to decrease it. The x coordinate will always increase in both scenarios. The glyphs have to overlap each other in order to create the diagonal effect. This is where a transparent background color does the trick!

The angle of rotation that you would like for your font is all up to you and you can experiment with different degrees of rotation in your graphics editor. In order to know where to draw the next character, you could maintain an array of coordinates. It is a lot easier to manage and draw diagonal text using a monospaced font because any character can be drawn at the same coordinate without causing gaps of varying size between adjacent characters.

//predefined coordinates based on diagonal angle and orientation
var ascCoords = [[21,143],[42,129],[62,119],[73,108],[93,95]];
var descCoords = [[21,34],[42,48],[62,58],[73,69],[93,82]];

//set background color transparent to prevent clipping of characters
dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_TRANSPARENT);        

//string to be drawn
var time = clock.hour.format("d") + ":" + clock.min.format("d");

var coords, font;

//determine the font and coordinates to use based on orientation
if(Orientation == “Descending”){
	coords = descCoords;
	font = Ui.loadResource(Rez.Fonts.fontDesc);
}
else{
	coords = ascCoords;
	font = Ui.loadResource(Rez.Fonts.fontAsc);
}

//draw each character individually
for( var i = 0; i < time.length(); i++ ) {
	var char = time.substring(i,i+1);
	dc.drawText(coords[0], coords[1], font, char, Gfx.TEXT_JUSTIFY_LEFT);
}

Dynamic Color Filling

In my signature watch face NoFrills, I use an easy trick to create a special effect that makes the time fill up with water. It effectively serves as a progress gauge for activity tracking, while at the same time conserves real estate on the screen. Talk about a dual-purpose clock!

You only need a single font for this trick, and best of all: there is no image processing required. Only the power of Connect IQ is enough to achieve this! Again, a monospace font provides the best results and is simpler to work with.

  1. Determine the size and coordinates of the area (rectangle) that the text you would like to draw, will occupy on the screen.
  2. Draw a filled rectangle of this size at the predetermined coordinates. The color of this rectangle should be the color that you would normally have used for the text.
  3. Draw any special effects on top of the filled rectangle, but before you draw the text. In NoFrills’ case, I draw the filled rectangle that represents the water level.
  4. Set the foreground color of your text to transparent and the background color to something else, like the background color of the screen. This effectively creates a mask that clips everything you have drawn in the previous steps.
  5. Now draw your text on top of it all, compile and run it and finally stare in awe at your amazing production!
//load custom font
var font = Ui.loadResource( Rez.Fonts.MyFont );

//draw filled rectangle to represent text’s color
dc.setColor(Gfx.COLOR_WHITE, Gfx.COLOR_WHITE);
dc.fillRectangle(rectX, rectY, width, height);

//draw filled rectangle to represent water level
dc.setColor(Gfx.COLOR_BLUE, Gfx.COLOR_BLUE);
dc.fillRectangle(effectX, effectY, width, effectHeight);

//create and draw the clipping mask
dc.setColor(Gfx.COLOR_TRANSPARENT, Gfx.COLOR_BLACK);
dc.drawText(timeX, timeY, font, timeString, Gfx.TEXT_JUSTIFY_CENTER);

You can find Hermo on Twitter, Facebook, Instagram, and the Connect IQ Developer Forum. See Hermo’s Connect IQ apps in the Connect IQ Store.


Connect IQ - BLE Direct Messaging Updates

02/09/17 @ 04:55 PM


The BLE Direct Messaging link feature of the Connect IQ SDK has received an overhaul with a focus on:

  • Reduced data transfer latency
  • Ability to remotely launch an application on the watch

All wearable devices (except for Epix) support these features as of the Connect IQ 2.2.3 SDK and Android / iOS Mobile 1.3 SDK releases.

Faster Data Transfer

A new lower latency API for direct messaging is now available for watch apps that communicate directly with a phone app via the Connect IQ Mobile SDK. These apps will receive a speed boost once they implement the new registerforPhoneAppMessages API, which is used to receive messages from a phone app. The behavior of this new API should be familiar with users of registerForOAuthMessages, since it shares the same base Message type. If messages are received when no callback is registered with this API, they are saved on the device until the storage limit for messages is reached. Any messages that are saved on the device will be sent to the specified callback after it is specified in registerforPhoneAppMessages. The transmit API is used to send messages directly to a phone app. A connection listener is registered with each transmit to receive the status of the attempted transmission:

//! Register a callback for receiving Phone App messages. The callback will be called
//! once for each message received. If there are messages waiting for the app when this
//! function is called, the callback will immediately be called once for each
//! waiting message.
//! @param method [Method] The callback with the signature callback(data). Data will be of
//!                        type PhoneAppMessage
//! @since 1.4.0
native function registerForPhoneAppMessages(method);
 
//! Send data across the the BLE link.
//! @param [Object] The object to be sent
//! @param [Dictionary] options Additional transmit options (TBD)
//! @param [ConnectionListener] listener An extension of the
//!       ConnectionListener class.
function transmit( content, options, listener );
 
//! Listener class for transmit
class ConnectionListener
{
    //! Callback when a communications operation error occurs.
    function onError();
 
    //! Callback when a communications operation completes.
    function onComplete();
}

The existing mailbox API has been deprecated in ConnectIQ 2.2 and registerforPhoneAppMessages should be used instead for the aforementioned performance gains. An example of using both together in practice:

using Toybox.Communications;
    
class Example {
    function initialize() {
        var mailMethod = method(:onMail);
        var phoneMethod = method(:onPhone);
        if(Communications has :registerForPhoneAppMessages) {
            Communications.registerForPhoneAppMessages(phoneMethod);
        } else {
            Communications.setMailboxListener(mailMethod);
        }
    }
  
    ...
  
    // @param [MailboxIterator] mailIter
    function onMail(mailIter) {
        var mail = mailIter.next();
 
        while(mail != null) {
            // Do something with mail
            mail = mailIter.next();
        }
 
        Communications.emptyMailbox();
    }
 
    // @param [PhoneAppMessage] msg
    function onPhone(msg) {
        // Do something with msg.data
    }
}

The setMailboxListener and registerForPhoneAppMessages APIs are mutually exclusive and cannot be used at the same time in an app. If both listeners are registered, the deprecated mailbox listener will not receive any callbacks; messages will only be sent to the registerForPhoneAppMessages listener.

Opening an App on a Watch

The 1.3 updates for both the iOS and Android Mobile SDK’s allow you to prompt the user to open a Connect IQ application on their device. If the user chooses to open the app then it will be immediately opened. Only watch-apps may be launched remotely; launching widgets, data-fields and watch-faces is not supported.

Android

For Android you can use the openApplication API to request the remote launch. A response from the device will be returned to your IQOpenApplicationListener:

connectIQ.openApplication(device, app, new IQOpenApplicationListener() {
 
    @Override
    public void onOpenApplicationResponse(IQDevice device, IQApp app, IQOpenApplicationStatus status) {
        // Handle the response here
    }
 
});

See the Comm sample application included with the Android Mobile SDK for an example implementation.

iOS

For iOS you can use the the openAppRequest: method to request the remote launch:

[[ConnectIQ sharedInstance] openAppRequest:app
                                completion:^(IQSendMessageResult result) {
    switch(result) {
        case IQSendMessageResult_Success: NSLog(@”Popup was displayed”); break;
        case IQSendMessageResult_Failure_PromptNotDisplayed: NSLog(@”Popup was
                displayed”); break;
        case IQSendMessageResult_Failure_AppAlreadyRunning: NSLog(@”Popup was
                displayed”); break;
    }
}];

See the ExampleApp sample application included with the iOS Mobile SDK for an example implementation.

What’s Next?

Both of the samples included with the Android / iOS Mobile SDK’s have been updated to support remotely launching Comm sample from the Connect IQ SDK, which also now supports new registerForPhoneAppMessages API for faster communication. Get the SDK’s today to start playing with the new features!


Connect IQ Top Apps: Jan 2017

02/03/17 @ 08:31 AM

We are trying out a new thing where we publish the most popular apps of the month. Note that this list is meant to promote your hard work, and removes Garmin apps, pre-loaded apps, and featured apps from the list. The “Buzzed” column includes apps that people found via social media.

           
Place Watch Face Data Field Widget App Buzzed
First

ActiFace

Single Run Field

Battery Meter

dwMap

Fenix

Second

GearMin

Heart Rate Zones Chart

Compass G2

Maps r.485

Maps r.485

Third

No Frills

Race Screen

Position

Cycling App Professional

7-Minute Workout


Connect IQ 2.2.4 Now Available!

02/01/17 @ 11:45 AM

Connect IQ 2.2.4 is now available! The big changed items are:

  • Fixed a compiler bug where launcher-icon resources could not be properly overridden using device families.
  • Added support for APAC Fenix5 devices
  • Updated minimum firmware versions for the vivoactive HR

Download the SDK today!


From One Platform to Another : Tales of a Pebble Refugee

01/25/17 @ 03:15 PM

Happy
Today’s post was written by Franco Trimboli, an Australian developer who has published a number of apps for the Pebble platform. He’s recently begun developing apps for Connect IQ and has written this guest post about his experiences.

For many, the Pebble was the first smartwatch they would own. With all the fanfare of a record-breaking Kickstarter campaign, the original Pebble opened up a world of notifications - right there on your wrist. And of course, custom apps. Most developers, including me, jumped at the opportunity to be part of this new community of user friendly, wearable computing.

Fast forward to the present, and sadly Pebble is no more. The health features and long battery life had me keen on replacing my Pebble with something similar.

Being a wearable tech nut, I purchased a Garmin fēnix® 3 right around the same time as my Pebble Time. Like it’s namesake, the fēnix emerged from the dark corner of my drawer and became my daily watch. Now while I love my fēnix 3, other hardware in Garmin’s wheelhouse delivers a more Pebble-esque experience; I recently played around with a vívoactive® HR and it’s like the love child of a Pebble Time and Pebble 2 with an always on color touch screen.

Previously, my reluctance to wear the Garmin rather than the Pebble came from my initial experience with Garmin’s back then embryonic ecosystem. Well, I’m happy to say much has changed since. I was immediately surprised with how far Garmin’s ecosystem has evolved. In particular, Garmin’s SDK — Connect IQ (CIQ) — has come a long way. The discovery of Garmin’s Forum, which delivered helpful insights by seasoned CIQ developers, was a turning point for me. It clearly made me understand how rich the Garmin ecosystem is — widgets, data fields, wireless sensors, apps, and of course, watch faces.

The CIQ learning curve isn’t too hard. If you’ve ever built a Pebble watch face — either in C, or Rocky.js — you’ll find the transition relatively straightforward. Monkey C is an OO language, and unlike C on the Pebble, Monkey C runs in it’s own VM and performs it’s own memory management through reference counting. The CIQ dev environment is integrated with Eclipse. However, I’m not a fan — so I tend to code in a shell, just like the Pebble cmdline and QEMU.

If you’re curious, here are some of the watch faces that I’ve built over the past few weeks.

More Similar Than Different

NyanCat
If you’ve developed apps on Pebble’s SDK — or even if you’ve just messed around with a few watch faces — building on Garmin’s CIQ should be a cinch. In this post, I’ve tried to outline a few helpful hints on the similarities and differences of both platforms:

Package.json is now Manifest.xml

Analogous to Pebble’s package.json, the manifest.xml in CIQ provides essential information about your app. At a high-level, it allows you to define the devices, the access privileges, as well as the device capabilities to be supported — it also instructs the run time on the entry point of your your app (think main() on the Pebble).

Battery Life

Garmin’s background is in making wearables for athletes, where long battery life is essential. CIQ devices run in a low power mode most of the time, and return to high power mode when the user wakes up the device with a button tap or gesture. As such, watch faces only (usually) update on minute increments. 

On a Pebble, you have the flexibility of managing the update interval with tick_timer_service_subscribe with the granularity of a second. In CIQ, watch faces implement the onUpdate method to handle display update events from the system. While this seems like a limitation, it makes sense when your objective is to save battery. The good news is that CIQ provides the onExitSleep and onEnterSleep events so that developers can trigger something useful on the screen like a field update or animation. It’s analogous to the accel_tap_service_subscribe event on a Pebble.

Network

Continuing with the theme of battery life, watch faces are limited to certain API features so they can’t do things like retrieve weather or stock data. While this may seem limiting, Garmin’s approach is to use purpose built widgets to deliver weather and news. Widgets in CIQ take us back to Pebble OS 1.0 — where you could flick through different “apps” by scrolling up and down. Widgets are a great way of accessing data without having to bake it all into a watch face or launch an app.

However, CIQ does have some tricks up its sleeve. Widgets or apps can do things like make web requests in ways you’re familiar with — but with less setup and coding. Normally, on the Pebble you would offload this via XMLHttpRequest through pebble-js and then handle the event with events_app_message_register_inbox_received. With CIQ, this is managed neatly in one place with makeWebRequest with an async callback, allowing you to do some interesting things like manage the request payload from within the logic of your app without having to manage code in two different codebases/languages. 

CIQ can also grab, downsample and render an image from the network using makeImageRequest. So you can build cool things, such as grabbing the latest frame from a network security camera, without having to do all the heavy lifting.

Memory

As Pebble apps are built in C, they require careful management of memory. Pebble’s SDK uses functions suffixed with _destroy to do this, ie; to remove a typical screen from memory, you’ll be running bitmap_layer_destroy, gbitmap_destroy, and text_layer_destroy — as a minimum.

As CIQs runtime is reference counted, the Monkey C VM manages most of this for you. Clearing objects usually only requires that you set them to “null”. Also, as an object-oriented language, you gain the advantage of objects, class inheritance, etc. That being said, CIQ has helper methods to keep an eye on the memory ceiling.

While, both Pebble and CIQ support 64kb per watchface, more recent Garmin devices offer up to 128kb of memory for apps.

Resources

Just like on a Pebble, you can define and access custom image bitmaps and fonts. On the Pebble platform, you’d define resources - and their corresponding IDs - within the resources item in package.json. You would then access those resources via their names or handle IDs within your code.

Similarly, CIQ defines resources this way, but within an XML file known as resources.xml. CIQ also allows you to define platform specific resources using separate resource directories - for example, using resources-round-218x218 to support all round watches with a resolution of 218 x 218.

Images

Likewise with Pebble, images are converted and stored internally as 1, 4, or 8-bit formats. This allows you to support many devices and bit depths from 2 colors to 64 colors.

On the Pebble, you’d manage the bit-depth of images via memoryFormat in package.json. Within CIQ, it’s a little easier. All you need to do is define the colors you want to display (as hex values) within a <palette> node from within your resources.xml file. The nice thing about CIQs approach is that the resource compiler handles the rest, including the re-sampling and dithering. This saves you generating many different image types and bit depths.

In your code, loading bitmaps uses the unified resource method; loadResource(Rez.Drawables.RESOURCE_ID) which corresponds to Pebble’s more specific gbitmap_create_with_resource(RESOURCE_ID) method.

Fonts

Pebble made it easy to include TrueType fonts within your app. You’d define unique resource identifiers - ie; FONT_VERDANA_BOLD_42 - and the compiler would go away and create a 1-bit bitmapped version of the font. Multiple resource identifiers (BOLD_16, BOLD_42) were needed for each glyph size which increased memory usage.

It’s a little more involved with Garmin. CIQ requires that you first convert the TTF to a bitmap font in the FNT format. This generates an image bitmap, with the font glyphs, and a descriptor file. Luckily, the Garmin folks reference a conversion tool, and there’s a number of open source FNT converters out there. Personally, I prefer the Garmin way, as you can edit the bitmap, and add custom glyphs and icons. In fact, my Segment watch face is built pixel-perfect from a bitmap font I hand-crafted.

On a Pebble you access your fonts through fonts_load_custom_font(resource_get_handle(RESOURCE_ID)). On CIQ, you use the unified resource method, as before, to load your fonts; loadResource(Rez.Fonts.RESOURCE_ID).

Frame Buffer

Unlike Pebble devices, you don’t have direct access to the frame buffer / canvas. You can only write to the screen using text, bitmaps, and dot / line / polygon primitives. While this seems limiting, the reality is that you seldom need to do any hardware level byte-blitting on the screen.

Layout engine

One of the advantages of Garmin’s platform, is the built-in layout engine. Unlike the Pebble ecosystem, Garmin has many different devices with a multitude of screen sizes and resolutions. The layout engine makes it easy to define one or more responsive views, including text fields, data fields, and images.

Properties and Settings

CIQ allows watchfaces and apps to define and store their own properties. This is handy to store and edit user settings. Pebble has a 4kb limit, while CIQ allows up to 8kb per app.

With Pebble, there’s a few ways to do this - through the Persistent Storage API, or via Clay. Using Clay you’d define your apps properties using messageKeys within package.json - and then define how they’re configured through a Clay config.json file. Then within your app, you’d define the values within a struct, and register app_message_register_inbox_received to read tuples from a dictionary. To persist settings, you’d then call persist_write_data to store your properties.

On CIQ, it’s a magnitude easier. Properties have unique keys and types (Number, String, etc) which are defined within a properties.xml file. The corresponding settings are defined within a settings.xml file, referencing the property keys you wish to expose to your users. Accessing properties and settings is as simple as calling a getProperty method in your app. Whenever a user changes a setting, the onSettingsChanged method is called, allowing you to register any callbacks to update your app.

Starting with examples

There’s nothing like traversing through other people’s code when you’re learning the ropes of a new platform. Garmin recently published a three part series (part 1/part 2/part 3) that overviews creating an app from recording metrics to UI development, as well as a sample on using the OAUTH system. You can also download a free e-Book that gives an overview of the Connect IQ system.

I’ve made my Nyan Cat watch face open source — feel free to grab it on GitHub and play around with it.

Conclusion

While it’s too soon to tell, the team at Garmin seems responsive and willing to listen to issues and feature requests from both users and developers alike. The CIQ team are great listeners, and are willing to consider features that developers want no matter who proposes them. In many ways, this feels similar to the early days at Pebble. While there’s a smaller dev community, in general folks seem more willing to help out, and share their code & knowledge at the drop of a hat.

This year, Garmin seems poised to give their developer community a new opportunity to flourish. Only recently, they announced a 3-day dev summit at their HQ, and they’re (amazingly) giving away devices like the fēnix 5 to developers! It’s a good opportunity to rub shoulders with like-minded developers, and learn the ropes about building apps in the wearable space.

So, if you’re a Pebble refugee and you’ve got the itch to build something useful — or just plain fun — give the SDK a whirl, and join the emerging group of developers building on this platform.


Connect IQ 2.2.3 Now Available!

01/04/17 @ 01:23 PM

Fenix 5

Connect IQ 2.2.3 is here! This version adds support for the new fēnix 5 family, the latest Connect IQ compatible multisport wearables announced at CES. The fēnix 5S is lighter, sleeker and smaller than previous models – perfect for small wrists without sacrificing multisport functionality. The fēnix 5X boasts preloaded wrist-based mapping; and the compact fēnix 5, like other fēnix watches, is feature-packed and ready to take on any adventure with an all-new industrial design. All of the fēnix 5 models are 24/7 wearable with extended battery life, daily activity tracking, Garmin Elevate™ wrist heart rate technology, and a host of connected features. And users can easily switch between stylish leather and metal accessory bands to sporty silicone in seconds and without tools, thanks to the new QuickFit™ bands.

You can see the new capabilities of the devices in the table below:

Device Resolution (px) Icon Resolution Colors Available Button Functions Screen Type Touch Screen
fēnix™ 5S 218 x 218 40 x 40 64 up, down, enter, back, menu round No
fēnix™ 5, fēnix™ 5X 240 x 240 40 x 40 64 up, down, enter, back, menu round No

Note - we will not be auto-migrating apps to the Fenix 5 family. Get the SDK today to develop for the Fenix 5!

UBER ETA

Also exciting is the new UBER ETA app by Garmin. Uber ETA lets you check your driver’s pickup ETA, driver details, and the ETA to your destination on Garmin wearables that the same way you check the time: with a flick of the wrist.
UBER ETA by Garmin

The first time you run the application, you will need to log into your Uber account through the Garmin Connect Mobile application. Once you’ve completed the login, any time you request an Uber, the ETA app will show you the time until your ride arrives, guide you to your pickup location, and keep you updated on your ETA during your ride.

UBER ETA by Garmin is available today on the Connect IQ store.


Connect IQ 2.2.2 Now Available!

12/21/16 @ 02:48 PM

Devices

Connect IQ 2.2.2 is here! This release adds a new feature we are very excited about: remote app launch. Users of the Mobile SDK can now request their Connect IQ app be launched from an Android or iOS app. If the device is able to handle the request (has the app, isn’t currently running an activity or app), the user will be presented with a notification asking if they want to launch the app in question.

Remote launch

This SDK addresses a number of reported issues in the Mac and PC SDK. There are corresponding updates to the Android and iOS mobile SDKs as well. Download the SDK today!


Connect IQ Summit : Apply Today

12/15/16 @ 12:59 PM

SummitLogo

We are now taking applications for the first ever Connect IQ summit! Held at Garmin HQ on April 18 - 20th, 2017, this summit will feature workshops by the Connect IQ team, talks from Garmin and industry leaders, and one of a kind networking events. Participants also get a free Connect IQ device!

Space is limited, so apply today. Hope to see you there!


Connect IQ 2.2.1 Now Available!

11/08/16 @ 11:10 AM

Looking for a break from non-stop election news? Connect IQ is here for you!

Connect IQ 2.2

Connect IQ 2.2.1 is now available. This update is targeted for Connect IQ compatible Edge®, Rino®, and Oregon® devices.  Devices now get support for Connect IQ Intents, PersistedContent, and the new AntPlus. The big news for the Oregon and Rino is that they now support Connect IQ 2.x including widgets and apps! Get the SDK today and get started!

Wearable Programming for the Active Lifestyle


The Connect IQ book, Wearable Programming for the Active Lifestyle, is now available… for free! This e-book covers topics like wearable programming, web services, ANT, activity recording, and the wearable future. And did we mention that it’s free? Get the book today!


A Connect IQ Halloween

11/02/16 @ 11:14 AM

My Buddy and Me

Hope you all had a happy Halloween. Here at CIQ HQ we had the annual department Halloween donuts/costume competition. One of the winning entries was the Face-It™ Machine, an anthropomorphized version of the Face-It app. The Face-It Machine came complete with pre-made watch faces of various team members.

En-Faced

From the Garmin Cochrane office came this adorable costume: a Portal Sentry Turret!

Read More


Connect IQ 2: Intents and Persisted Content

11/01/16 @ 10:34 AM

Connect IQ 2.2 adds Intent objects, which allow a Connect IQ app to launch another app or a native activity from a running app. It also opens up access to the device’s native content like the user’s waypoints and courses, as well as adds the ability to download native content from the cloud to a device. This allows developers to create Connect IQ apps that curate content, and launch into the native activity. This post provides an overview of these new features and how to use them.

Read More


Connect IQ 2.1.5 Now Available!

10/18/16 @ 03:44 PM

Logo

Connect IQ 2.1.5 is here! This point release updates the minimum firmware version for a number of devices.  Get the SDK today!


Connect IQ Developer Summit

10/10/16 @ 06:49 PM

We are excited to announce the first ever Connect IQ developer summit! Join the growing Connect IQ developer community with the first Connect IQ Developer Summit at Garmin Headquarters in Olathe, Kan. Sign up now to stay informed of the latest news and be ready for this exciting event.


Connect IQ 2: Connect IQ 2.2.0 Beta Now Available!

10/06/16 @ 11:00 AM

Today the Connect IQ team is proud to announce the next update to Connect IQ 2. This update is for Edge and Oregon products, and adds exciting features to the Connect IQ platform.

Read More


Connect IQ 2.1.4 Now Available!

09/27/16 @ 01:12 PM

Connect IQ 2.1.4 is here! This point release fixes some issues with the toolchain and updates the minimum firmware version for a number of devices.  Get the SDK today!


New Connect API PUSH Simulator

09/02/16 @ 01:40 PM

Developers have long requested an easier way to process data in the Connect API testing environment and we listened!  We are pleased to announce the addition of a PUSH API simulator to the Connect API developer program.  The simulator emulates the behavior of API data transfer when an end-user uploads an activity Garmin Connect.  This tool mimics both correct and incorrect calls to ensure your process was employed correctly and to help diagnose any implementation issues.  If you are a current developer, we hope you are enjoying this new tool.  Not yet a developer but are interested in becoming one?  Please contact us at developer.program@garmin.com to discuss the program.


Connect IQ 2.1.3 Now Available!

08/31/16 @ 02:33 PM

A new Connect IQ SDK is now available! This update adds support for the fēnix Chronos, a premium version of the popular multisport watch.

Read More


Connect IQ Pro Tip: Using the Bitmap Palette Options

08/15/16 @ 08:33 AM

Pre-Dither

In our world of HTML, megapixels, and gigabytes it can be easy to forget the resource usage of bitmap images. Connect IQ's constrained embedded environment requires developers to consider the cost of bitmaps when making pages. Thankfully, the Connect IQ SDK provides a number of tools to control your image costs while make a great looking app.

Read More


Connect IQ 2: The Biker Has Arrived

08/08/16 @ 09:45 PM

Biker Monkey

We are go for launch! Today we are releasing the new Connect IQ 2.1 (Biker Monkey) SDK that allows developers to upload apps to the Connect IQ store. This SDK allows you create apps for all Connect IQ compatible devices. Device firmware is rolling out to add functionality to most of our Connect IQ devices. This is by far the biggest Connect IQ release we have ever done, and we’re excited to see what you create with it!

Read More


Connect IQ 2: New Toys in the Toybox

08/08/16 @ 01:14 PM

n00b

We have covered a number of the new additions for Biker Monkey, including the new security system, widgets and apps on the Edge, the new test framework, how to show data to Garmin Connect, and support for OAUTH authentication. Even with all that, there are still some features we haven’t discussed yet.

Read More


Connect IQ 2: Authentication

08/04/16 @ 04:51 PM

throws StringNotTautException

Today there are countless web services available to developers, but up until now most have been inaccessible to Connect IQ developers. The reason is that these services use either OAUTH 1 or 2 to provide access control, and this functionality did not exist in Connect IQ. Biker Monkey adds new OAUTH APIs into the Communications module that allow widgets and device apps to make authenticated calls. We’ve also added this feature into Aikido monkey, so you can use this in your 1.x apps as well.

Read More


Connect IQ 2: The Full Circle

08/02/16 @ 05:07 PM

One of the most exciting new features in Aikido/Biker Monkey is the ability to contribute workout information. Data Fields and device apps will now be allowed to record new information to the current activity and have that information displayed on Garmin Connect. This will open up the ability to record new metrics from ANT sensors, contribute new workouts, and support entirely new activities both on the device and in the cloud. We call this the “Full Circle Experience”: your app now can be downloaded to a device, record information, and be shared on Connect.

Read More


ANT® Wireless Network Provides Unlimited Opportunities

07/29/16 @ 04:02 PM

The ANT® wireless network has capabilities far beyond the Connect API fitness applications. Here are a few device profiles for extended applications, but with your innovative ideas — and the power of our sensors — the possibilities are endless! Please visit our ANT Wireless Networks site for more details.

• Light electric vehicle
• Video camera control
• Temperature
• Audio hub to peripheral
• Position
• Music control
• Video hub to peripheral
• Phone control
• Keypad control
• Share stored files
• General controls

We are excited to see the great products you create as you continue to Build Something with Us!


Connect IQ 2: Run No Evil

07/26/16 @ 08:21 AM

Magic Monkey!
For more advanced testing and debugging capabilities, the Connect IQ 2.1 SDK adds Run No Evil, an automated unit testing framework found in the Test module. Run No Evil operates only within the Connect IQ simulator and provides the ability to add asserts and unit test methods to your app. These tools allow you, the developer, to create higher quality apps by letting us do the testing work for you!

Read More


Connect IQ 2: Widgets and Apps on Edge®

07/14/16 @ 06:47 PM

Cycling Monkey
The Edge platform is introducing application and widget support as part of the Connect IQ 2.1 launch! A whole suite of features previously found only on watches, such as Communications, Input Handling, Menus, and Progress Bars, will now be available to Edge devices. These features enable developers to create all-new and exciting content focused on our cycling user’s lifestyles.

Read More


Connect IQ 1.2.11 Now Available!

07/13/16 @ 02:50 PM

EDGE 820
Connect IQ 1.2.11 is now available! In this release we’ve added support for the new Edge® 820 and Edge® Explore 820. Featuring advanced navigation, powerful performance measurements and all new group live tracking, our 2 newest cycling computers also have Connect IQ compatibility. Now is the time to start working on data fields that could be used by thousands of serious cyclists around the world.

Read More


Tell a better story with G-Metrix™ data

07/08/16 @ 04:05 PM

Garmin customers are many things; they are athletes, aviators, sailors, snowboarders, ATV enthusiasts, race car drivers and much more! These active end-users want to tell a better story combining high-definition video with G-Metrix™ data to record those activities.  Garmin has a developer program for that!  Please visit our VIRB® Network Services API site to learn more about this program and its endless possibilities. The virb.developer@garmin.com team can provide any technical assistance you require.


Sleep, All-day Heart Rate and Body Metrics Data

07/01/16 @ 04:28 PM

You have long requested access to the advanced data collected by some of the newest devices from Garmin — and we listened. Sleep intensity levels (awake, light and deep states) and automatically derived sleep windows enhance the data already available in the Wellness API. All-day heart rate provides information from devices that feature wrist-based heart rate and includes intensity minutes and floors climbed. Body metrics (weight, BMI, body fat/water percentage, bone mass and skeletal muscle mass) collected from the Garmin Index™ smart scale are also available from the Wellness API.


Connect IQ 2: Security

06/17/16 @ 01:08 PM

Connect IQ

At Garmin we are focused on the security of our devices and our services.  As Connect IQ grows and expands on the functionality and user identifiable information available on our devices we have overhauled our security model.  This new security model in Connect IQ 2 is built to give the developer and the user the tools to know that their device and their information is safe with Garmin.

Connect IQ 2 introduces new levels of trust for apps:

    Trusted - Content that has been approved by the app store. These apps have passed the Garmin review process and was downloaded from the Connect IQ store.
    Developer - Content that has been written by an individual developer, but has not been published by the Connect IQ store. This content can be used for testing, but is not an officially released app.
    Untrusted - Rabble. Should not be run on device.


These levels of trust are enforced using digital signatures. A new key management system has been worked into the app store, the device, and the developer SDK. The goal is to make sure that apps loaded from developers only come from two locations - the app store or a trusted developer.

Read More


Connect IQ 2: Biker Monkey

06/15/16 @ 10:35 AM

Biker Monkey

The Connect IQ team is thrilled to present a preview of our next generation SDK: BIKER MONKEY. This is the biggest Connect IQ update we have done since launching in 2015.

Read More


Garmin’s Corporate Wellness Solution

06/10/16 @ 04:29 PM

Healthcare cost pressures and engagement continue to fuel the growth of corporate wellness programs. More and more, companies are offering their employees cash incentives and, in some cases, a vívo family device combined with access to an engagement platform such as Shape Up to validate their activity and earn rewards. The ultimate goal is to help employees develop lifelong habits for healthy living.  The Garmin “one size doesn’t fit all” approach aligns well with many organizations that are looking to provide their employees a personalized solution.

The Garmin Health API provides all day monitoring data such as step count, calorie count, distance, sleep and much more.  To learn more about about incorporating this data into your corporate wellness program, please contact us at developer.program@garmin.com.


Wellness API - Update to REST

06/03/16 @ 12:58 PM

Garmin is happy to announce our new Wellness REST API. We’ve been hard at work making our API easier to use, and we’re excited to share the details with you! 

The new REST API is not only easier to implement and maintain — we’ve also listened to your feedback and have incorporated many new improvements including simplified OAuth processes, data acknowledgement and ping notifications. 

To learn more about this new API, or inquire as to program entrance, please contact us at developer.program@garmin.com.  We look forward to seeing your creative applications as you continue to Build Something with Us!


Connect IQ Mobile SDK: Connecting to a Device

05/25/16 @ 04:07 PM


The first step to writing a partner powered Connect IQ app is getting your partner app and Connect IQ app connected. The Partner SDK provides the tools for you to do this how you feel it best fits into the flow of the app. We’re going to take a look at a couple different approaches using the Disc Golf sample featured in this previous blog post.

Read More


Forerunner 735 and Strava Suffer Score

05/10/16 @ 09:27 AM

Today we are announcing the next Connect IQ compatible running watch, the Forerunner 735XT.

The Forerunner 735XT, a GPS running watch with multisport features and wrist-based heart rate. The most lightweight multisport-capable running watch from Garmin, the Forerunner 735XT features 24/7 heart rate monitoring and built-in activities including running, cycling, swimming, multisport, hiking, XC skiing, strength training, paddle sports and cardio.  This is going to be a very successful watch that meets the demanding needs of long distance runners around the world. 

Today we are also excited to announce the expansion of our partnership with Strava to bring their premium Suffer Score feature to Garmin devices for the first time with Connect IQ.  Download it today: Strava Live Suffer Score

Read More


Updated FIT SDK

04/12/16 @ 12:33 PM

We are pleased to announce the upcoming release of the FIT SDK 2.0!

This release includes many small upgrades to enhance performance and functionality, but the star of the show is the addition of customizable data fields. Developers have long requested the ability to add dedicated metrics to highlight their specialized programs — and we listened. The new data fields can be coded to your specifications and then easily shared with other FIT developers.

Moving forward, most devices will primarily support the creation of FIT 2.0 files, so if you intend to continue development using FIT files, then it is very important that you update. If you do not update, your program will not be able to correctly decode the new 2.0 files without breaking your application data flow.

This exciting update is currently scheduled to release in Q2 2016 but please feel free to visit the thisisant.com/resources/fit site to see if we release an early beta version - wink wink.  Please join the discussion at our FIT forums located at thisisant.com/forum/viewforum/27/ to address any questions or concerns you have.

We look forward assisting in your success as you continue to Build Something with Us!


EDGE Data Fields Available Today!

03/10/16 @ 10:12 AM

EdgeHero

Connect IQ is now ready to be on the handle bars of over 500,000 EDGE devices around the world. This is the capability that our EDGE owners have been anxiously awaiting and the day has come. All they have to do is to update their firmware which is pretty automatic and they are set for your data fields. With this update the EDGE 1000, Explore 1000 and EDGE 520 will all be compatible with Connect IQ. To update your compatible Edge device so you can start using Connect IQ please use Garmin Express.

With EDGE data fields you will have all of the capabilities that you have on the wearables. All of the same sensor data, APIs and UI tools are available. But we do have some exciting news about data fields on the Edge. You can now use generic ANT within the data field! That means bringing in new sensor data into the data field experience. This is big news for a lot of our innovative partners around the world.

Specialized Turbo LEVO Data Field

Specialized

We are excited to launch this new feature of our EDGE devices with Specialized Bikes as they launch their new Turbo LEVO e-mountain bike. The Specialized Turbo Levo features all the hallmarks the Specialized mountain bikes are known for while streamlining Turbo technology integration to give you the power to ride more trails. With the Specialized Turbo Levo Connect IQ Data Field you have the opportunity to extend and customize your display.

The Connect IQ Data Field displays all Turbo Levo specific information like bike state of charge, current assist mode or rider input power. Even better, it also allows you to control and switch the Eco/Trail/Turbo assist modes wirelessly right from your Garmin device.

This Specialized Turbo LEVO data field is a great example of the power that Connect IQ bring by connecting devices for a complete experience using the ANT technology.

Read More


Garmin Corporate Wellness

02/19/16 @ 02:16 PM

Garmin has a unique role in the Corporate Wellness industry.

“The Garmin Health segment is on a mission to improve people’s health by providing world-class devices and a connected ecosystem,” says Allison Swelin, manager, Garmin Health sales and marketing. “Garmin vívofit® touts a year-long battery life and 5 ATM water resistance, which has been a game changer for increasing program adherence and driving long-term behavior change, when combined with one of our partner platforms. We’ve partnered with industry leaders like Shape Up, Cerner, KUMC, Blue Cross, Medidata and others to support a variety of use cases where vívo family devices can be used as a tool to support behavior change.”

Healthcare cost pressures and engagement continue to fuel the growth of corporate wellness programs. More and more, companies are offering their employees cash incentives and, in some cases, a vívo family device combined with access to an engagement platform such as Shape Up to validate their activity and earn rewards. The ultimate goal is to help employees develop lifelong habits for healthy living.  The Garmin “one size doesn’t fit all” approach aligns well with many organizations that are looking to provide their employees a personalized solution.


Announcing Garmin vívoactive HR

02/18/16 @ 04:44 PM

The Next Great Connect IQ Watch

vivoactive HR

 

Mystery “Tall Watch” Revealed

Back in January, we added the “Tall Watch” to the Connect IQ™ SDK, giving you the tools to develop for one of our most important device launches this year. Now it’s time to reveal the new vívoactive® HR — the ultra-thin fitness wearable evolved from our already successful vívoactive watch.

accuweather

This new GPS smartwatch — with built-in sports apps for running, cycling, SUP, skiing/snowboarding, golfing, swimming and more — is your all-day, everyday partner in fitness. It combines Elevate™ wrist heart rate technology with smart notification features, activity tracking and wireless connectivity that enables automatic uploads to Garmin Connect™. Plus, with Connect IQ you can develop watch faces, apps and widgets for vívoactive HR users to easily customize the device.

Key Developer Features of the vivoactive HR watch

  • The new high bar for CIQ developers! The watch is twice as fast as Vivoactive, and has twice the available memory for app and data field developers!
  • This device is loaded with sensors, including WHRM, accelerometer, barometer, and compass.
  • CIQ + amazing battery life + WHRM = The best watch for fitness apps on the market

Read More


Wellness API - New Device Support

02/07/16 @ 10:12 AM

We are pleased to announce the Wellness API has added the following to its ever growing list of supported devices:

- vivosmart HR
- forerunner 25
- forerunner 225
- forerunner 230
- forerunner 235
- forerunner 630

We will continue to add devices as they are released so stay tuned!


Connect IQ And The Wearable World

01/29/16 @ 08:56 AM

Simian Army
The Connect IQ Alpha Monkey gave a talk at Midwest.io 2015. In this talk he discusses the challenges in creating the Connect IQ platform.


How To Make A Connect IQ Watch Face

01/15/16 @ 07:50 AM


Developer Petr Koula (maker of the very popular ActiFace watch face) has made a great YouTube tutorial on how to create a watch face using Connect IQ!


Connect IQ at CES

01/13/16 @ 06:03 PM

Garmin at CES 2016

Here is a video taste of Connect IQ at the Consumer Electronics Show this year.

Read More


CES 2016 and Connect IQ 1.2.2

01/06/16 @ 10:51 AM

All of us here on the Connect IQ team are ecstatic for 2016. We're eager to share with you what we've been working on the last several months, so let's get right to it!

New Year, New SDK

Edge and Fenix 3 IQ Logo

Today we're launching version 1.2.2 of the Connect IQ SDK. This SDK has multiple key updates, including the following:

  • Edge data fields can now be uploaded to the store.
  • fēnix 3 HR and tactix Bravo devices are now supported in the Connect IQ SDK.
  • There's a new screen size called “Tall Watch” for you to explore. (Sounds fun, right?)

Read More


Connect IQ 1.2 and Three New Devices

11/05/15 @ 05:44 AM

Today is a big day where a lot of key components come together for the next wave of Connect IQ features.

First, Connect IQ 1.2 is now in production so your amazing apps that leverage the new features in Connect IQ 1.2 can now be downloaded to a device. We have 3 new Connect IQ watches with the new Forerunner family of watches. We also have a brand new redesigned Garmin Connect Mobile application.

Let’s start with Connect IQ 1.2…

Read More


Connect IQ now on the EDGE

09/29/15 @ 10:52 AM

When will Connect IQ be on the Edge???

This is the question we get the most from our developer community and passionate people who love Garmin devices.

We listened…

Edge and Connect IQ

Read More


Announcing Connect IQ 1.2

09/29/15 @ 09:59 AM

One year ago, we opened up a world of possibility when we launched Connect IQ for Garmin devices. That was an exciting milestone for us and for you, our developers.

Today, we’re thrilled to announce another huge milestone: Connect IQ 1.2.

 

Read More


The New Badge and Other Updates

08/22/15 @ 08:32 AM

New Badge

Just wanted to let you know about a couple updates we have recently added to the Connect IQ Store.

  1. New Badge - New apps will now have a New Badge for the first 14 days they are in the store.  We added this to give more visibility to the new apps in the store as a user browses around.  This badge will be shown on both the lists and detail page views. 
  2. Minimum SDK check - We are continuously working to provide new features and improvements to the developer tools available in the SDK.  To make sure uploaded apps have the latest and greatest version of the SDK we have added an SDK Version check to the process.  This will make sure that your app is able to take advantage of these improvements.

If you have questions on either of these please post them to the forum.

You know what else is amazing??  In June we announced that we reached the 1 Million downloads threshold, which was very exciting to us!  We continue to be amazed at the growth we are seeing in this platform because to get to 1 Million it took about 6 months but over July there were already 600,000 more downloads!  Amazing! 

This is a testament to the value and innovation that you our developer community is bringing to this platform. 

Thank you for all you do and we look forward to seeing what’s next!

The Connect IQ Team

 


Get set for MPC v11!

08/19/15 @ 11:12 AM

We are pleased to announce the release of Map Product Creator v11!  We’ve added many great features but here a few of the biggies:

• Added support for the InstaSearch feature.
• Added support for Address Search Greyout side files.
• Added support for Garmin Real Directions™. This includes support for Traffic Light, Traffic Sign, and Natural Guidance driving restrictions.
• Added support for building Unicode maps.

And if you still have lingering questions about MPC and what it’s about, check out the MPC program overview. Learn about what type of maps you can create, security features we have in place, and how you can request a free trial of MPC.


VIRB XE Opens Support for Wireless Interaction

08/05/15 @ 08:29 AM

Supporting the various unique and interesting requests of the action camera community is important to Garmin, and we are pleased to announce an API publication for wireless interaction with the VIRB X and VIRB XE action cameras!  The VIRB Network Services API allows developers to build a direct connection to one or more cameras into applications on all kinds of Wi-Fi-enabled devices. Having access to the camera allows an application to create seamless interactions with the camera and harness the streams of video, photo and data to meet all kinds of unique needs.

VIRB XE cameras are discoverable through the API, allowing an application to see and connect to multiple cameras simultaneously. Monitoring and configuring the status of the connected camera(s) is possible and also allows direct control of the camera(s). Setting a camera configuration, controlling multiple cameras at one time, and more are available. Real-Time monitoring of the video and audio streams in both preview and record modes is possible, along with full file browsing and transfer after the recording is finished or photos are captured.

Building a multi-camera viewer, automated transfer tool or scripts to control legions of cameras are all possible using this new API.  We can’t wait to see what you do with it - build something with us!


Connect IQ Store Updates - New Apps and Developer Metrics

07/15/15 @ 10:45 AM

New
Today, we are launching two new features in the Connect IQ app store that will directly benefit both our developers and Connect IQ users!

    New and Updated Apps: This new section will have the newest and latest apps on the store.  Users will be able to find these new and updated apps on both the Connect IQ Store home page and as a section on the device pages (ex. fenix 3). This should make it much easier for people to find the latest and greatest apps in the store!
    Developer Statistics: Developers will now be able to see downloads graphed across the past 10 days, weeks, and months. When logged into the store you should have it available next to your reviews.  This should provide you with a much better view into how your app is performing.

These new features in the store are just some of the ways we are always looking to improve the developer and users experience around Connect IQ.  We hope you like them.

o/\o The Connect IQ Team


Watch Faces a Favorite Among Our Users

07/09/15 @ 08:30 AM

We now have over 300 watches faces in the Connect IQ store and they have been downloaded over 550,000 times!! These watch faces have become a favorite among the Connect IQ devices owners as you can see on Instagram #ConnectIQ

ActiFaceBlue

Watch Face: ActiFace Blue

Far and above the favorite watch so far has been the ActiFace Blue from Koulik downloaded close to 50,000 times.

Connect IQ watch faces are always on and visible, that way these watches always look like watches on your wrist even in the bright sunlight. Other smart watches turn the face off when not in use leaving them looking like a lifeless devices strapped to your wrist. This is a big differentiator for our watches because even with them on all the time users still get the weeks of battery life they love and expect from Garmin devices.

Do you have an idea for a watch face?

Here are some great resources...

Read More


1,000,000 Downloads

06/26/15 @ 04:49 PM

1000000 Connect IQ Downloads

Thank You, Thank You, Thank You

We are excited to announce that there have been over 1 million downloads of Connect IQ apps!! We cannot believe how fast we have gotten to this milestone and would not be here without you, our Connect IQ developer community. You are cranking out incredible apps for these Garmin devices, and our users love it, as you can see posts like these #ConnectIQ.

We’re just getting started with Connect IQ. As Connect IQ devices enable more and more active lifestyles, your apps will continue to give these users amazing ways to customize their devices to fit their specific lifestyles. 

Thank you, thank you, thank you, and congrats for your help in making the Connect IQ platform such a success. 

High five from Connect IQ Team!

o/\o


App Migration

06/19/15 @ 04:16 PM


Our goal with Connect IQ™ is to make it easy for developers to target multiple Garmin devices, and at the same time give developers the choice of not supporting a product they don’t want to. The goal is to give us the flexibility to create purpose driven products, where we may make changes for the use case, while not requiring our developers to adapt to every one of these changes. There are a number of challenges with this system. For example, what if we create a product like the D2™ Bravo, which from the Connect IQ perspective is exactly the same as the fēnix® 3? We can’t tell developers about the product before launch, but developers will have to manually rebuild and re-upload their apps to the app store to add support for it. Assuming it takes 10 minutes and a 16 oz. soda to generate an app update, updating all the fēnix® 3 apps would require two and a half days and 66240 calories to move all the apps to D2™ Bravo. That would require a lot of steps to burn off.

Read More


Looking Forward: Connect IQ Release Schedule

06/16/15 @ 04:28 PM


Here at Monkey C headquarters, we love to give our developers candy. Candy, candy, candy! We wish we could give everyone candy every day, but sadly it takes us time to make the candy. It also takes us time to make sure the candy doesn’t leave a bad taste. The best way to make sure the candy we give you is delicious is to be open about when we are sending the candy, and what you can expect. [Editors Note: Garmin is a health and wellness company and would like to say that the Connect IQ team provides “Refreshing, healthy, low calorie vegetable smoothies” to its developers, not candy as previously inferred.]

Read More


Disc IQ: The Connect IQ Disc Golf App

05/12/15 @ 10:19 AM


Our team was interested in seeing how we could combine some APIs together to push the boundaries of the SDK. With the single instruction of “make a watch app that uses a companion app” from our fearless Alpha Monkey we decided to set out writing a disc golf sample.

The basic idea was to use an Android app to create a course on a phone, send it to the watch via the Connect IQ companion SDK, score the course on the watch and then send the completed scorecard back to the phone. This would provide us a great way to get a more comprehensive look at the SDK and, of course, document what we found useful along the way. Without further ado, here are some of the key findings we made.

Read More


Writing a Wearable Web Service

04/09/15 @ 03:43 PM

The Connect IQ Communication API is the API that brings the wearable web to Garmin devices. However, there are some subtleties to how to expose a web service to a Garmin device.

Read More


Apps and widgets now available!

03/06/15 @ 04:22 PM

It has been almost six months since we announced Connect IQ, and we are excited about what this platform and the Connect IQ community has become. 

Today we’re launching the next major piece: widgets and apps in the Connect IQ Store

You will see a few apps by Garmin there, but the power of Connect IQ comes from what you create.

Read More


Garmin Integration Partner

02/24/15 @ 10:45 AM

Want to use our fitness and wellness devices — and user data — in your wellness program, but don’t have the resources to do the integration yourself? No problem. We partner with Validic to quickly and easily integrate our devices into wellness programs. More than 40 of our partners have had success with Validic’s industry leading digital health platform.

Validic’s sole focus is to help organizations manage a world of mobile health data with one easy connection. In fact, Validic was recognized by Frost and Sullivan as delivering best value in healthcare information interoperability. By delivering standardized, complete, secure, and actionable data, Validic helps its clients provide better insights into treatment plans and programs, monitor engagement behavior, incentivize improved outcomes, and better financial management of populations. Validic enables clients to focus on achieving their digital health strategic initiatives, not on doing integrations. For more information on Validic, please visit validic.com or contact our developer team at developer.program@garmin.com.


One Size Does Not Fit All

01/30/15 @ 10:31 AM

The vívo family of products continue to be extremely well received, creating strong demand for our Wellness API. We are now working with more than 100 partners in varying markets from corporate, healthcare, and — believe it or not — the trucking industry!

Read More


A Look Back at CES 2015

01/16/15 @ 04:43 PM

Now that the dust has settled a little bit since CES we wanted to share some of the exciting coverage we got around the new Connect IQ compatible products and the Connect IQ platform.

Read More


These 7 Connect IQ Partners Will Inspire You

01/05/15 @ 02:23 PM

In conjunction with the launch of new products at CES, we’re super excited to partner with companies that each show valuable new use cases for our wearable devices. The apps from these partners take the Connect IQ platform to new and exciting places.

Read More


Connect IQ SDK Has Reached 1.0.0

01/05/15 @ 02:16 PM

Today, we’re launching the official version of the Connect IQ SDK. It’s no longer a preview, ladies and gentlemen. It’s Connect IQ 1.0.0 Aikido Monkey. Here’s what’s new in this version:

• Simulators and device support for new compatible devices.
• Access to device settings, such as time format (12-hour vs. 24-hour) and metric vs. statute.
• Support for gestured watch faces. Previously, watch faces had been limited to updating once a minute. Now, watch faces can enable timers when you gesture that you’re looking at the watch.
• Ability to generate apps for the Connect IQ Store using the Package tool.

If you’re using the first or second preview SDKs, you’ll definitely want to update to version 1.0.0. And don’t forget you can now upload your watch faces and data fields to the Connect IQ Store.


3 Amazing New Connect IQ Devices Will Bring Your Apps To Life

01/05/15 @ 09:17 AM

We’re launching 3 new compatible Connect IQ devices today at the Consumer Electronics Show in Las Vegas.

Read More


Ready to upload your creations to the Connect IQ Store?

01/05/15 @ 09:02 AM

We’ve been working on it for months, and now it’s (halfway) ready. The Connect IQ Store at apps.garmin.com is finally open for widgets and data fields. That means that users can now get all the wonderful widgets and data fields that you’ve built.

Read More


Welcome to the developer blog!

01/05/15 @ 07:01 AM

We’re excited to announce that our developer blog is now up and running. Right here is where you’ll find insights into the products and technology behind each of our developer programs:

  • Connect IQ SDK — Develop watch faces, data fields, widgets and apps for our wearable devices.
  • Garmin Connect API — Access robust data for timed activities that are generated from Garmin devices for your website or application.
  • Wellness Program — Develop custom applications for health and fitness data generated through Garmin devices with our Health API.
  • Fleet Management — Manage your fleet with our fleet management interface, protocols, and APIs built into select devices.
  • Custom Maps — Design and build custom maps that can be easily loaded on our devices.
  • Custom POIs & Voices — Build secure POIs, travel guides and voices for a variety of our devices.
  • Open Source — See the archives for our Open Source software-based products.
  • VIRB Program — Control, configure and stream VIRB action cameras using the VIRB Network Services API.
  • ANT Wireless Networks — Wireless connections for sensors and devices for sports, fitness and more.

To keep tabs on the latest news and hints that will help turn you into a productive Garmin developer, subscribe to the blog via RSS today. And if you have any questions, you can always check out our forum or Stack Overflow, or you can contact us directly. It’s a great time get started as a Garmin developer!