Updates AuthBiometricFingerprintIconController for reverse default orientation devices

Updates AuthBiometricFingerprintIconController to translate system
reported rotation values for reverse default orientation devices. This
fixes an issue where the wrong orientation assets were being shown in
BiometricPrompt

Test: (manual) Checking BP assets in all orientations in x-aligned and y-aligned sfps devices
Fixes: 266550908
Change-Id: If4c9c469d7be2c1ee406a87521e712902a1f0f0e
This commit is contained in:
Grace Cheng
2023-02-01 06:07:14 +00:00
parent c52342b106
commit acd2bf22b8

View File

@@ -46,6 +46,8 @@ open class AuthBiometricFingerprintIconController(
private var isDeviceFolded: Boolean = false
private val isSideFps: Boolean
private val isReverseDefaultRotation =
context.resources.getBoolean(com.android.internal.R.bool.config_reverseDefaultRotation)
private val screenSizeFoldProvider: ScreenSizeFoldProvider = ScreenSizeFoldProvider(context)
var iconLayoutParamSize: Pair<Int, Int> = Pair(1, 1)
set(value) {
@@ -76,7 +78,7 @@ open class AuthBiometricFingerprintIconController(
isSideFps = sideFps
val displayInfo = DisplayInfo()
context.display?.getDisplayInfo(displayInfo)
if (isSideFps && displayInfo.rotation == Surface.ROTATION_180) {
if (isSideFps && getRotationFromDefault(displayInfo.rotation) == Surface.ROTATION_180) {
iconView.rotation = 180f
}
screenSizeFoldProvider.registerCallback(this, context.mainExecutor)
@@ -86,7 +88,7 @@ open class AuthBiometricFingerprintIconController(
private fun updateIconSideFps(@BiometricState lastState: Int, @BiometricState newState: Int) {
val displayInfo = DisplayInfo()
context.display?.getDisplayInfo(displayInfo)
val rotation = displayInfo.rotation
val rotation = getRotationFromDefault(displayInfo.rotation)
val iconAnimation = getSideFpsAnimationForTransition(rotation)
val iconViewOverlayAnimation =
getSideFpsOverlayAnimationForTransition(lastState, newState, rotation) ?: return
@@ -217,6 +219,9 @@ open class AuthBiometricFingerprintIconController(
return if (id != null) return id else null
}
private fun getRotationFromDefault(rotation: Int): Int =
if (isReverseDefaultRotation) (rotation + 1) % 4 else rotation
@RawRes
private fun getSideFpsAnimationForTransition(rotation: Int): Int = when (rotation) {
Surface.ROTATION_90 -> if (isDeviceFolded) {