화면이 꺼진 상태에서 특정 이벤트에 반응하여 화면을 켜고 싶을 때, 다음과 같이 WakeLock
을 이용하면 화면을 켤 수 있다.
단, WakeLock 을 사용 후 적절하게 해제하지 않으면 전력소모가 심하므로 반드시 release()
를 해 주어야 한다.
AndroidMenifest.xml
<users-permission android:name="android.permission.WAKE_LOCK">
다음과 같이 구현해 두고 적절한 곳에서 호출하자.
예) onCreate()
에서 acquireWakeLock()
을 호출하고, onDestroy()
에서 releaseWakeLock()
을 호출한다.
PowerManager.WakeLock wakeLock;
private void acquireWakeLock(Context context) {
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
, context.getClass().getName());
if (wakeLock != null) {
wakeLock.acquire();
}
}
private void releaseWakeLock() {
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
}