diff options
| author | 2023-08-10 18:50:09 +0000 | |
|---|---|---|
| committer | 2023-08-10 18:50:09 +0000 | |
| commit | cb7d38e282b9bdce5b6e5e7d54066aa6d85d71d7 (patch) | |
| tree | 2a3e92220cfbe734d9454a34c78383b0477176b8 | |
| parent | 159ad295d706925660791fb9c0136065d57241af (diff) | |
| parent | f58e41308b58b4f0131b2b3bfeee9528e0d1bf62 (diff) | |
Merge "Use announceForAccessibility to workaround Talkback rate-limitation" into udc-d1-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/biometrics/Utils.kt | 7 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt | 29 |
2 files changed, 21 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/Utils.kt b/packages/SystemUI/src/com/android/systemui/biometrics/Utils.kt index b538085fa40d..1ca57e77034c 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/Utils.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/Utils.kt @@ -60,6 +60,13 @@ object Utils { return dp * (density / DisplayMetrics.DENSITY_DEFAULT) } + /** + * Note: Talkback 14.0 has new rate-limitation design to reduce frequency + * of TYPE_WINDOW_CONTENT_CHANGED events to once every 30 seconds. + * (context: b/281765653#comment18) + * Using {@link View#announceForAccessibility} instead as workaround when sending events + * exceeding this frequency is required. + */ @JvmStatic fun notifyAccessibilityContentChanged(am: AccessibilityManager, view: ViewGroup) { if (!am.isEnabled) { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt index 62475df0ac3f..f7625cd9b859 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt @@ -45,7 +45,6 @@ import com.android.systemui.biometrics.AuthBiometricView.Callback import com.android.systemui.biometrics.AuthBiometricViewAdapter import com.android.systemui.biometrics.AuthIconController import com.android.systemui.biometrics.AuthPanelController -import com.android.systemui.biometrics.Utils import com.android.systemui.biometrics.domain.model.BiometricModalities import com.android.systemui.biometrics.shared.model.BiometricModality import com.android.systemui.biometrics.shared.model.PromptKind @@ -80,9 +79,6 @@ object BiometricViewBinder { applicationScope: CoroutineScope, ): AuthBiometricViewAdapter { val accessibilityManager = view.context.getSystemService(AccessibilityManager::class.java)!! - fun notifyAccessibilityChanged() { - Utils.notifyAccessibilityContentChanged(accessibilityManager, view) - } val textColorError = view.resources.getColor(R.color.biometric_dialog_error, view.context.theme) @@ -326,21 +322,14 @@ object BiometricViewBinder { } } - // not sure why this is here, but the legacy code did it probably needed? - launch { - viewModel.isAuthenticating.collect { isAuthenticating -> - if (isAuthenticating) { - notifyAccessibilityChanged() - } - } - } - // dismiss prompt when authenticated and confirmed launch { viewModel.isAuthenticated.collect { authState -> // Disable background view for cancelling authentication once authenticated, // and remove from talkback if (authState.isAuthenticated) { + // Prevents Talkback from speaking subtitle after already authenticated + subtitleView.importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO backgroundView.setOnClickListener(null) backgroundView.importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO @@ -349,7 +338,6 @@ object BiometricViewBinder { view.announceForAccessibility( view.resources.getString(R.string.biometric_dialog_authenticated) ) - notifyAccessibilityChanged() launch { delay(authState.delay) @@ -381,7 +369,18 @@ object BiometricViewBinder { !accessibilityManager.isEnabled || !accessibilityManager.isTouchExplorationEnabled - notifyAccessibilityChanged() + /** + * Note: Talkback 14.0 has new rate-limitation design to reduce frequency of + * TYPE_WINDOW_CONTENT_CHANGED events to once every 30 seconds. (context: + * b/281765653#comment18) Using {@link View#announceForAccessibility} + * instead as workaround since sending events exceeding this frequency is + * required. + */ + indicatorMessageView?.text?.let { + if (it.isNotBlank()) { + view.announceForAccessibility(it) + } + } } } } |