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