Connect IQ 2.1 SDK Preview!

The Connect IQ version 2.1 preview SDK is now available on the developer site!

We're excited about this release because it adds a bunch of new features that many Connect IQ developers have been asking for, like custom FIT recording, OAuth, Widget & App support for Edge products, and more! You can find out all about it and download it here:

http://developer.garmin.com/index.php/blog/post/connect-iq-2-biker-monkey

Since this is a preview, you won't be able to export apps for submission to the app store, but you can build apps to side load to your own device for development and testing purposes. Please give it a try! If you have feedback or notice any bugs, you can post to this forum or send your comments to the Connect IQ team at [EMAIL="[email protected]"][email protected][/EMAIL].

Thanks!

- The Connect IQ Team
  • Former Member
    Former Member over 9 years ago
    If the main issue is with memory, why not let user choose to use up two slots of resource for Biker data field/widget, won't that be easier rather then creating fragmentation?

    Would really be helpful if you would announce which is really the flagship so that developer does not need to always buy new products. This is especially an issue when the platform is not even profitable yet.

    I am glad that I have an edge 1000 but is really disappointed that I made a poor choice investing in fenix 3 hr.

    Developers like me will probably avoid Biker all together because most of their users won't even be able to use them.
  • Former Member
    Former Member over 9 years ago
    agreed

    If the main issue is with memory, why not let user choose to use up two slots of resource for Biker data field/widget, won't that be easier rather then creating fragmentation?

    Would really be helpful if you would announce which is really the flagship so that developer does not need to always buy new products. This is especially an issue when the platform is not even profitable yet.

    I am glad that I have an edge 1000 but is really disappointed that I made a poor choice investing in fenix 3 hr.

    Developers like me will probably avoid Biker all together because most of their users won't even be able to use them.


    I totally agree with this. I bought a F3HR for this and can't really see myself even using a lot of CIQ on my edge 1000. For a product that was available to market less than 3-4 months ago it seems like my 235 all over again.
  • Feature request: as Garmin creates numerous versions and firmwares, please add detection SDK version method.
  • Former Member
    Former Member over 9 years ago
    Feature request: as Garmin creates numerous versions and firmwares, please add detection SDK version method.

    I think it's already done in CIQ 1.2.9. Look at

    System.println(System.getDeviceSettings().monkeyVersion)

    Also the firmwareVersion parameter can be interesting.
  • Former Member
    Former Member over 9 years ago
    Am i correct in thinking that we're still waiting for a firmware update for the Edge devices in order to use binaries that take advantage of the 2.1 SDK features?

    Edit: nevermind - found my answer about 8 posts up!
  • ABURLAKOV, thanks, documentation holds this, but not trivial to find.

    Issue: strange warning messages
    SDK 2.1 is installed, but 1.2.9 used as primary.
    BUILD: WARNING: The app name should reference a string resource using @Strings.AppName
    BUILD: WARNING: The launcher icon should reference a bitmap resource using @Drawables.LauncherIcon
    BUILD: WARNING: C:\Garmin\source\QA.mc:66: Class 'QA' does not initialize its super class, 'View'
    BUILD: WARNING: C:\Garmin\source\QA.mc:263: Class 'InputDelegate' does not initialize its super class, 'BehaviorDelegate'
    BUILD: WARNING: C:\Garmin\source\QA.mc:308: Class 'QApp' does not initialize its super class, 'AppBase'

    - how to reference to AppName and LauncherIcon? They're already in resources.
    - Why do I need to initialize super class (I assume when no initialize() constructor present in class, it should be called automatically) ?
    Solution is to add in every class appropriate constructor:
    function initialize()
    {
    View.initialize();
    return true;
    }


    Improvement request:
    Please use only 25% - 50% - 75% - 100% load messages to simulator. It overwhelms console with 1-2% messages.
  • - how to reference to AppName and LauncherIcon? They're already in resources.


    pName=Ui.loadResource(Rez.Strings.AppName);
    icon = Ui.loadResource(Rez.Drawables.LauncherIcon);


    Or do you mean to avoid the warning?
    In the manifest file you do this where the icon and name are specified...

    launcherIcon="@Drawables.LauncherIcon" name="@Strings.AppName"
  • Or do you mean to avoid the warning?
    In the manifest file you do this where the icon and name are specified...

    launcherIcon="@Drawables.LauncherIcon" name="@Strings.AppName"

    Thanks, this works. It all because I used demo projects from 1.2.9 and syntax of files a little bit changed now.
  • 1) Please add to the documentation example how to use i.e. getTemperatureHistory with (currently there are no parameters, it called {})

    It looks confisung in documentation how to use
    Parameters:
    options (Dictionary) — Dictionary of options. Can be null.
    Options Hash (options):
    /[Duration] (Number) — :period If period is not provided, the entire available history is retrieved. If period is a Duration, then the history for the given Duration is retrieved. If period is a Number, then the last Number entries are retrieved.
    :order (Boolean) — If order is not provided, the samples will be newest first. Use the ORDER enumeration to explicitly select “newest first” or “oldest first”


    How can I guess from the description above, that right variant will be:
    { :order=>SH.ORDER_NEWEST_FIRST, :period=>10}
    - ORDER constants hard to find.
    - what are the units of Duration? Seconds? Msec? Minutes? Please describe.

    2) Add to the documentation examples and results of the functions:
    ceil(123.456) = 124.000000
    ceil(123.88) =124.000000
    floor(123.456) =123.000000
    floor(123.88) =123.000000
    * I guess floor result should be Long type.
    round(123.456) =123.000000
    round(123.88) = 124.000000
  • I faced with the absence of the function trunc().
    This function should truncate decimal part and float converts to numeric type.
    var num=trunc(123.456); // num will be 123
    Please consider to add it to math unit.