summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjhonboy121 <alfredmathew05@gmail.com>2021-06-29 14:35:49 +0300
committeralk3pInjection <webmaster@raspii.tech>2021-09-27 21:17:05 +0800
commite24b80eeebcf25ce94dffddb2e8b0ced7bb36c88 (patch)
treee0bce2e6612fdb294f896c333b9e82bd34b9ecfa
parentd1bc701d4f7a72cf5b7e32d780edfa68c3655fd9 (diff)
[YAAP][eleven] FODCircleView: Don't show on top of assistant UI
* register a task stack change listener to hide fod when assistant is visibile in lockscreen * aosp implementation does not take fod into account so we have to register our own listeners idoybh: taken from AOSP-Krypton/frameworks_base@b9c454a and stripped down what we need. Ignore assistant UI when showing bouncer & Fix NPE Change-Id: I4b4927704fcb179826d914e529f9c43748464d9f
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java b/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java
index 10b304bb8434..e041fcac5f6b 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/FODCircleView.java
@@ -16,6 +16,11 @@
package com.android.systemui.biometrics;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+
+import android.app.ActivityManager.StackInfo;
+import android.app.ActivityTaskManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.res.Configuration;
@@ -45,6 +50,8 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.Dependency;
import com.android.systemui.R;
+import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.shared.system.TaskStackChangeListener;
import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreen;
import vendor.lineage.biometrics.fingerprint.inscreen.V1_0.IFingerprintInscreenCallback;
@@ -74,6 +81,7 @@ public class FODCircleView extends ImageView {
private int mDreamingOffsetY;
private boolean mFading;
+ private boolean mIsAssistantVisible = false;
private boolean mIsBouncer;
private boolean mIsBiometricRunning;
private boolean mIsCircleShowing;
@@ -158,6 +166,7 @@ public class FODCircleView extends ImageView {
mIsBouncer = isBouncer;
if (mUpdateMonitor.isFingerprintDetectionRunning()) {
if (isPinOrPattern(mUpdateMonitor.getCurrentUser()) || !isBouncer) {
+ mIsAssistantVisible = false;
show();
} else {
hide();
@@ -187,6 +196,28 @@ public class FODCircleView extends ImageView {
}
};
+ private final TaskStackChangeListener
+ mTaskStackChangeListener = new TaskStackChangeListener() {
+ @Override
+ public void onTaskStackChangedBackground() {
+ try {
+ StackInfo stackInfo = ActivityTaskManager.getService().getStackInfo(
+ WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_ASSISTANT);
+ if (stackInfo == null && mIsAssistantVisible) {
+ mIsAssistantVisible = false;
+ if (mUpdateMonitor.isFingerprintDetectionRunning()) {
+ mHandler.post(() -> show());
+ }
+ return;
+ }
+ if (stackInfo != null) mIsAssistantVisible = stackInfo.visible;
+ if (mIsAssistantVisible) {
+ mHandler.post(() -> hide());
+ }
+ } catch (RemoteException ignored) { }
+ }
+ };
+
public FODCircleView(Context context) {
super(context);
@@ -263,6 +294,20 @@ public class FODCircleView extends ImageView {
}
@Override
+ protected void onAttachedToWindow() {
+ ActivityManagerWrapper.getInstance().registerTaskStackListener(
+ mTaskStackChangeListener);
+ super.onAttachedToWindow();
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ ActivityManagerWrapper.getInstance().unregisterTaskStackListener(
+ mTaskStackChangeListener);
+ super.onDetachedFromWindow();
+ }
+
+ @Override
protected void onDraw(Canvas canvas) {
if (!mIsCircleShowing) {
canvas.drawCircle(mSize / 2, mSize / 2, mSize / 2.0f, mPaintFingerprintBackground);
@@ -400,6 +445,11 @@ public class FODCircleView extends ImageView {
return;
}
+ if (mIsAssistantVisible) {
+ // Don't show when assistant UI is visible
+ return;
+ }
+
updatePosition();
setVisibility(View.VISIBLE);