개발자 블로그

화면을 켜진 상태로 유지하기 본문

프로그래밍/안드로이드

화면을 켜진 상태로 유지하기

로이드.Roid 2016. 12. 24. 01:46

안드로이드 화면을 켜진 상태로 유지하는 두 가지 방법이 있다.

1. FLAG_KEEP_SCREEN_ON 플래그를 이용하는 방법
2. PowerManager를 이용하는 방법

일단 대부분의 경우에는 1번의 방법을 사용하면 된다.

OnCreate() 메서드 안에 아래 코드 한 줄만 추가해주면 된다.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

특별한 퍼미션도 요구하지 않고 쉽게 사용할 수 있지만 한가지 제약사항이 있다. 해당 액티비티가 백그라운드로 전환되면 화면 켜짐 상태가 더이상 유지되지 않는다.


화면을 항상 켜진 상태를 유지하도록 토글기능을 제공하는 위젯처럼 몇몇 특수한 경우에는 액티비티가 백그라운드 상태에 있더라도 화면을 계속해서 켜진 상태로 유지해야 된다. 이런 경우에는 위에 2번(PowerManager를 이용하는) 방법을 사용하면 된다.

간단하게 사용이 가능한 1번 방법과는 달리 퍼미션을 요구한다.

따라서 AndroidManifest.xml 파일에 아래 코드를 추가해줘야 한다.

<uses-permission android:name="android.permission.WAKE_LOCK"/>

그리고 화면을 켜진 상태로 유지하기 위한 코드는 아래와 같다.

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "tag_name");
mWakeLock.acquire();

newWakeLock()에 첫 번째 인자로 전달하는 플래그로는 아래의 값들을 사용할 수 있다. 

플래그 값에 대한 자세한 설명은 여기를 참조. 


더이상 화면을 켜짐상태로 유지할 필요가 없어진 때에는 release() 함수를 호출하면 된다.


다만,,,,, 큰 문제가 있는데 SCREEN_DIM_WAKE_LOCK 플래그는 현재 deprecated된 상태다. 대체 할 수 있는 다른 플래그 SCREEN_BRIGHT_WAKE_LOCK, FULL_WAKE_LOCK 역시 마찬가지로 deprecated되었기 때문에.. 당장은 사용할 수 있지만 앞으로 어떻게 될지는 장담할 수 없는 상태다. 따라서 이에 대한 대비도 필요할 것 같다.

Comments