diff options
5 files changed, 45 insertions, 7 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 288b954cd630..66e56e0b47ad 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -16,6 +16,7 @@ package com.android.keyguard; +import static android.content.Intent.ACTION_USER_UNLOCKED; import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN; import static android.os.BatteryManager.BATTERY_STATUS_FULL; import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN; @@ -136,6 +137,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_SCREEN_TURNED_ON = 331; private static final int MSG_SCREEN_TURNED_OFF = 332; private static final int MSG_DREAMING_STATE_CHANGED = 333; + private static final int MSG_USER_UNLOCKED = 334; /** Fingerprint state: Not listening to fingerprint. */ private static final int FINGERPRINT_STATE_STOPPED = 0; @@ -291,6 +293,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_DREAMING_STATE_CHANGED: handleDreamingStateChanged(msg.arg1); break; + case MSG_USER_UNLOCKED: + handleUserUnlocked(); + break; } } }; @@ -723,6 +728,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } else if (DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED .equals(action)) { mHandler.sendEmptyMessage(MSG_DPM_STATE_CHANGED); + } else if (ACTION_USER_UNLOCKED.equals(action)) { + mHandler.sendEmptyMessage(MSG_USER_UNLOCKED); } } }; @@ -1025,6 +1032,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } + private void handleUserUnlocked() { + mNeedsSlowUnlockTransition = resolveNeedsSlowUnlockTransition(); + for (int i = 0; i < mCallbacks.size(); i++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); + if (cb != null) { + cb.onUserUnlocked(); + } + } + } + private KeyguardUpdateMonitor(Context context) { mContext = context; mSubscriptionManager = SubscriptionManager.from(context); @@ -1065,6 +1082,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { allUserFilter.addAction(ACTION_FACE_UNLOCK_STARTED); allUserFilter.addAction(ACTION_FACE_UNLOCK_STOPPED); allUserFilter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); + allUserFilter.addAction(ACTION_USER_UNLOCKED); context.registerReceiverAsUser(mBroadcastAllReceiver, UserHandle.ALL, allUserFilter, null, null); diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index eb29d9b550e3..14d6b599a9b5 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -128,6 +128,11 @@ public class KeyguardUpdateMonitorCallback { public void onUserInfoChanged(int userId) { } /** + * Called when a user got unlocked. + */ + public void onUserUnlocked() { } + + /** * Called when boot completed. * * Note, this callback will only be received if boot complete occurs after registering with diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index cf962df64dd9..0ef9715259c2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -95,8 +95,6 @@ public class KeyguardIndicationController { KeyguardUpdateMonitor.getInstance(context).registerCallback(mUpdateMonitor); context.registerReceiverAsUser(mTickReceiver, UserHandle.SYSTEM, new IntentFilter(Intent.ACTION_TIME_TICK), null, null); - context.registerReceiverAsUser(mUnlockReceiver, UserHandle.ALL, - new IntentFilter(Intent.ACTION_USER_UNLOCKED), null, null); } public void setVisible(boolean visible) { @@ -322,18 +320,16 @@ public class KeyguardIndicationController { super.onFingerprintAuthFailed(); mLastSuccessiveErrorMessage = -1; } - }; - BroadcastReceiver mTickReceiver = new BroadcastReceiver() { @Override - public void onReceive(Context context, Intent intent) { + public void onUserUnlocked() { if (mVisible) { updateIndication(); } } }; - BroadcastReceiver mUnlockReceiver = new BroadcastReceiver() { + BroadcastReceiver mTickReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (mVisible) { @@ -342,6 +338,7 @@ public class KeyguardIndicationController { } }; + private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index 427014714040..f9b7bb5faab0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -122,6 +122,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private KeyguardIndicationController mIndicationController; private AccessibilityController mAccessibilityController; private PhoneStatusBar mPhoneStatusBar; + private KeyguardAffordanceHelper mAffordanceHelper; private boolean mUserSetupComplete; private boolean mPrewarmBound; @@ -308,6 +309,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL updateCameraVisibility(); // in case onFinishInflate() was called too early } + public void setAffordanceHelper(KeyguardAffordanceHelper affordanceHelper) { + mAffordanceHelper = affordanceHelper; + } + public void setUserSetupComplete(boolean userSetupComplete) { mUserSetupComplete = userSetupComplete; updateCameraVisibility(); @@ -620,6 +625,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL mPreviewContainer.addView(mCameraPreview); mCameraPreview.setVisibility(visibleBefore ? View.VISIBLE : View.INVISIBLE); } + if (mAffordanceHelper != null) { + mAffordanceHelper.updatePreviews(); + } } private void updateLeftPreview() { @@ -637,6 +645,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL mPreviewContainer.addView(mLeftPreview); mLeftPreview.setVisibility(View.INVISIBLE); } + if (mAffordanceHelper != null) { + mAffordanceHelper.updatePreviews(); + } } public void startFinishDozeAnimation() { @@ -720,6 +731,13 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onStrongAuthStateChanged(int userId) { mLockIcon.update(); + } + + @Override + public void onUserUnlocked() { + inflateCameraPreview(); + updateCameraVisibility(); + updateLeftAffordance(); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index fb2c335f96bb..9c1eaa6b7906 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -233,6 +233,7 @@ public class NotificationPanelView extends PanelView implements mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area); mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim); mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext()); + mKeyguardBottomArea.setAffordanceHelper(mAfforanceHelper); mLastOrientation = getResources().getConfiguration().orientation; mQsAutoReinflateContainer = @@ -1016,7 +1017,6 @@ public class NotificationPanelView extends PanelView implements mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE); if (keyguardShowing && oldState != mStatusBarState) { mKeyguardBottomArea.onKeyguardShowingChanged(); - mAfforanceHelper.updatePreviews(); } } if (keyguardShowing) { |