Merge "Fix a11y of BiometricPrompt icon and help text" into sc-dev am: f33717e74a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15276031 Change-Id: I509a45cd3e9bf17d9d5d6abea93029ee046d510d
This commit is contained in:
@@ -52,6 +52,7 @@
|
|||||||
android:layout_width="@dimen/biometric_dialog_biometric_icon_size"
|
android:layout_width="@dimen/biometric_dialog_biometric_icon_size"
|
||||||
android:layout_height="@dimen/biometric_dialog_biometric_icon_size"
|
android:layout_height="@dimen/biometric_dialog_biometric_icon_size"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
android:contentDescription="@null"
|
||||||
android:scaleType="fitXY" />
|
android:scaleType="fitXY" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
|
|
||||||
public class AuthBiometricFingerprintView extends AuthBiometricView {
|
public class AuthBiometricFingerprintView extends AuthBiometricView {
|
||||||
@@ -94,12 +96,37 @@ public class AuthBiometricFingerprintView extends AuthBiometricView {
|
|||||||
|
|
||||||
mIconView.setImageDrawable(icon);
|
mIconView.setImageDrawable(icon);
|
||||||
|
|
||||||
|
final CharSequence iconContentDescription = getIconContentDescription(newState);
|
||||||
|
if (iconContentDescription != null) {
|
||||||
|
mIconView.setContentDescription(iconContentDescription);
|
||||||
|
}
|
||||||
|
|
||||||
if (animation != null && shouldAnimateForTransition(lastState, newState)) {
|
if (animation != null && shouldAnimateForTransition(lastState, newState)) {
|
||||||
animation.forceAnimationOnUI();
|
animation.forceAnimationOnUI();
|
||||||
animation.start();
|
animation.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private CharSequence getIconContentDescription(int newState) {
|
||||||
|
switch (newState) {
|
||||||
|
case STATE_IDLE:
|
||||||
|
case STATE_AUTHENTICATING_ANIMATING_IN:
|
||||||
|
case STATE_AUTHENTICATING:
|
||||||
|
case STATE_PENDING_CONFIRMATION:
|
||||||
|
case STATE_AUTHENTICATED:
|
||||||
|
return mContext.getString(
|
||||||
|
R.string.accessibility_fingerprint_dialog_fingerprint_icon);
|
||||||
|
|
||||||
|
case STATE_ERROR:
|
||||||
|
case STATE_HELP:
|
||||||
|
return mContext.getString(R.string.biometric_dialog_try_again);
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean shouldAnimateForTransition(int oldState, int newState) {
|
private boolean shouldAnimateForTransition(int oldState, int newState) {
|
||||||
switch (newState) {
|
switch (newState) {
|
||||||
case STATE_HELP:
|
case STATE_HELP:
|
||||||
|
|||||||
@@ -636,7 +636,6 @@ public abstract class AuthBiometricView extends LinearLayout {
|
|||||||
mIndicatorView.setText(message);
|
mIndicatorView.setText(message);
|
||||||
mIndicatorView.setTextColor(mTextColorError);
|
mIndicatorView.setTextColor(mTextColorError);
|
||||||
mIndicatorView.setVisibility(View.VISIBLE);
|
mIndicatorView.setVisibility(View.VISIBLE);
|
||||||
mIndicatorView.setSelected(true);
|
|
||||||
mHandler.postDelayed(resetMessageRunnable, mInjector.getDelayAfterError());
|
mHandler.postDelayed(resetMessageRunnable, mInjector.getDelayAfterError());
|
||||||
|
|
||||||
Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this);
|
Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this);
|
||||||
|
|||||||
@@ -698,7 +698,8 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
// This view overlaps the sensor area, so prevent it from being selectable
|
// This view overlaps the sensor area, so prevent it from being selectable
|
||||||
// during a11y.
|
// during a11y.
|
||||||
if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR
|
if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR
|
||||||
|| reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING) {
|
|| reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING
|
||||||
|
|| reason == IUdfpsOverlayController.REASON_AUTH_BP) {
|
||||||
mView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
|
mView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user