Simulator - Poor Image Quality

Former Member
Former Member
I've been playing with the Connect IQ SDK over the past couple of days and have some questions about the image quality of the simulator, and whether or not these issues extend to watches.

I downloaded a few emoji images from https://github.com/twitter/twemoji/ to see how they show up on the devices, and the results are not only disappointing, but very inconsistent. Here's what I see:

This is the square sim, and the results are acceptable:



The following is an assortment of round watches and the results vary, even between different runs of the application. How many colors can these screens display? Is it just 16?







Additionally, I've played around a bit with the "palettes" attributes for bitmaps (described here http://developer.garmin.com/connect-iq/developer-tools/resource-compiler) which are also puzzling.

When setting only a single color in the palette, the images are converted to that color, but on the round watches the colors are inverted, which means that if I'd like one to show up in white (FFFFFF) then I need to set the palette to black (000000).

Has anyone else seen anything similar to this? I haven't tried loading the app onto my Fenix 3 because I'm still running the stock firmware.

FWIW I'm using the latest version of the SDK (1.1.0).

Thanks!
  • The simulator is different than an actual device (your PC in the sim is lower res than the real device many times). Try sideloading a .prg on a device to see the differences.
  • Former Member
    Former Member over 10 years ago
    Okay, so I've solved my issues here, but I'll share some of my experience for those of you that are or plan on using strictly the CLI tools.

    Let me start off by saying that I'm not using the Eclipse plugin. I personally can't stand Eclipse, so let's leave it there and get to documenting the oddities of the CLI tools:

    Build Targets:

    The issue that I ran into above is that I didn't build the .prg file specifically for the fenix3 (or a round device). If you want to test your build on a specific device, you must pass that device name to the `monkeyc` command.

    monkeyc -o bin/MyApp.prg -d fenix3 ... ... ...


    `monkeydo` Devices:

    Another undocumented feature of the toolchain is the ability to run a specific device from the `monkeydo` command. I had to run `ps`after generating a build target from Eclipse to figure this one out, but here's the command:

    monkeydo bin/MyApp.prg fenix3


    Unfortunately, this is the output of `monkeydo` if you don't provide any arguments:

    usage: basename string [suffix]
    basename [-a] [-s suffix] string [...]


    Build Resources:

    The docs state that resource files should be separated by semicolons on the command line. In Unix (OS X) that results in ending the command things go really far south from there. When trying to add quotes to the semicolon-separated argument the compiler complains that it can't find the file, which happens to be a semicolon-separated list of files:

    monkeyc -d fenix3 -o bin/MyApp.prg -m manifest.xml -z 'resources/resources.xml;resources/layouts/main_layout.xml' source/*.mc
    ERROR: /Users/stephen/code/MyApp/resources/resources.xml;resources/layouts/main_layout.xml (No such file or directory)


    The solution to this is to simply supply multiple `-z FILE` arguments:

    monkeyc -d fenix3 -o bin/MyApp.prg -m manifest.xml -z resources/resources.xml -z resources/layouts/main_layout.xml source/*.mc
  • Sorry for the help on monkeydo being out of date, we'll get it updated. For OS X, you need to use ':' and not ';' to separate files for the -z argument.
  • Back to the subject of poor image quality, when I use the Connect IQ Device Simulator (4.0.3) to load a watchface that includes a background image, the image quality is always very grainy.  The image looks great when side-loaded and displayed on my actual watch.  This occurs when I use ecliple to start the DS (Device Simulator) and when I run it manually via the monkeydo command.

    I am ready to publish my watchface, but the sample images captured using the DS really make the quality look 2nd rate.  Is there a way to improve the image quality produced by the DS?  If not, how do ya'll create the quality watchface examples I see on the Connect  IQ store?

  • With the sim, for a 240x240 device it will use 240x240 pixels, and based on your display and it's resolution is probably much larger than the actual device and will therefore looks grainy -for the simple reason the pixel size isn't the same,  With a venu 2 target (416x416) the display takes close to 1/2 the height of my screen for example.

    There's other things you need to consider between the sim and a real device, with colors being high on the list.  In the sim, red text on a black background my look fine in the sim,, but is hard to read on an MIP device, and may not be too bad on a AMOLED/LCD device.

    When it comes to images for the store, you may want to resize the images from a print screen, take a picture of it running on the watch, etc.  Some devices also allow you to take a screen shot on the device, but what you'll get is a rectangular image even on a round device.

  • Another this to consider is the color depth of the device.  You should see this in the sim, but some devices only have 8 colors, some 16, some 64, and then many more on the venu devices.

  • Hi Jim,

    Thanks for the input.  I'm not concerned about what the images look like on the actual device.  They look great there.  I am only concerned with how they look when displayed on the DS (Device Simulator) because that is what I plan to use to capture screenshots before publishing my watchface. 

    As for my computer monitor's resolution, I do not think that is causing the issue.  When I load the 240x240 image using paint, it is the exact same size on screen as the image shown in the DS.  The DS image is grainy while the same image shown in paint is perfectly clear.  Again, when I side load the watchface onto my watch, the image looks great.  It only looks grainy in the Device Simulator.

    Can anyone tell me what tool(s) they use to capture watchface screenshots before publishing?  I cannot take screenshots from my watch itself, so that is not an option.

  • Not to state the obvious, but if you feel that the quality of the image produced by the simulator is degraded compared to the real image displayed by the watch, it won't matter what screenshot tool you use to capture images from the sim. Outside of esoteric use cases like HDR (which doesn't apply here), any screenshot tool is just going to take a 1-to-1 copy of the rectangular area of the screen you've selected.

    How many colors does your original 240x240 background have and which watch are you targetting in the simulator and for the real device?

    It seems that if your image looks "grainy", it could be due to dithering which is applied by the Garmin resource compiled by default.

    You could try:

    1) Disabling dithering, period.

    2) Disabling dithering and dithering/editing the image yourself so it has the correct number of colors

    See: [https://developer.garmin.com/connect-iq/core-topics/resources/#bitmaps]

    You could also do what Jim suggested and take a photograph of the watchface on the real watch.

    But since you asked, I like to use WIN-SHIFT-S in Windows 10 (the Snipping Tool), and I use the rectangular snip feature to capture the area I want.

    For some listing images, I like to change the background from white to transparent, so that it looks "good" (subjectively) on either a white background (e.g. store website) or a black background (e.g. Garmin Connect app). I use Paint.NET for that, although of course you could use Photoshop or GIMP as well.

    I do think it doesn't matter which tool is used to take the screenshot itself since the principle is the same for all of them. The only difference between various screenshot tools are things like: what region of the screen they capture, how usable they are, whether they can take videos, whether they support HDR, etc. But none of those things matter for Garmin store screenshots, except for ease of selecting a screen region and usability.

  • If you look in the apps store, many of the images are just based on ctrl-alt-printscreen and trimmed to remove the window border.

  • Hi FlowState, Jim,

    Thanks.  I did not mean to imply I was asking if there is a "better" screen capture tool I can use to improve the quality of the Device Simulators images.  I was asking if there is some way to remove the grainy effect from the device simulator itself.  Maybe by passing in some command line options, changing some configuration settings, etc. I figure lots of people use the DS to capture the images they publish, and I cannot be the only one who has this issue.  I am simply displaying a standard png image resized to exactly 240x240.  I've tried using a 24 bit bmp, 256 color bmp, etc and they all display on the DS with the same grainy affect (but they display on my physical device just fine).

    I also figured some people may use a completely different tool or emulator to generate the high quality publishable images that appear in the Connect IQ store. If so, I was hoping someone could share their tips.  But if you are just using standard color backgrounds you will not see this issue.  It only occurs when displaying images in the background.

    Does anyone know how to remove the gariny effect from images displayed via the Device Simulator?  If it is just a known fact that the grainy effect cannot be removed from images displayed via the DS, does anyone know a good way to generate a nice image of my watchface without having to re-create it using a photo editing tool?