diff --git a/res/drawable/ic_face_enroll_introduction_glasses.xml b/res/drawable/ic_face_enroll_introduction_glasses.xml new file mode 100644 index 00000000000..5b259d6882a --- /dev/null +++ b/res/drawable/ic_face_enroll_introduction_glasses.xml @@ -0,0 +1,28 @@ + + + + + + \ No newline at end of file diff --git a/res/layout/face_enroll_introduction.xml b/res/layout/face_enroll_introduction.xml index 826f5fe0a34..22dba83734a 100644 --- a/res/layout/face_enroll_introduction.xml +++ b/res/layout/face_enroll_introduction.xml @@ -1,6 +1,6 @@ - - + android:layout_marginBottom="12dp"> + + + android:orientation="horizontal" + android:paddingTop="24dp"> - + android:background="@drawable/ic_face_enroll_introduction_glasses"/> + + + android:text="@string/security_settings_face_enroll_introduction_info_glasses" + android:textColor="?android:attr/textColorPrimary" + android:textSize="16sp" + android:lineSpacingExtra="4sp"/> @@ -96,15 +101,19 @@ - + android:background="@drawable/ic_face_enroll_introduction_visibility"/> + + + android:text="@string/security_settings_face_enroll_introduction_info_looking" + android:textColor="?android:attr/textColorPrimary" + android:textSize="16sp" + android:lineSpacingExtra="4sp"/> @@ -117,40 +126,70 @@ - + android:background="@drawable/ic_face_enroll_introduction_shield"/> + + + android:layout_height="wrap_content" + android:text="@string/security_settings_face_enroll_introduction_info_security" + android:textColor="?android:attr/textColorPrimary" + android:textSize="16sp" + android:lineSpacingExtra="4sp"/> - + + + android:text="@string/security_settings_face_enroll_introduction_how_title" + android:textColor="?android:attr/textColorPrimary" + android:textSize="20sp"/> - - - - - + + + + + + + + + + + - + \ No newline at end of file diff --git a/res/values/config.xml b/res/values/config.xml index b2323c27548..d37db441ea4 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -269,11 +269,6 @@ - - - com.android.settings.biometrics.face.FaceEnrollIntroduction - - diff --git a/res/values/strings.xml b/res/values/strings.xml index f8963318819..0d032aaa444 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -777,7 +777,7 @@ No thanks - Agree + I agree More @@ -790,14 +790,22 @@ Use your face to unlock your phone or approve purchases.\n\nNote: You can\u2019t use your face to unlock this device. For more information, contact your organization\u2019s admin. Use your face to unlock your phone, authorize purchases, or sign in to apps - - - - - - - - + + + + + + + + + + + + + + + + Center your face in the circle diff --git a/src/com/android/settings/biometrics/BiometricUtils.java b/src/com/android/settings/biometrics/BiometricUtils.java index 9de81054dca..03cdb0d653d 100644 --- a/src/com/android/settings/biometrics/BiometricUtils.java +++ b/src/com/android/settings/biometrics/BiometricUtils.java @@ -16,8 +16,6 @@ package com.android.settings.biometrics; -import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; - import android.app.Activity; import android.app.PendingIntent; import android.app.admin.DevicePolicyManager; @@ -34,8 +32,8 @@ import androidx.fragment.app.FragmentActivity; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.VerifyCredentialResponse; -import com.android.settings.R; import com.android.settings.SetupWizardUtils; +import com.android.settings.biometrics.face.FaceEnrollIntroduction; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction; @@ -173,9 +171,7 @@ public class BiometricUtils { */ public static Intent getFaceIntroIntent(@NonNull Context context, @NonNull Intent activityIntent) { - final String className = context.getString(R.string.config_face_enroll_introduction); - Intent intent = new Intent(); - intent.setClassName(SETTINGS_PACKAGE_NAME, className); + final Intent intent = new Intent(context, FaceEnrollIntroduction.class); WizardManagerHelper.copyWizardManagerExtras(activityIntent, intent); return intent; } diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index c81c275f903..d93eef70ff3 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018 The Android Open Source Project + * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -11,7 +11,7 @@ * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and - * limitations under the License + * limitations under the License. */ package com.android.settings.biometrics.face; @@ -41,8 +41,11 @@ import com.google.android.setupdesign.template.RequireScrollMixin; import java.util.List; +/** + * Provides introductory info about face unlock and prompts the user to agree before starting face + * enrollment. + */ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { - private static final String TAG = "FaceEnrollIntroduction"; private FaceManager mFaceManager; @@ -66,6 +69,9 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + getLayout().setDescriptionText(getString( + R.string.security_settings_face_enroll_introduction_message)); + mFaceManager = Utils.getFaceManagerOrNull(this); mFaceFeatureProvider = FeatureFactory.getFactory(getApplicationContext()) .getFaceFeatureProvider(); @@ -82,7 +88,7 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { FooterButton.Builder nextButtonBuilder = new FooterButton.Builder(this) .setText(R.string.security_settings_face_enroll_introduction_agree) - .setButtonType(FooterButton.ButtonType.NEXT) + .setButtonType(FooterButton.ButtonType.OPT_IN) .setTheme(R.style.SudGlifButton_Primary); if (maxFacesEnrolled()) { nextButtonBuilder.setListener(this::onNextButtonClick); @@ -97,13 +103,6 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { this::onNextButtonClick); } - final TextView footer2 = findViewById(R.id.face_enroll_introduction_footer_part_2); - final int footer2TextResource = - mFaceFeatureProvider.isAttentionSupported(getApplicationContext()) - ? R.string.security_settings_face_enroll_introduction_footer_part_2 - : R.string.security_settings_face_settings_footer_attention_not_supported; - footer2.setText(footer2TextResource); - // This path is an entry point for SetNewPasswordController, e.g. // adb shell am start -a android.app.action.SET_NEW_PASSWORD if (mToken == null && BiometricUtils.containsGatekeeperPasswordHandle(getIntent())) { diff --git a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java index c2143c043e0..2ceaa0d7db2 100644 --- a/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceStatusPreferenceController.java @@ -68,7 +68,7 @@ public class FaceStatusPreferenceController extends BiometricStatusPreferenceCon @Override protected String getEnrollClassName() { - return mContext.getResources().getString(R.string.config_face_enroll_introduction); + return FaceEnrollIntroduction.class.getName(); } }