Connect IQ 1.2.0 SDK beta!

This morning we released a public beta of the 1.2.0 Connect IQ SDK! The beta SDK will allow developers to get their hands on the fun stuff we've been putting together lately, and gives everyone a chance to update their apps to take advantage of these new features. In addition to the SDK beta, there are also beta firmware releases for all current Connect IQ devices to include support for the 1.2.0 SDK. You can read about the details, as well as find links to the SDK and firmware downloads, over on our developer blog:

http://developer.garmin.com/index.php/blog/post/announcing-connect-iq-1.2

Just a couple of notes:
  • We've temporarily disabled the ability to build app packages via the App Export Wizard (which creates .iq files) to avoid 1.2.0 beta apps from making their way to the Connect IQ app store until we are out of beta. Developers will be able to create PRG files with the Build for Device Wizard, however, which can be side loaded for testing on devices. If you're planning any updates to apps that are on the store, and the updates don't require 1.2.0 SDK features, build with the 1.1.4 SDK so you'll be able to publish those updates to the app store.
  • If you plan on trying out the 1.2.0 SDK beta, please be sure update your Eclipse plug-in to version 1.2.0 by clicking the Help > Check for Updates menu item.
  • We've talked about this, but there are some issues that we'd have to address before this could be implemented. I don't know if we ultimately intend to move in that direction or not.
  • Hi Brandon,

    Since you didn't shut the door completely, I'll through out my use case scenario.

    We're working on a Data Field that will support 3 Moxys. Many of our athletes wear a sensor on the left and right Vastus Lateralis as well as the Deltoid to look for more systemic type responses. Other combinations of muscles are also used.

    I haven't come up with a really practical way to pair to 3 sensors inside of a data field. It can certainly be done with some combination of prompts and proximity pairing but it's not nice and would need to be done every time the DataField was started.

    The App Settings is an obvious choice for a solution. You can just type in the sensor numbers and locations. However, you might want to do the pairing away from your computer or phone. If there was a Sensor Pairing Watch App, you could pair to the 3 sensors with a look and feel that matched the look and feel of how a watch pairs to natively supported sensors. Then this data could be shared with the Data field so it would know which sensor numbers to pair to and which muscle they were attached to.

    As a bonus, the pairing app memory usage would not add to the data field memory usage.

    It seems like just about any data field using generic ANT will have a similar issue, but maybe I'm not imaginative enough for other alternatives.
  • Former Member
    Former Member over 9 years ago
    I'm not sure if this is a bug in the new 1.2.0 SDK or wrong usage, but I noticed that after I pause the activity and later restart/resume it, then the activityInfo.elapsedDistance value doesn't increase anymore.

    I create a session using Toybox.ActivityRecording.createSession() and then start it using session.start(). After 7.86 km I paused it using session.stop() and after a couple of minutes I resumed it using session.start(). All goes into one .fit file, but after I resumed it, the distance stays at 7.86 km. All other values of activityInfo seem to be correct so far though.
  • I'm not sure if this is a bug in the new 1.2.0 SDK or wrong usage, but I noticed that after I pause the activity and later restart/resume it, then the activityInfo.elapsedDistance value doesn't increase anymore.

    I create a session using Toybox.ActivityRecording.createSession() and then start it using session.start(). After 7.86 km I paused it using session.stop() and after a couple of minutes I resumed it using session.start(). All goes into one .fit file, but after I resumed it, the distance stays at 7.86 km. All other values of activityInfo seem to be correct so far though.


    Pausing (stopping/starting after a bit) works fine for me on a va with an app built with 1.2.0 and the beta FW for a the va.

    What does your data look like when you upload the .fit to GC? Is stuff recorded after the pause? Could it be that you're not actually restarting the recording, or could it be for some reason you're not updating the display after the stop re-start?
  • Former Member
    Former Member over 9 years ago
    Pausing (stopping/starting after a bit) works fine for me on a va with an app built with 1.2.0 and the beta FW for a the va.

    What does your data look like when you upload the .fit to GC? Is stuff recorded after the pause? Could it be that you're not actually restarting the recording, or could it be for some reason you're not updating the display after the stop re-start?


    Yes, it is recording at least the speed and positions after the restart. I forgot to tell that I use the fr920xt with the beta FW 6.2.0.0 and 1.2.0 SDK. Here is the track:

    https://connect.garmin.com/modern/activity/925577588

    It shows just data until 7.86 km, but on the map you can see that positions have been recorded afterwards. I'll try to reproduce it on the vivoactive too.
  • This sort of looks like it recorded up until 7.8xkm, the started after the pause and moving a few blocks and then was saved a while later at another place. It looks like after 7.86, the route is straight for a while (I've seen that if I move a distance while paused). Did this work on earlier FW or is this a new app? Does your app show anything (like "paused") when you're paused?

    See attached for where it looks like where you moved while paused. :
  • Former Member
    Former Member over 9 years ago
    Yes, just before the the straight line I pressed "enter" on the fr920xt, which calls session.stop.(). Right after that I show a menu with "resume", "save" and "discard". The menu is non-blocking, which I figured out with logging.

    Then at the end of the straight line I selected "resume", which calls session.start() again. I would have expected that there is no straight line at all, but then again on movescount.com there would also be a straight line, if the endpoints are not marked with start-/stop-"marks".

    I just double-checked and all other values are shown ok. I take the distance value (and all other values) from the activityInfo which I get on every onUpdate() call.

    function onUpdate(dc)
    {
    activityInfo = Act.getActivityInfo();
    if (activityInfo != null)
    {
    compute(activityInfo); // just calculates some windsurfing speed statistics
    }

    [...]


    Currently the only need for 1.2.0 is the drawArc function I use in the race-timer:
    http://www.chumba.ch/garmin/ws_app_vivoactive.png

    Anyway, I'll test with the 1.1.4 SDK and also with the vivoactive. Is that the right thread for that or should I do a separate one?

    Thanks a lot for your help!
  • New generic Picker / Picker Delegate

    The generic Picker is great -- well in concept.

    Has anybody built a simple working implementation using the Picker / Picker delegate? Whenever I try to run it, I get these errors:
    Failed invoking <symbol>
    Symbol Not Found Error
    Symbol Not Found Error


    Here's my test code

    class MyNumberFactory extends Ui.PickerFactory{
    function getDrawable(item, isSelected){
    return new Ui.Text({:text=>item.toString()});
    }
    function getSize(){ return 10; }
    function getValue(item){ return item;}
    }

    class MyPickerDelegate extends Ui.PickerDelegate{
    function onAccept( values ){ return true; }
    function onCancel( ){ return true; }
    }
    class MyInputDelegate extends Ui.BehaviorDelegate {
    function onMenu(){
    Ui.pushView(new Picker({:title=>"Number Picker", :pattern=>[new MyNumberFactory()]}),
    new MyPickerDelegate(),
    Ui.SLIDE_IMMEDIATE );
    return true;
    }
    }
  • Is there a date set for the public roll out of the new firmware?
  • This is very good news :).

    By the way. It will be nice to have possibility to make some settings in application directly in watch. I thought, that this could be solved in that way:

    - suppose that we have application MyApp
    - we can write second application MyAppSettings.

    <application_name>Settings works on the same data storage as <application_name>.

    It shouldn't be difficult to do and gives unlimited possibilities without wasting memory during course of main application (<application_name>).



    I like this idea. Right now the native menu system is really taking up lots of memory. Even 15kB of memory is not adequate buffer for a menu system that mimics Garmin native. It's kinda frustrating honestly.

    Is there possibilities to have all the menu stuffs to be offloaded to the Garmin express or such?