How to detect if a watch has an AMOLED or MiP display in Monkey C?

Hi,

I'm developing a Connect IQ app, and I need to determine whether the watch has an AMOLED or MiP display. Currently, I don't see any direct API method to check the display type.

For now, my approach is to use Device.getDeviceInfo().screen and check the resolution. If x > 300, I assume it's an AMOLED display. However, this feels like a workaround rather than a proper solution.

Another option is Device.getModel(), comparing it against a list of known AMOLED models, but that also seems inelegant.

Is there an official way to determine the display type in Monkey C?

Thanks!

  • What I do for watch faces is this,  For other app types, I don't really care, but with AMOLED WF's, you are limited as to how much you can do when in low power mode.

            canBurnIn=false;
            sSettings=System.getDeviceSettings();
            if(sSettings has :requiresBurnInProtection) {       
            	canBurnIn=sSettings.requiresBurnInProtection;        	
            }

  • I know this thread is a bit old, but I just now ran into the same question. Another way to check the display type is to test for the existence of the System.getDisplayMode function — it's available only on devices with AMOLED or LCD screens.

    if( System has :getDisplayMode ) {
        // ...
    }

    https://developer.garmin.com/connect-iq/api-docs/Toybox/System.html#getDisplayMode-instance_function

  • You want to be careful with this, and include a has check as I do with requiresBurnInProtection, as it's only available on devices with CIQ 5.0.0 or greater and you don't want a crash on devices pre 5.0.0.

    Also, it won't work on old devices like the venu that are AMOLED and pre 5.0.0 (it's 3.3.x)

  • You want to be careful with this, and include a has check as I do with requiresBurnInProtection, as it's only available on devices with CIQ 5.0.0 or greater and you don't want a crash on devices pre 5.0.0.

    Also, it won't work on old devices like the venu that are AMOLED and pre 5.0.0 (it's 3.3.x)

    I was referring to the has check — see my example code.

    You're absolutely right about older models, though — my check won't work on those. The advantage of checking for getDisplayMode is that it's clearly documented which devices support it, whereas requiresBurnInProtection is more implicit and less clearly defined in terms of which devices return true.