diff options
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 e34822d2f7c7..803047e16674 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 e1280ba8f213..6b033597f56e 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 2778f4e8446d..103865706fff 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 03fc79e81671..f286ccdb0f45 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 96998afa8f6c..1f594e53b68b 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -1136,14 +1136,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 } } @@ -1160,7 +1171,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: @@ -1196,7 +1207,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()) { @@ -1232,9 +1244,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"); } } } |