summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);