I found a way, and itβs not so difficult ... it works with any version of the API.
You need to use the PowerManager.userActivity(l, false) method and register your activity as a broadcast received for the SCREEN_OFF intent:
In your OnCreate activity, put something like:
mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.v(TAG, "Screen OFF onReceive()"); screenOFFHandler.sendEmptyMessageDelayed(0, 2000L); } };
It will start the handler after 2 seconds of the Screen Off event.
Register the receiver in the onResume () method:
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); registerReceiver(mReceiver, filter); Log.i(TAG, "broadcast receiver registered!");
Create a handler as shown below:
private Handler screenOFFHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg);
Request permission in manifest file:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Remember to unregister the broadcast receiver when you are done. You can do this in onDestroy (), for example (which is not guaranteed)
unregisterReceiver(mReceiver); Log.i(TAG, "broadcast UNregistred!");
mishkin Dec 27 '10 at 21:32 2010-12-27 21:32
source share