• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.biometrics;
18 
19 import android.annotation.NonNull;
20 import android.graphics.PointF;
21 
22 import com.android.systemui.R;
23 import com.android.systemui.dump.DumpManager;
24 import com.android.systemui.flags.FeatureFlags;
25 import com.android.systemui.flags.Flags;
26 import com.android.systemui.plugins.statusbar.StatusBarStateController;
27 import com.android.systemui.shade.ShadeExpansionStateManager;
28 import com.android.systemui.statusbar.phone.SystemUIDialogManager;
29 
30 /**
31  * Class that coordinates non-HBM animations during enrollment.
32  */
33 public class UdfpsEnrollViewController extends UdfpsAnimationViewController<UdfpsEnrollView> {
34 
35     private final int mEnrollProgressBarRadius;
36     @NonNull private final UdfpsEnrollHelper mEnrollHelper;
37     @NonNull private final UdfpsEnrollHelper.Listener mEnrollHelperListener =
38             new UdfpsEnrollHelper.Listener() {
39                 @Override
40                 public void onEnrollmentProgress(int remaining, int totalSteps) {
41                     mView.onEnrollmentProgress(remaining, totalSteps);
42                 }
43 
44                 @Override
45                 public void onEnrollmentHelp(int remaining, int totalSteps) {
46                     mView.onEnrollmentHelp(remaining, totalSteps);
47                 }
48 
49                 @Override
50                 public void onLastStepAcquired() {
51                     mView.onLastStepAcquired();
52                 }
53             };
54 
UdfpsEnrollViewController( @onNull UdfpsEnrollView view, @NonNull UdfpsEnrollHelper enrollHelper, @NonNull StatusBarStateController statusBarStateController, @NonNull ShadeExpansionStateManager shadeExpansionStateManager, @NonNull SystemUIDialogManager systemUIDialogManager, @NonNull DumpManager dumpManager, @NonNull FeatureFlags featureFlags, float scaleFactor)55     protected UdfpsEnrollViewController(
56             @NonNull UdfpsEnrollView view,
57             @NonNull UdfpsEnrollHelper enrollHelper,
58             @NonNull StatusBarStateController statusBarStateController,
59             @NonNull ShadeExpansionStateManager shadeExpansionStateManager,
60             @NonNull SystemUIDialogManager systemUIDialogManager,
61             @NonNull DumpManager dumpManager,
62             @NonNull FeatureFlags featureFlags,
63             float scaleFactor) {
64         super(view, statusBarStateController, shadeExpansionStateManager, systemUIDialogManager,
65                 dumpManager);
66         mEnrollProgressBarRadius = (int) (scaleFactor * getContext().getResources().getInteger(
67                 R.integer.config_udfpsEnrollProgressBar));
68         mEnrollHelper = enrollHelper;
69         mView.setEnrollHelper(mEnrollHelper);
70         mView.setProgressBarRadius(mEnrollProgressBarRadius);
71 
72         if (featureFlags.isEnabled(Flags.UDFPS_NEW_TOUCH_DETECTION)) {
73             mView.mUseExpandedOverlay = true;
74         }
75     }
76 
77     @Override
getTag()78     @NonNull protected String getTag() {
79         return "UdfpsEnrollViewController";
80     }
81 
82     @Override
onViewAttached()83     protected void onViewAttached() {
84         super.onViewAttached();
85         if (mEnrollHelper.shouldShowProgressBar()) {
86             // Only need enrollment updates if the progress bar is showing :)
87             mEnrollHelper.setListener(mEnrollHelperListener);
88         }
89     }
90 
91     @NonNull
92     @Override
getTouchTranslation()93     public PointF getTouchTranslation() {
94         if (!mEnrollHelper.isGuidedEnrollmentStage()) {
95             return new PointF(0, 0);
96         } else {
97             return mEnrollHelper.getNextGuidedEnrollmentPoint();
98         }
99     }
100 
101     @Override
getPaddingX()102     public int getPaddingX() {
103         return mEnrollProgressBarRadius;
104     }
105 
106     @Override
getPaddingY()107     public int getPaddingY() {
108         return mEnrollProgressBarRadius;
109     }
110 
111     @Override
doAnnounceForAccessibility(String str)112     public void doAnnounceForAccessibility(String str) {
113         mView.announceForAccessibility(str);
114     }
115 
116 }
117