diff options
| author | 2024-06-14 21:06:34 +0000 | |
|---|---|---|
| committer | 2024-06-14 21:06:34 +0000 | |
| commit | e979c1f67168e5ecd7eb90d1c0ec8b47b34237ec (patch) | |
| tree | 385f93fa8b45997aec68d450c8af6b3ad048e4ff | |
| parent | 1f1f412769fe932573fb49aa9252eb19002ebbe6 (diff) | |
| parent | cf3c99f47e68189307c9e5de82b2c16055c2908d (diff) | |
Merge "Alternate bouncer focuses on FP indicator" into main
6 files changed, 21 insertions, 30 deletions
diff --git a/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml b/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml index cf9ca157b943..c9850f2613b1 100644 --- a/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml +++ b/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml @@ -19,8 +19,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sysui="http://schemas.android.com/apk/res-auto" android:id="@+id/alternate_bouncer" - android:focusable="true" - android:clickable="true" android:layout_width="match_parent" android:layout_height="match_parent"> diff --git a/packages/SystemUI/res/layout/sidefps_view.xml b/packages/SystemUI/res/layout/sidefps_view.xml index fc4bf8a65643..a960f74dd644 100644 --- a/packages/SystemUI/res/layout/sidefps_view.xml +++ b/packages/SystemUI/res/layout/sidefps_view.xml @@ -22,5 +22,4 @@ android:layout_height="wrap_content" app:lottie_autoPlay="true" app:lottie_loop="true" - app:lottie_rawRes="@raw/sfps_pulse" - android:importantForAccessibility="no"/>
\ No newline at end of file + app:lottie_rawRes="@raw/sfps_pulse" />
\ No newline at end of file diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index eca58465b29a..838181252cb9 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -3123,6 +3123,8 @@ <!-- Accessibility label for a11y action to show the bouncer (pin/pattern/password) screen lock [CHAR LIMIT=NONE] --> <string name="accessibility_bouncer">enter screen lock</string> + <!-- Accessibility label for side fingerprint sensor indicator [CHAR LIMIT=NONE] --> + <string name="accessibility_side_fingerprint_indicator_label">Touch the fingerprint sensor. It\u2019s the shorter button on the side of the phone</string> <!-- Accessibility label for fingerprint sensor [CHAR LIMIT=NONE] --> <string name="accessibility_fingerprint_label">Fingerprint sensor</string> <!-- Accessibility action for tapping on an affordance that will bring up the user's diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt index 9cc46506cefb..f52e457f3800 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt @@ -24,7 +24,6 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.WindowManager -import android.view.accessibility.AccessibilityEvent import androidx.lifecycle.Lifecycle import androidx.lifecycle.repeatOnLifecycle import com.airbnb.lottie.LottieAnimationView @@ -47,11 +46,11 @@ import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.res.R import com.android.systemui.util.kotlin.sample import dagger.Lazy -import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch +import javax.inject.Inject /** Binds the side fingerprint sensor indicator view to [SideFpsOverlayViewModel]. */ @OptIn(ExperimentalCoroutinesApi::class) @@ -127,6 +126,11 @@ constructor( } overlayView = layoutInflater.get().inflate(R.layout.sidefps_view, null, false) + .apply { + contentDescription = context.resources.getString( + R.string.accessibility_side_fingerprint_indicator_label + ) + } val overlayViewModel = SideFpsOverlayViewModel( @@ -135,10 +139,12 @@ constructor( displayStateInteractor.get(), sfpsSensorInteractor.get(), ) - bind(overlayView!!, overlayViewModel, windowManager.get()) - overlayView!!.visibility = View.INVISIBLE - Log.d(TAG, "show(): adding overlayView $overlayView") - windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) + overlayView?.let { overlayView -> + bind(overlayView, overlayViewModel, windowManager.get()) + overlayView.visibility = View.INVISIBLE + Log.d(TAG, "show(): adding overlayView $overlayView") + windowManager.get().addView(overlayView, overlayViewModel.defaultOverlayViewParams) + } } /** Hide the side fingerprint sensor indicator */ @@ -179,25 +185,6 @@ constructor( overlayShowAnimator.start() - it.setAccessibilityDelegate( - object : View.AccessibilityDelegate() { - override fun dispatchPopulateAccessibilityEvent( - host: View, - event: AccessibilityEvent - ): Boolean { - return if ( - event.getEventType() === - android.view.accessibility.AccessibilityEvent - .TYPE_WINDOW_STATE_CHANGED - ) { - true - } else { - super.dispatchPopulateAccessibilityEvent(host, event) - } - } - } - ) - repeatOnLifecycle(Lifecycle.State.STARTED) { launch { viewModel.lottieCallbacks.collect { callbacks -> diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt index 19ea007fc60f..2644352ce0bb 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/SideFpsOverlayViewModel.kt @@ -81,7 +81,9 @@ constructor( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, - Utils.FINGERPRINT_OVERLAY_LAYOUT_PARAM_FLAGS, + WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED or + WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or + WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT ) .apply { @@ -91,6 +93,8 @@ constructor( layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS privateFlags = PRIVATE_FLAG_TRUSTED_OVERLAY or PRIVATE_FLAG_NO_MOVE_ANIMATION + // Avoid announcing window title. + accessibilityTitle = " " } private val indicatorAsset: Flow<Int> = diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt index 42382540d401..6f70622e5d8b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinderTest.kt @@ -126,6 +126,7 @@ class SideFpsOverlayViewBinderTest : SysuiTestCase() { `when`(layoutInflater.inflate(R.layout.sidefps_view, null, false)).thenReturn(sideFpsView) `when`(sideFpsView.requireViewById<LottieAnimationView>(eq(R.id.sidefps_animation))) .thenReturn(mock(LottieAnimationView::class.java)) + `when`(sideFpsView.context).thenReturn(mContext) with(mock(ViewPropertyAnimator::class.java)) { `when`(sideFpsView.animate()).thenReturn(this) `when`(alpha(Mockito.anyFloat())).thenReturn(this) |