Connect IQ 1.1.2 SDK Available!

We recently released version 1.1.2 of the Connect IQ SDK today!


You may also download through the Connect IQ SDK Manager in Eclipse, by clicking the Connect IQ menu, selecting Open SDK Manager, and then clicking the Download button for Connect IQ SDK 1.1.2 released June 16, 2015.

It is also available for download here: http://developer.garmin.com/connect-iq/sdk/

v1.1.2

  • Fixed issues with Exceptions so that user implemented try/catch blocks will now work.
  • Add call to saveProperties after onStop so any properties updated by an app after onStop are preserved.
  • Fixed memory leak when receiving messages via the Communications module.
  • Increase reliability of transmitting messages via the Communications module.
  • Correct Moment's initialize() routine never getting called automatically.
  • Add two new API's to the WatchUI::InputDelegate class:
    • OnKeyPressed(evt)
    • OnKeyReleased(evt)


These routines are used to detect when a hard key is pressed and subsequently released, allowing applications to access this type of input schema in additionto the basic key action.

  • Add CLOCK key support for Fenix3/Epix, remove power and light key from devices.xml (since they are not supported by any devices), and correct key behaviour mappings for a number of devices in the simulator.
  • Add D2 Bravo, Japan Fenix3, and APAC Epix device support.
  • Prevent sending input to view without a defined input/behaviour delegate.
  • Fix device crashes when reading corrupt PRG files.
  • Fix bug that truncated FIT session names.
  • Fix issues with rapid key presses causing key messages to hit a view after a push or pop had already occurred.
  • onStop() will now always be called when a data field exits.
  • JSON request URLs are now percent-encoded so that any special characters are replaced by their identifying hex pair. Adds a new routine encodeURL(url) to the Communications module which allows the application to do this as well.
  • Add deprecation tags to the GeometryIterator methods/class, which will not be supported in the ConnectIQ 2.0 release.
  • Add interface to simulate GPS quality which allow the simulator to control the accuracy of the current GPS for testing.
  • Fix several memory leaks that occurred under specific error-recovery conditions.
  • Activity Monitoring times now use UTC as the standard format.
  • Circular memory references are now detected and after an app is shut-down, an error will be written out to the ConnectIQ log file (device only).
  • Prevent processing view push/pop messages from applications that have already closed.
  • Add HTTPS support to CURL requests in the simulator.
  • Properly handle condition where jsonRequest returns an array by default instead of an object.
  • Fix palette bitmap padding offset on the FR920XT, and ellipse border offset on all devices.
  • Re-add support for Escaped Characters to String Resources.
  • Add four menu items to control settings in the simulator:
    • Battery status
    • Force onShow
    • Force onHide
    • Phone connected


Battery status allows the user to set the level of the battery currently, phone connected is a toggle for whether a phone is connected or not, and force onShow/onHide forces those methods to run for the current view.

  • Allow Spaces in Project and SDK Paths.
  • Remove the extra menu for toggling low power mode and creates a checkbox for low power in the settings menu. All apps now start up in low power mode by default and exiting an app resets the menu. Also adds in a menu option for toggling sleep mode for ActivityMonitor.
  • Support memory tracking which adds a new window available at File->View Memory. This window shows a snapshot of the current allocations as well as any circular references. When the app starts to shut down, a snapshot is taken and if any circular references exist after the app is shut down, the snapshot is shown to the user along with a message about circular references.
  • Add activity history editing support to the simulator.
  • Update Epix simulator data field layouts and fonts to match the on-device experience.
  • Fix issue with converting coordinates to GEO_MGRS.
  • Improve general ConnectIQ stability across devices.
  • Various other minor bug fixes, performance improvements and documentation updates.


Known Issues:

  • If an Exception is thrown from a catch block, the finally block of the current try/catch/finally will not be executed.

Top Replies

All Replies

  • The simulator *tries* to have the same behavior on the device (I know it fails miserably sometimes at this, we're working on it). The device needs to keep the filesystem cleaned up due to having a small amount of space available, so the additional files for apps that are no longer on the device get removed.
  • The simulator *tries* to have the same behavior on the device (I know it fails miserably sometimes at this, we're working on it). The device needs to keep the filesystem cleaned up due to having a small amount of space available, so the additional files for apps that are no longer on the device get removed.


    Wait.. On which device does the object store get deleted when you leave (or actually start) an app? When you START the simulator, it deletes the .str files!

    Real example here. I have a couple apps that require an APIkey to run, and that APIkey is save in an object store (so down the road it can be configured). I start the simulator, and the .str file is gone!

    Were's talking a PC or a Mac here, and a few 128 byte files aren't going to make any difference, considering the 1.1.2 behavior does NOT reflect what happens on a real device! There is no longer any "persistence" in the simulator!


    And I'm still trying to figure out why one of my 4 watchfaces is using APP.str in the simulator while the other 3 use <app name>.str! I'm not impressed with how OS's are handled in the 1.1.2 simulator.
  • It should only remove the .STR files for apps that are no longer on the device (or under $TMPDIR/Garmin/Apps for the simulator). Let me see if there's an issue on Windows with this. I've been using the object store on OS X without any issues.
  • It should only remove the .STR files for apps that are no longer on the device (or under $TMPDIR/Garmin/Apps for the simulator). Let me see if there's an issue on Windows with this. I've been using the object store on OS X without any issues.


    I'm on windows. Looking in $tmpdir/Garmin/apps, the .str files for those .prg files are getting deleted out of data! (as well as files that don't even end in .str!) EVERYTHING gets deleted!

    And in the case of one of my watchfaces, for some reason in $tmpdir/garmin/apps, it's named app.prg, which explains why it's looking for app.str. But why isn't it given it's real name, as other things are?

    It seems that the only .str's that are save are ones created by the app that uses it, and even if a .prg exists in $tmp..., it deletes the .str if it wasn't written by the simulator.
  • Tanita BC1000

    Looking fwd for an app/widget to use finally the Tanita ANT+ scale
  • Ok, got rid of the strange watchface that was being called "app.prg" instead of it's real name by renaming the old one, creating a new one, and copying over the code and resources. I still don't understand why this was happening, but it's resolved. I was running that watchface in the simulator when I upgraded to SDK 1.1.2 so maybe it had something to do with that...

    As far as the .STR files, I just created my own directory to save them off, and copy them back when I restart the simulator. Not ideal, but it works.
  • Former Member
    Former Member over 10 years ago
    CLOCK key?

    What is the CLOCK key on the F3?

    The API website mentions that it would become available with 1.1.3.

    Here it says it is supported with 1.1.2. But which button is it?

    And how to intercept and use the new pressed and released events?

    And still no way to make use of the light key?

    Hmmmm,....
  • And how to intercept and use the new pressed and released events?

    Your class that derives from Ui.InputDelegate would implement the onKeyPressed() and onKeyReleased() methods.
  • Your class that derives from Ui.InputDelegate would implement the onKeyPressed() and onKeyReleased() methods.


    Seems he's asking what key/button it is on the device, and not how to catch it.
  • That makes no sense since the onKeyPressed and onKeyReleased take an event object that tells you what key is being pressed, so it is for all keys.