슬립모드에 들어갈때와, 슬립모드 해제할때에 무언가 동작을 하기 위해서는 2가지 이벤트를 받아야 한다.


android.intent.action.SCREEN_ON

android.intent.action.SCREEN_OFF


이 두가지 이벤트는 안드로이드 정책 변경으로 인해 Manifest에 기술해서는 받을 수 없고, registerReceiver()를 이용하여 동적으로 등록해야만 정상적으로 이벤트를 받을 수 있다.


다음처럼 등록을 하여 사용하였다.


ScreenOnReceiver screenOnReceiver = new ScreenOnReceiver();

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.SCREEN_ON");
filter.addAction("android.intent.action.SCREEN_OFF");
registerReceiver(screenOnReceiver, filter);


class ScreenOnReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d("SmartPortal", "ScreenOnReceiver, onReceive:" + action);
        if (action.equals(Intent.ACTION_SCREEN_ON)) {
            ...
        }
        else if (action.equals(Intent.ACTION_SCREEN_OFF)) {

...

        }
    }
}



+ Recent posts