Skip to content

Commit 0c3072a

Browse files
ritujbPMS22
authored andcommitted
FOD: Show fod circle below pattern/pin view
Change-Id: Ie9652afc0d105199bf1e660221c82266ac8cf30a Signed-off-by: rituj <ritujbeniwal@gmail.com> Signed-off-by: Joey Huab <joey@evolution-x.org>
1 parent 9c78e7a commit 0c3072a

6 files changed

Lines changed: 48 additions & 7 deletions

File tree

packages/SystemUI/res-keyguard/values-sw540dp-port/dimens.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@
2020
<resources>
2121
<!-- Height of the sliding KeyguardSecurityContainer
2222
(includes 2x keyguard_security_view_top_margin) -->
23-
<dimen name="keyguard_security_height">550dp</dimen>
23+
<dimen name="keyguard_security_height">690dp</dimen>
2424
</resources>

packages/SystemUI/res-keyguard/values-sw720dp/dimens.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
<!-- Height of the sliding KeyguardSecurityContainer
2222
(includes 2x keyguard_security_view_top_margin) -->
23-
<dimen name="keyguard_security_height">470dp</dimen>
23+
<dimen name="keyguard_security_height">610dp</dimen>
2424

2525
<dimen name="widget_big_font_size">100dp</dimen>
2626
</resources>

packages/SystemUI/res-keyguard/values/dimens.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,15 @@
2727

2828
<!-- Height of the sliding KeyguardSecurityContainer
2929
(includes 2x keyguard_security_view_top_margin) -->
30-
<dimen name="keyguard_security_height">420dp</dimen>
30+
<dimen name="keyguard_security_height">560dp</dimen>
3131

3232
<!-- Max Height of the sliding KeyguardSecurityContainer
3333
(includes 2x keyguard_security_view_top_margin) -->
34-
<dimen name="keyguard_security_max_height">450dp</dimen>
34+
<dimen name="keyguard_security_max_height">590dp</dimen>
35+
36+
<!-- The margin between Emergency Carrier area and pattern/pin
37+
view to incorporate the FOD icon -->
38+
<dimen name="keyguard_security_fod_view_margin">140dp</dimen>
3539

3640
<!-- Margin around the various security views -->
3741
<dimen name="keyguard_security_view_top_margin">8dp</dimen>

packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import android.view.MotionEvent;
3333
import android.view.VelocityTracker;
3434
import android.view.View;
35+
import android.view.ViewGroup;
3536
import android.view.ViewConfiguration;
3637
import android.view.WindowManager;
3738
import android.widget.FrameLayout;
@@ -54,6 +55,7 @@
5455
public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSecurityView {
5556
private static final boolean DEBUG = KeyguardConstants.DEBUG;
5657
private static final String TAG = "KeyguardSecurityView";
58+
private static final String FOD = "vendor.lineage.biometrics.fingerprint.inscreen";
5759

5860
private static final int USER_TYPE_PRIMARY = 1;
5961
private static final int USER_TYPE_WORK_PROFILE = 2;
@@ -100,6 +102,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
100102
private int mActivePointerId = -1;
101103
private boolean mIsDragging;
102104
private float mStartTouchY = -1;
105+
private final int mFODmargin;
103106

104107
// Used to notify the container when something interesting happens.
105108
public interface SecurityCallback {
@@ -135,6 +138,8 @@ public KeyguardSecurityContainer(Context context, AttributeSet attrs, int defSty
135138
SystemUIFactory.getInstance().getRootComponent());
136139
mUnlockMethodCache = UnlockMethodCache.getInstance(context);
137140
mViewConfiguration = ViewConfiguration.get(context);
141+
mFODmargin = mContext.getResources().getDimensionPixelSize(
142+
R.dimen.keyguard_security_fod_view_margin);
138143
}
139144

140145
public void setSecurityCallback(SecurityCallback callback) {
@@ -297,6 +302,15 @@ private KeyguardSecurityView getSecurityView(SecurityMode securityMode) {
297302
if (DEBUG) Log.v(TAG, "inflating id = " + layoutId);
298303
View v = mInjectionInflationController.injectable(inflater)
299304
.inflate(layoutId, mSecurityViewFlipper, false);
305+
View eca = v.findViewById(R.id.keyguard_selector_fade_container);
306+
if (eca != null && hasInDisplayFingerprint() &&
307+
(securityMode == SecurityMode.Pattern
308+
|| securityMode == SecurityMode.PIN)) {
309+
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams)
310+
eca.getLayoutParams();
311+
lp.setMargins(lp.leftMargin, mFODmargin, lp.rightMargin,
312+
lp.bottomMargin);
313+
}
300314
mSecurityViewFlipper.addView(v);
301315
updateSecurityView(v);
302316
view = (KeyguardSecurityView)v;
@@ -463,6 +477,10 @@ private void reportFailedUnlockAttempt(int userId, int timeoutMs) {
463477
}
464478
}
465479

480+
private boolean hasInDisplayFingerprint() {
481+
return mContext.getPackageManager().hasSystemFeature(FOD);
482+
}
483+
466484
/**
467485
* Shows the primary security screen for the user. This will be either the multi-selector
468486
* or the user's security method.
@@ -579,6 +597,7 @@ private void showSecurityScreen(SecurityMode securityMode) {
579597
mCurrentSecurityView = newView;
580598
mSecurityCallback.onSecurityModeChanged(securityMode,
581599
securityMode != SecurityMode.None && newView.needsInput());
600+
mUpdateMonitor.setSecurityMode(securityMode);
582601
}
583602

584603
private KeyguardSecurityViewFlipper getFlipper() {

packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
import com.android.internal.telephony.TelephonyIntents;
9999
import com.android.internal.util.Preconditions;
100100
import com.android.internal.widget.LockPatternUtils;
101+
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
101102
import com.android.settingslib.WirelessUtils;
102103
import com.android.systemui.R;
103104
import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -259,6 +260,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
259260
private int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
260261
private int mFaceRunningState = BIOMETRIC_STATE_STOPPED;
261262
private LockPatternUtils mLockPatternUtils;
263+
private SecurityMode mCurrentSecurityMode = SecurityMode.Invalid;
262264
private final IDreamManager mDreamManager;
263265
private boolean mIsDreaming;
264266
private final DevicePolicyManager mDevicePolicyManager;
@@ -930,6 +932,14 @@ private void handleFaceUnlockStateChanged(boolean running, int userId) {
930932
}
931933
}
932934

935+
public SecurityMode getSecurityMode() {
936+
return mCurrentSecurityMode;
937+
}
938+
939+
public void setSecurityMode(SecurityMode securityMode) {
940+
mCurrentSecurityMode = securityMode;
941+
}
942+
933943
public boolean isFaceUnlockRunning(int userId) {
934944
return mUserFaceUnlockRunning.get(userId);
935945
}

packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import android.view.WindowManager;
4040
import android.widget.ImageView;
4141

42+
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
4243
import com.android.keyguard.KeyguardUpdateMonitor;
4344
import com.android.keyguard.KeyguardUpdateMonitorCallback;
4445
import com.android.systemui.R;
@@ -130,10 +131,17 @@ public void onKeyguardVisibilityChanged(boolean showing) {
130131
public void onKeyguardBouncerChanged(boolean isBouncer) {
131132
mIsBouncer = isBouncer;
132133

133-
if (isBouncer) {
134+
if (mUpdateMonitor.isFingerprintDetectionRunning()) {
135+
final SecurityMode sec = mUpdateMonitor.getSecurityMode();
136+
final boolean maybeShow = sec == SecurityMode.Pattern ||
137+
sec == SecurityMode.PIN;
138+
if (maybeShow || !mIsBouncer) {
139+
show();
140+
} else {
141+
hide();
142+
}
143+
} else {
134144
hide();
135-
} else if (mUpdateMonitor.isFingerprintDetectionRunning()) {
136-
show();
137145
}
138146
}
139147

0 commit comments

Comments
 (0)