Hey Developers!

We have two SDKs for you this week. First is our Production 3.0.12 SDK. Second, is our 3.1.0.beta3 SDK and accompanied plugin.

Here are the change logs for the two SDKs:

3.0.12:

General Changes

  • Update device images to avoid showing draw area behind device.
  • Fix issues escaping strings sent to the debugger output window.
  • Fix alpha transparency issues seen when rendering transparent bitmaps on Forerunner® 45.

Simulator Changes

  • Fix a bug with ActivityRecording auto-start that would cause a new session to be created unexpectedly after a session that used auto-start was saved or discarded.
  • Fix fonts on Forerunner® 45 to match the device.

Compiler Changes

  • Fix bug in the opcode generation logic of a try / catch statement when a Toybox exception is being caught.

3.1.0.beta3:

General Changes

  • Fix issue that caused System.println() and System.println() to stop working after a background process had exited.
  • Fix bug in the RunNoEvil framework, which was causing only a single test to be executed when the developer chose to execute more than one unit test.
  • Apply special handling for requests to clear buffered bitmaps to transparent.
  • Fix a thread safety issue.
  • Fix a bug with ActivityRecording auto-start that would cause a new session to be created unexpectedly after a session that used auto-start was saved or discarded.
  • Overhaul Animation APIs and introduce new WatchUi.Layer class
  • Add DeviceSettings.systemLanguage to get the language being used by the device or simulator.
  • Update the Media.CacheStatistics.size / capacity API documentation with the correct return type.
  • Fix an issue that prevented some background events from running.
  • Fix an issue that caused an unexpected type error when passing a MapMarker to MapView::setMapMarker().
  • Add SDK version to “Help > About” in the ERA Viewer.
  • Allow marking a crash report as new again in the ERA Viewer.
  • Allow drag-and-drop sorting when managing apps in the ERA Viewer.
  • Add a drop-down box to choose a sorting method for crash reports in the ERA Viewer.
  • Sort newly downloaded apps by name in the ERA Viewer.
  • Add menu option to reset the data stored by the ERA Viewer.
  • Do not require loading a project’s manifest file to select devices in the animation converter.
  • Give the Eclipse plug-in’s debugger the ability to open Monkey Barrel source code when directly linking to a barrel project.
  • Introduce a script that converts GIFs to a YUV video format and attempts to apply some optimizations, which results in a smaller encoding of the video file.
  • Fix alpha transparency issues seen when rendering transparent bitmaps on 8-color devices like the Forerunner® 45.
  • Fix non-square animation playback error.
  • Add support for the Edge® 530, Edge® 830, Forerunner® 245, Forerunner® 245 Music, Forerunner® 945, and Forerunner® 45.
  • Fix an issue that prevented some background events from running.
  • Reduce memory required to load app settings.
  • Fix an issue that caused an unexpected type error when passing a MapMarker to MapView.setMapMarker().
  • App Storage now supports saving Dictionary and Array objects that contain resources such as images and animations.

Simulator Changes

  • Fix apparent simulator hang seen when using a many calls to System.print() or System.println().
  • Remove random GPS quality changes when simulating FIT data.
  • Fix issues handling of swipe events when using picker views.
  • Update Battery Status dialog to set the focus to the Okay button when the user is editing the the battery percentage value and presses enter.
  • Fix an issue that caused auto-lap functionality to be enabled when simulating or playing back FIT data.
  • Update device images to avoid showing draw area behind device.
  • Fix issues escaping strings sent to the debugger output window.
  • Disable unsupported options under “Settings > Connection Type” when loading a new device.
  • Avoid clearing app storage on device change. Instead, clear the requested background events so they do not run on devices that do not have backgrounding support.
  • Fix a crash that occurred when downloading jpeg image files via makeImageRequest.
  • Edit Persistent Storage dialog refactored to support resource preview and switching to use tree list for object exploration.
  • Persist simulator settings across runs.
  • Fix issue with Edge® 130 fonts.

Compiler Changes

  • Fix bug in the MonkeyMotion video encoder, which caused pixels to be cut off if the resolution was not a multiple of 4.
  • Fix bug in the opcode generation logic of a try / catch statement when a Toybox exception is being caught.
  • Reduce memory consumption of fonts that have the antialias attribute set to true for devices that do not have the ability to render anti-aliased fonts by overriding the attribute. These devices include the the Forerunner® 45, the Forerunner® 920XT, and the Edge® 130.
  • Fix bug in variable initialization checking for switch statements containing for loops.

Beta Layer API and Animations Change Notes:

Yes the change log for the Beta is Massive!

Please note, for those of you who are interested or have already started using the new Animation system in 3.1.0 Beta build in the past, we have made made breaking changes to this API structure. We found some ways to save precious memory and provide more flexibility to developers so we figured this should be done while we were still in Beta! This includes a new Layer API. It's hot off the presses and the documentation is a little scarce on it right now, but the included animated watch face in the samples with 3.1.0.Beta3 will give you some reference. Here is a super simple overview of how it works:

  1. Create one or more Layer objects, each containing a resource (bitmap, animation, etc.) positioned within a clipped region (we're essentially making BufferedBitmaps).
  2. Add all the layers you'd like to display to a View in the order they should be drawn (FIFO).
  3. When the view is displayed, all of the layers get blitted to the system Dc.

Even more simple: Multiple new Layer objects can be created with a custom size clipping region, then merged together on an update.

This will have ZERO effect on all of your regular Dc drawing calls if you are a developer who doesn't want to use this.

We plan to have more complete documentation in the future, however, even if you don't use these new APIs, you should totally run the new animation sample and put the sim and toggle off Low Power Mode. You will be happy. 

Happy Coding, Connect IQ Community!!!