If you have a Service that it active you can catch these events with
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// do something
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
However this relies on having a perpetually running service which I have recently learned is discouraged because it is brittle (the OS likes to close them) and uses resources permanently.
Disappointingly, it seems it is not possible to have a receiver in your manifest that intercepts SCREEN_ON events.
This has come up very recently:
android.intent.action.SCREEN_ON doesn't work as a receiver intent filter
also
Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…