I want to figure out how to detect when the phone wakes up from being in the black screen mode and write a handler for that event. Is that possible? It seems like this would be something a Broadcast Receiver should handle? Or is there a better or more proper way?
3 Answers
You could also have a broadcast receiver that catches the USER_PRESENT broadcast intent for when the user has unlocked the device. Naturally some versions of Honeycomb don't honor this but for all non brain-dead versions of Android (2.x and 4.x), it works nicely.

- 12,285
- 10
- 54
- 78
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?

- 1
- 1

- 22,946
- 12
- 85
- 101
-
ah thanks so that will detect the screen on and allow me to properly handle it right? I was reading your thread and you don't recommend having a background service running and waiting for the phone to wake up. Why? What's the downside and is there any way around? Isn't running background services how you detect events like this? – Joe Apr 05 '10 at 07:33
-
This article discusses the background service issue - http://www.androidguys.com/2010/03/29/code-pollution-background-control/ – Jim Blackler Apr 05 '10 at 08:13
-
the problem with this answer, any why it does work, is because your activity doesn't receive intents when the phone is asleep. so you can register screen_on in your activity, but you'll never get it. – Jeffrey Blattman Jan 30 '12 at 17:11
You are right on the broadcast receiver. You could listen to the SCREEN_ON and SCREEN_OFF broadcast events.

- 10,124
- 7
- 51
- 61