Need some help to Understand onEnterSleep()/onExitSleep() ,onDisplayModeChanged(), burn-In, AOD or Low Power mode

Hi, Since a few months, I have some problem with my users with AOD. Some user are reporting a flicking screen when coming in AOD or low power modeI

I don't understand the logic with onEnterSleep, onDisplayMode, burnIn protection, AOD and LowPower

I just have built a little watchface on my Epix2, and when I click on "Display Mode" ---> always On (on the simulator), it seem to be OK, but the system doesn't detect burnin. I have some pixel which are alway on, and event on my Epix, it's always displayed. No burn In detection.

Also, on my Epix, sometime, the screen is refreshed each second, and I am still in "enter sleep" mode, I can't explain why. Then this could explain the flicking screen of my users.

And the function onDisplayModeChanged() is never called ???? Perhaps normal in AOD mode ??

Here's my little code : 

    function onUpdate(dc as Dc) as Void {
        View.findDrawableById("Label15").setText(System.getClockTime().sec.format("%02d"));
        View.findDrawableById("Label50").setText(st1);
        View.findDrawableById("Label75").setText(st2);
        View.onUpdate(dc);
    }

    function onEnterSleep() {
        st1 = "Enter sleep";
        WatchUi.requestUpdate();
    }

    function onExitSleep() {
        st1 = "Exit sleep";
        WatchUi.requestUpdate();
    }

	function onDisplayModeChanged() {
		var displayMode = System.getDisplayMode();
        st2 = "Display="+displayMode;
        WatchUi.requestUpdate();
	}

Thanks a lot for your help

  • I have some pixel which are alway on, and event on my Epix, it's always displayed. No burn In detection.

    I don’t have direct experience with this, but my understanding is that the original “no pixel may be on continuously for more than 3 minutes” rule does not apply to newer devices, based on various forum discussions and reading in between the lines of some of the newer CIQ announcements.

    I think newer devices utilize automatic pixel shifting to avoid burn-in. (Activity data screens definitely use pixel shifting, according to multiple developer reports, and I wouldn’t be surprised if the same happens with watchfaces. You could try to verify this by taking multiple screenshots of your watchface over time on a real device, and comparing them on your computer.)

    IOW, in the past it was up to the dev to implement pixel shifting, and now the device does it for you.

    This is what I think the history of the burn-in rules is (please feel free to correct me):

    - CIQ 3: "OG Venu rules" (3 minute rule?)

    - CIQ 4: 10% pixels max

    - CIQ >= 5 (System 7): 10% luminance max

    I realize some of the documentation is a little inconsistent here (as one page says the rule is both 10% pixels max and no pixel can be lit for more than 3 minutes.)

    https://forums.garmin.com/developer/connect-iq/f/discussion/372772/always-on-display---implementations-jumping-vs-static

    There has been following requirements in the past that did change over time:

    • switch pixels and don't use the same ones consecutively
    • don't use more than 10% of the pixels
    • don't use more than 10% luminance

    https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/welcome-to-system-7

    Always on Always

    The original Venu was the first Connect IQ device with an AMOLED screen and introduced the heuristics to avoid screen burn-in. Newer devices allow watch faces to keep the screen on in “Always On” mode if the screen is using less than 10% of the display pixels.

    With API level 5.0.0, we are updating the heuristic from one based on pixels to one based on luminance. Now the screen will stay on if the display is using less than 10% of the total luminance. This allows you to use more pixels.

  • Well, very interesting

    Here's what I have seen just now on a real device (Epix2) :

    With my test watchface not using 10% of pixels, the watch is going to sleep for 8 sec. After this, the screen After this, the screen is going off after the next minute

    With my test watchface using  more than 10% of pixels, the watch is going to sleep for 8 sec. After this, the screen is going off.

    With the simulator, if using less than 10% pixels, when going alway on, the screen iskeeping on eveytime, even after some minutes

    When using more than 10%, when going alway on, the error of more than 10% pixels used and screen will shutoff.

    But in all the cases, the function onDisplayModeChanged() seem to be never used and never called ? 

    Some users are reporting screen flicking when the sleep mode is entering, and I can't understand this. That's why I was trying to use this function, but no luck.