You need to use BroadcastReceiver and IntentFilter.
- Create BroadcastReceiver
- Register BroadcastReceiver and IntentFilter
- If you do not need, you must unregister.
Create BroadcastReceiver
If the device is Screen ON/OFF, Android frameworks call mReceiver#onReceive(). private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_SCREEN_OFF)) {
// Screen is off
Log.e("", "ACTION_SCREEN_OFF");
}
else if (action.equals(Intent.ACTION_SCREEN_ON)) {
// Intent.ACTION_USER_PRESENT will be broadcast when the screen
// is
// unlocked.
// if API Level 16
/*
* if(mKeyguard.isKeyguardLocked()){ // the keyguard is
* currently locked. Log.e("","ACTION_SCREEN_ON : locked"); }
*/
if (mKeyguard.inKeyguardRestrictedInputMode()) {
// the keyguard is currently locked.
Log.e("", "ACTION_SCREEN_ON : locked");
}
else {
// unlocked
Log.e("", "ACTION_SCREEN_ON : unlocked");
}
}
else if (action.equals(Intent.ACTION_USER_PRESENT)) {
// The user has unlocked the screen. Enabled!
Log.e("", "ACTION_USER_PRESENT");
}
}
};
Register BroadcastReceiver and IntentFilter
Create IntentFilter with ACTION_SCREEN_ON(OFF), and register to use Activity(or Serivce)#registerReceiver(). // get KeyGuardManager
mKeyguard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
// IntetFilter with Action
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_USER_PRESENT);// Keyguard is GONE
// register BroadcastReceiver and IntentFilter
registerReceiver(mReceiver, intentFilter);
Unregister
If you do not need, you must unregister. // register BroadcastReceiver and IntentFilter
unregisterReceiver(mReceiver);

No comments:
Post a Comment