Automated import from //branches/cupcake/...@142360,142360
This commit is contained in:
committed by
The Android Open Source Project
parent
ad22c18b7c
commit
d3a60997eb
@@ -16,11 +16,14 @@
|
||||
|
||||
package com.android.internal.policy.impl;
|
||||
|
||||
import com.android.internal.telephony.SimCard;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.StatusBarManager;
|
||||
import static android.app.StatusBarManager.DISABLE_NONE;
|
||||
import static android.app.StatusBarManager.DISABLE_EXPAND;
|
||||
import static android.app.StatusBarManager.DISABLE_NONE;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -30,15 +33,13 @@ import android.os.LocalPowerManager;
|
||||
import android.os.Message;
|
||||
import android.os.PowerManager;
|
||||
import android.os.SystemClock;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Config;
|
||||
import android.util.Log;
|
||||
import android.util.EventLog;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.WindowManagerImpl;
|
||||
import android.view.WindowManagerPolicy;
|
||||
import com.android.internal.telephony.SimCard;
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
|
||||
/**
|
||||
* Mediates requests related to the keyguard. This includes queries about the
|
||||
@@ -203,6 +204,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
|
||||
private boolean mKeyboardOpen = false;
|
||||
|
||||
private boolean mScreenOn = false;
|
||||
|
||||
/**
|
||||
* we send this intent when the keyguard is dismissed.
|
||||
*/
|
||||
@@ -232,8 +235,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(DELAYED_KEYGUARD_ACTION);
|
||||
filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
|
||||
filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
|
||||
context.registerReceiver(mBroadCastReceiver, filter);
|
||||
mAlarmManager = (AlarmManager) context
|
||||
.getSystemService(Context.ALARM_SERVICE);
|
||||
@@ -274,6 +276,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
*/
|
||||
public void onScreenTurnedOff(int why) {
|
||||
synchronized (this) {
|
||||
mScreenOn = false;
|
||||
if (DEBUG) Log.d(TAG, "onScreenTurnedOff(" + why + ")");
|
||||
|
||||
if (mExitSecureCallback != null) {
|
||||
@@ -310,6 +313,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
*/
|
||||
public void onScreenTurnedOn() {
|
||||
synchronized (this) {
|
||||
mScreenOn = true;
|
||||
mDelayedShowingSequence++;
|
||||
if (DEBUG) Log.d(TAG, "onScreenTurnedOn, seq = " + mDelayedShowingSequence);
|
||||
notifyScreenOnLocked();
|
||||
@@ -436,6 +440,16 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
// if another app is disabling us, don't show
|
||||
if (!mExternallyEnabled) {
|
||||
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled");
|
||||
|
||||
// note: we *should* set mNeedToReshowWhenReenabled=true here, but that makes
|
||||
// for an occasional ugly flicker in this situation:
|
||||
// 1) receive a call with the screen on (no keyguard) or make a call
|
||||
// 2) screen times out
|
||||
// 3) user hits key to turn screen back on
|
||||
// instead, we reenable the keyguard when we know the screen is off and the call
|
||||
// ends (see the broadcast receiver below)
|
||||
// TODO: clean this up when we have better support at the window manager level
|
||||
// for apps that wish to be on top of the keyguard
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -612,6 +626,19 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
if (mDelayedShowingSequence == sequence) {
|
||||
doKeyguard();
|
||||
}
|
||||
} else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)
|
||||
&& TelephonyManager.EXTRA_STATE_IDLE.equals(intent.getStringExtra(
|
||||
TelephonyManager.EXTRA_STATE)) // call ending
|
||||
&& !mScreenOn // screen off
|
||||
&& mExternallyEnabled) { // not disabled by any app
|
||||
|
||||
// note: this is a way to gracefully reenable the keyguard when the call
|
||||
// ends and the screen is off without always reenabling the keyguard
|
||||
// each time the screen turns off while in call (and having an occasional ugly
|
||||
// flicker while turning back on the screen and disabling the keyguard again).
|
||||
if (DEBUG) Log.d(TAG, "screen is off and call ended, let's make sure the "
|
||||
+ "keyguard is showing");
|
||||
doKeyguard();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user