Metro/Windows 8

윈도우8: 코드로 디스플레이 절전기능 방지하기

길버트리 2013. 1. 23. 21:04

요즘 디바이스들은 모두 사용자의 입력이 없으면 자동으로 디스플레이가 꺼지는 절전기능이 있습니다.

하지만 pooq앱 TV를 시청하다가 내가 보기만 하고 아무것도 안하고 있단 이유로 자꾸 꺼지면 짜증이 지대로일 것입니다.

 

일단 DisplayRequest라는 클래스가 오늘은 주인공입니다.

절전기능을 막기 위해서 간단히 아래와 같이 하면 됩니다.

 

private DisplayRequest _displayRequest;

public void AllowsAutoDisplayOff(bool allow)
{
    if (_displayRequest == null)
    {
        _displayRequest = new DisplayRequest();
    }

    if (allow == false)
    {
        _displayRequest.RequestActive();
    }
    else
    {
        _displayRequest.RequestRelease();
    }
}

 

 

여기서 끝이면 재미없죠?

DisplayRequest의 RequestActive는 호출한만큼 Release 해줘야 하는 녀석입니다.

그렇다보니 호출 카운트를 관리해야 합니다.

 

아래는 호출카운트까지 관리하고 있는 코드입니다.

 

 

private DisplayRequest _displayRequest;
private static int _requestCount = 0;

public void AllowsAutoDisplayOff(bool allow)
{
    if (_displayRequest == null)
    {
        _displayRequest = new DisplayRequest();
    }

    if (allow == false)
    {
        _displayRequest.RequestActive();
        _requestCount++;
    }
    else
    {
        for(int i = 0; i < _requestCount; i++)
        {
            _displayRequest.RequestRelease();
        }

        _requestCount = 0;
    }
}

 

 

이걸 App.Suspending이나 App.Resuming 이벤트 핸들링하실 때와

App 생성자, OnLaunched, OnSearchActivated 등에서 시나리오에 맞게 적절히 호출해 주시면 되겠죠?