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

  • I find the View->Memory to be good.
    it even shows the values which are being stored in my arrays.

    But alas, I found out that the values in this page are static, they are not updated in "real time" and thus cant be used to determine the array values or whatever values in real time. We still have to do the Sys.println()
  • View memory is awesome, but seems to be crashing quite frequently on me.

    Exception Type: EXC_CRASH (SIGABRT)
    Exception Codes: 0x0000000000000000, 0x0000000000000000

    Application Specific Information:
    Performing @selector(clickedAction:) from sender wxNSMenuItem 0x6080000c6b30
    [32206] stack overflow

    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
    0 libsystem_kernel.dylib 0x00007fff88844286 __pthread_kill + 10
    1 libsystem_c.dylib 0x00007fff89c83bf3 __abort + 145
    2 libsystem_c.dylib 0x00007fff89c844d1 __stack_chk_fail + 197
    3 com.garmin.connectiq.simulator 0x000000010005d8fc Sim::MemoryWindow::printValue(wxTreeListItem&, Sim::MemoryWindowColumn::Name, unsigned char, TVM_content_t&, char*, char*) + 764
    4 ??? 0x746977206d656874 0 + 8388366762112280692


    I have some circular references I need to take care of, so wonder if that's the source of the stack overflow....
  • since we are talking bout crashes. I get an error / alert dialog box when I use the GPS signal thing.
    I cancel it and it's ok.
  • What is the CLOCK key on the F3?[/CODE]
    According to the data in <SDK>/bin/devices.xml, holding the Down key will do it. I've confirmed in the simulator that doing so does result in a call to onKey() with the key value set to KEY_CLOCK.

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

    As I assumed, overriding onKeyPressed() and onKeyReleased() does the trick. To know what key was pressed/released, you need to look at the value returned by getKey() called on the provided event object.

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

    According to the ConnectIQ 1.1.2 release notes...

    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.


    The ConnectIQ 1.1.1 <SDK>/bin/devices.xml had information indicating the light key was supported, but that was removed (as mentioned in the quote above). Given that they are saying it isn't supported by any current devices, I'm guessing it isn't going to be something you'll have access to.
  • Just a question:

    they fixed the fonts for epix with this sdk update.

    Have the developers to update their apps/widgets/data fields/watch faces for the epix in the iq store, that they work now properly on the epix?
  • Seems to me, since you have the EPIX, you just download the prior app which gave you issues right now and see if it resolves it.
    do some experimentation and let the developers know if they need to do something.
  • Former Member
    Former Member over 10 years ago
    As others have said, 'View - Memory' is absolutely excellent, makes debugging a lot easier.
    But an update button, or even better, having it update in real time would be even better.

    -Torstein
  • Former Member
    Former Member over 10 years ago
    1236

    What is the CLOCK key on the F3?.

    According to the data in <SDK>/bin/devices.xml, holding the Down key will do it. I've confirmed in the simulator that doing so does result in a call to onKey() with the key value set to KEY_CLOCK.


    OK, understood. Basically like the MENU key, which doubles as the UP key on a short press.

    As I assumed, overriding onKeyPressed() and onKeyReleased() does the trick. To know what key was pressed/released, you need to look at the value returned by getKey() called on the provided event object.


    Thanks for testing and confirming.

    I am still a bit confused and I probably have to set up my own little playground to get clear. I wonder:
    - when I handle onKeyPressed(), is there still the normal onKey() event raised in between onKeyPressed() and onKeyReleased()?
    - will onKeyPressed() also be raised for the MENU and CLOCK key?
    - what can I do in onKeyPressed()? Can I, for example, push another Ui.View() here? If so, which View object gets the onKeyReleased() event then?

    The ConnectIQ 1.1.1 <SDK>/bin/devices.xml had information indicating the light key was supported, but that was removed (as mentioned in the quote above). Given that they are saying it isn't supported by any current devices, I'm guessing it isn't going to be something you'll have access to.


    The issue was slightly different (see my post in the simulator bugs thread): the simulator did allow to intercept the Light key. I loved that and implemented it in my code. But the actual device doesn't support this and the code failed. You could fix this inconsistency in two ways: (1) remove support for the Light key from the simulator, or (2) add support to the device. I had hoped for the second (every physical button is a real asset!), but Garmin picked the first option. :(
  • Hello,

    what about the bug mentioned in this thread

    https://forums.garmin.com/showthread.php?245750-Widget-showing-weather-radar-image

    BR
    Joe

    makeImageRequest() is still not working. This will be addressed in the next minor point release. Sorry for the delay on the fix.
  • 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.


    Glad to hear you got it working. We did change how the files get pushed to the simulator in Windows. Everything used to be pushed as app.prg, but now they're pushed using the project name. Let us know if you have any other issues.