Use the method of dynamic registration broadcast to monitor the off-screen and bright-screen
1. Create a receiver
class ScreenStatusReceiver extends BroadcastReceiver { String SCREEN_ON = "android.intent.action.SCREEN_ON"; String SCREEN_OFF = "android.intent.action.SCREEN_OFF"; @Override public void onReceive(Context context, Intent intent) { if (SCREEN_ON.equals(intent.getAction())) { //屏幕亮做xxx操作 } else if (SCREEN_OFF.equals(intent.getAction())) { //屏幕暗做xxx操作 } } }
2. Use receiver
private ScreenStatusReceiver mScreenStatusReceiver;
used in onCreate
oronResume
private void registSreenStatusReceiver() { mScreenStatusReceiver = new ScreenStatusReceiver(); IntentFilter screenStatusIF = new IntentFilter(); screenStatusIF.addAction(Intent.ACTION_SCREEN_ON); screenStatusIF.addAction(Intent.ACTION_SCREEN_OFF); registerReceiver(mScreenStatusReceiver, screenStatusIF); }
unlisten in onDestroy
oronPause
unregisterReceiver(mScreenStatusReceiver);
reference:
Android off-screen monitoring, Android monitor off-screen and bright screen
Learning about android broadcast monitoring on and off screen