summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java40
1 files changed, 19 insertions, 21 deletions
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index c3f67675322c..3474f0cf7377 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -136,7 +136,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
private boolean mRequiresSim;
- private volatile boolean mEmergencyCall;
+ //True if we have some sort of overlay on top of the Lockscreen
+ //Also true if we've activated a phone call, either emergency dialing or incoming
+ //This resets when the phone is turned off with no current call
+ private boolean mHasOverlay;
/**
@@ -243,8 +246,6 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
}
};
- private TransportControlView mTransportControlView;
-
/**
* @return Whether we are stuck on the lock screen because the sim is
* missing.
@@ -277,7 +278,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
mUpdateMonitor = updateMonitor;
mLockPatternUtils = lockPatternUtils;
mWindowController = controller;
- mEmergencyCall = false;
+ mHasOverlay = false;
mUpdateMonitor.registerInfoCallback(this);
@@ -332,7 +333,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
}
public void takeEmergencyCallAction() {
- mEmergencyCall = true;
+ mHasOverlay = true;
// FaceLock must be stopped if it is running when emergency call is pressed
stopAndUnbindFromFaceLock();
@@ -514,9 +515,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
@Override
public void onScreenTurnedOff() {
+ if (DEBUG) Log.d(TAG, "screen off");
mScreenOn = false;
mForgotPattern = false;
- mEmergencyCall = false;
+ mHasOverlay = mUpdateMonitor.getPhoneState() != TelephonyManager.CALL_STATE_IDLE;
if (mMode == Mode.LockScreen) {
((KeyguardScreen) mLockScreen).onPause();
} else {
@@ -531,10 +533,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
* FaceLock, but only if we're not dealing with a call
*/
private void activateFaceLockIfAble() {
- final boolean transportInvisible = mTransportControlView == null ? true :
- mTransportControlView.getVisibility() != View.VISIBLE;
- if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE
- && transportInvisible) {
+ if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE && !mHasOverlay) {
bindToFaceLock();
// Show FaceLock area, but only for a little bit so lockpattern will become visible if
// FaceLock fails to start or crashes
@@ -546,6 +545,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
@Override
public void onScreenTurnedOn() {
+ if (DEBUG) Log.d(TAG, "screen on");
boolean runFaceLock = false;
//Make sure to start facelock iff the screen is both on and focused
synchronized(mFaceLockStartupLock) {
@@ -561,7 +561,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
*/
@Override
public void onWindowFocusChanged (boolean hasWindowFocus) {
- if(DEBUG) Log.d(TAG, hasWindowFocus ? "focused" : "unfocused");
+ if (DEBUG) Log.d(TAG, hasWindowFocus ? "focused" : "unfocused");
boolean runFaceLock = false;
//Make sure to start facelock iff the screen is both on and focused
synchronized(mFaceLockStartupLock) {
@@ -569,14 +569,11 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
mWindowFocused = hasWindowFocus;
}
if(!hasWindowFocus) {
+ mHasOverlay = true;
stopAndUnbindFromFaceLock();
hideFaceLockArea();
} else if (runFaceLock) {
- //Don't activate facelock while the user is calling 911!
- if(mEmergencyCall) mEmergencyCall = false;
- else {
- activateFaceLockIfAble();
- }
+ activateFaceLockIfAble();
}
}
@@ -589,7 +586,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
}
if (mLockPatternUtils.usingBiometricWeak() &&
- mLockPatternUtils.isBiometricWeakInstalled()) {
+ mLockPatternUtils.isBiometricWeakInstalled() && !mHasOverlay) {
// Note that show() gets called before the screen turns off to set it up for next time
// it is turned on. We don't want to set a timeout on the FaceLock area here because it
// may be gone by the time the screen is turned on again. We set the timout when the
@@ -664,6 +661,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
public void onPhoneStateChanged(int phoneState) {
if (DEBUG) Log.d(TAG, "phone state: " + phoneState);
if(phoneState == TelephonyManager.CALL_STATE_RINGING) {
+ mHasOverlay = true;
stopAndUnbindFromFaceLock();
hideFaceLockArea();
}
@@ -891,13 +889,13 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
}
private void initializeTransportControlView(View view) {
- mTransportControlView = (TransportControlView) view.findViewById(R.id.transport);
- if (mTransportControlView == null) {
+ TransportControlView tcv = (TransportControlView) view.findViewById(R.id.transport);
+ if (tcv == null) {
if (DEBUG) Log.w(TAG, "Couldn't find transport control widget");
} else {
mUpdateMonitor.reportClockVisible(true);
- mTransportControlView.setVisibility(View.GONE); // hide until it requests being shown.
- mTransportControlView.setCallback(mWidgetCallback);
+ tcv.setVisibility(View.GONE); // hide until it requests being shown.
+ tcv.setCallback(mWidgetCallback);
}
}