summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/res/res/layout/keyguard_screen_password_landscape.xml2
-rw-r--r--core/res/res/layout/keyguard_screen_password_portrait.xml2
-rw-r--r--core/res/res/layout/keyguard_screen_unlock_landscape.xml2
-rw-r--r--core/res/res/layout/keyguard_screen_unlock_portrait.xml2
-rw-r--r--policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java37
5 files changed, 29 insertions, 16 deletions
diff --git a/core/res/res/layout/keyguard_screen_password_landscape.xml b/core/res/res/layout/keyguard_screen_password_landscape.xml
index e34822d..803047e 100644
--- a/core/res/res/layout/keyguard_screen_password_landscape.xml
+++ b/core/res/res/layout/keyguard_screen_password_landscape.xml
@@ -206,7 +206,7 @@
<!-- Area to overlay FaceLock -->
<TextView android:id="@+id/faceLockAreaView"
- android:visibility="gone"
+ android:visibility="invisible"
android:layout_row="0"
android:layout_column="2"
android:layout_rowSpan="8"
diff --git a/core/res/res/layout/keyguard_screen_password_portrait.xml b/core/res/res/layout/keyguard_screen_password_portrait.xml
index e1280ba..6b03359 100644
--- a/core/res/res/layout/keyguard_screen_password_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_password_portrait.xml
@@ -195,7 +195,7 @@
<!-- Area to overlay FaceLock -->
<TextView android:id="@+id/faceLockAreaView"
- android:visibility="gone"
+ android:visibility="invisible"
android:layout_row="3"
android:layout_column="0"
android:layout_rowSpan="2"
diff --git a/core/res/res/layout/keyguard_screen_unlock_landscape.xml b/core/res/res/layout/keyguard_screen_unlock_landscape.xml
index 2778f4e..1038657 100644
--- a/core/res/res/layout/keyguard_screen_unlock_landscape.xml
+++ b/core/res/res/layout/keyguard_screen_unlock_landscape.xml
@@ -162,7 +162,7 @@
<!-- Area to overlay FaceLock -->
<TextView android:id="@+id/faceLockAreaView"
- android:visibility="gone"
+ android:visibility="invisible"
android:layout_row="0"
android:layout_column="1"
android:layout_rowSpan="7"
diff --git a/core/res/res/layout/keyguard_screen_unlock_portrait.xml b/core/res/res/layout/keyguard_screen_unlock_portrait.xml
index 03fc79e..f286ccd 100644
--- a/core/res/res/layout/keyguard_screen_unlock_portrait.xml
+++ b/core/res/res/layout/keyguard_screen_unlock_portrait.xml
@@ -174,7 +174,7 @@
<!-- Area to overlay FaceLock -->
<TextView android:id="@+id/faceLockAreaView"
- android:visibility="gone"
+ android:visibility="invisible"
android:layout_row="4"
android:layout_column="0"
android:layout_rowSpan="1"
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index ac2a41e..2e63a60 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -1140,14 +1140,25 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
// Everything below pertains to FaceLock - might want to separate this out
- // Only pattern and pin unlock screens actually have a view for the FaceLock area, so it's not
- // uncommon for it to not exist. But if it does exist, we need to make sure it's shown (hiding
- // the fallback) if FaceLock is enabled, and make sure it's hidden (showing the unlock) if
- // FaceLock is disabled
+ // Take care of FaceLock area when layout is created
private void initializeFaceLockAreaView(View view) {
- mFaceLockAreaView = view.findViewById(R.id.faceLockAreaView);
- if (mFaceLockAreaView == null) {
- if (DEBUG) Log.d(TAG, "Layout does not have faceLockAreaView");
+ if (mLockPatternUtils.usingBiometricWeak() &&
+ mLockPatternUtils.isBiometricWeakInstalled()) {
+ mFaceLockAreaView = view.findViewById(R.id.faceLockAreaView);
+ if (mFaceLockAreaView == null) {
+ Log.e(TAG, "Layout does not have faceLockAreaView and FaceLock is enabled");
+ } else {
+ if (mBoundToFaceLockService) {
+ // If we are creating a layout when we are already bound to FaceLock, then we
+ // are undergoing an orientation change. Stop FaceLock and restart it in the
+ // new location.
+ if (DEBUG) Log.d(TAG, "Restarting FL - creating view while already bound");
+ stopAndUnbindFromFaceLock();
+ activateFaceLockIfAble();
+ }
+ }
+ } else {
+ mFaceLockAreaView = null; // Set to null if not using FaceLock
}
}
@@ -1164,7 +1175,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
break;
case MSG_HIDE_FACELOCK_AREA_VIEW:
if (mFaceLockAreaView != null) {
- mFaceLockAreaView.setVisibility(View.GONE);
+ mFaceLockAreaView.setVisibility(View.INVISIBLE);
}
break;
default:
@@ -1200,7 +1211,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
mHandler.sendEmptyMessageDelayed(MSG_HIDE_FACELOCK_AREA_VIEW, timeoutMillis);
}
- // Binds to FaceLock service, but does not tell it to start
+ // Binds to FaceLock service. This call does not tell it to start, but it causes the service
+ // to call the onServiceConnected callback, which then starts FaceLock.
public void bindToFaceLock() {
if (mLockPatternUtils.usingBiometricWeak() &&
mLockPatternUtils.isBiometricWeakInstalled()) {
@@ -1236,9 +1248,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
if (DEBUG) Log.d(TAG, "after unbind from FaceLock service");
mBoundToFaceLockService = false;
} else {
- // This could probably happen after the session when someone activates FaceLock
- // because it wasn't active when the phone was turned on
- Log.w(TAG, "Attempt to unbind from FaceLock when not bound");
+ // This is usually not an error when this happens. Sometimes we will tell it to
+ // unbind multiple times because it's called from both onWindowFocusChanged and
+ // onDetachedFromWindow.
+ if (DEBUG) Log.d(TAG, "Attempt to unbind from FaceLock when not bound");
}
}
}