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 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"); } } } |