Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3106fe53 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Support an x-coordinate for fps location" into sc-v2-dev am: 710a025d am: 0d486f70

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15942750

Change-Id: I7f4381ed2130ff0275afd92072174de0cb6bddc4
parents 0ae76c11 0d486f70
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1553,6 +1553,13 @@
    <dimen name="physical_volume_up_button_center_screen_location_y">950px</dimen>
    <dimen name="physical_volume_down_button_center_screen_location_y">1150px</dimen>

    <!-- Location on the screen of the center of the fingerprint sensor. For devices with under
     display fingerprint sensors, this directly corresponds to the fingerprint sensor's location.
     For devices with sensors on the back of the device, this corresponds to the location on the
     screen directly in front of the sensor.
     By default, this is set to @null to use the horizontal center of the screen. -->
    <dimen name="physical_fingerprint_sensor_center_screen_location_x">@null</dimen>

    <!-- Location on the screen of the center of the fingerprint sensor. For devices with under
     display fingerprint sensors, this directly corresponds to the fingerprint sensor's location.
     For devices with sensors on the back of the device, this corresponds to the location on the
+20 −4
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.PointF;
import android.hardware.biometrics.BiometricAuthenticator.Modality;
import android.hardware.biometrics.BiometricConstants;
@@ -97,7 +98,7 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
    private final Provider<UdfpsController> mUdfpsControllerFactory;
    private final Provider<SidefpsController> mSidefpsControllerFactory;
    @Nullable private final PointF mFaceAuthSensorLocation;
    @Nullable private final PointF mFingerprintLocation;
    @Nullable private PointF mFingerprintLocation;
    private final Set<Callback> mCallbacks = new HashSet<>();

    // TODO: These should just be saved from onSaveState
@@ -481,9 +482,7 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
                    (float) faceAuthLocation[1]);
        }

        mFingerprintLocation = new PointF(DisplayUtils.getWidth(mContext) / 2,
                mContext.getResources().getDimensionPixelSize(
                com.android.systemui.R.dimen.physical_fingerprint_sensor_center_screen_location_y));
        updateFingerprintLocation();

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
@@ -491,6 +490,21 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
        context.registerReceiver(mBroadcastReceiver, filter);
    }

    private void updateFingerprintLocation() {
        int xLocation = DisplayUtils.getWidth(mContext) / 2;
        try {
            xLocation = mContext.getResources().getDimensionPixelSize(
                    com.android.systemui.R.dimen
                            .physical_fingerprint_sensor_center_screen_location_x);
        } catch (Resources.NotFoundException e) {
        }
        int yLocation = mContext.getResources().getDimensionPixelSize(
                com.android.systemui.R.dimen.physical_fingerprint_sensor_center_screen_location_y);
        mFingerprintLocation = new PointF(
                xLocation,
                yLocation);
    }

    @SuppressWarnings("deprecation")
    @Override
    public void start() {
@@ -767,6 +781,7 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        updateFingerprintLocation();

        // Save the state of the current dialog (buttons showing, etc)
        if (mCurrentDialog != null) {
@@ -796,6 +811,7 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks,
    }

    private void onOrientationChanged() {
        updateFingerprintLocation();
        if (mCurrentDialog != null) {
            mCurrentDialog.onOrientationChanged();
        }
+34 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Context
import android.content.res.Configuration
import android.graphics.PointF
import android.hardware.biometrics.BiometricSourceType
import android.util.DisplayMetrics
import android.util.Log
import androidx.annotation.VisibleForTesting
import com.android.keyguard.KeyguardUpdateMonitor
@@ -45,6 +46,7 @@ import java.io.PrintWriter
import javax.inject.Inject
import javax.inject.Provider
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.util.leak.RotationUtils

private const val WAKE_AND_UNLOCK_FADE_DURATION = 180L

@@ -182,7 +184,7 @@ class AuthRippleController @Inject constructor(
    }

    fun updateSensorLocation() {
        fingerprintSensorLocation = authController.fingerprintSensorLocation
        updateFingerprintLocation()
        faceSensorLocation = authController.faceAuthSensorLocation
        fingerprintSensorLocation?.let {
            circleReveal = CircleReveal(
@@ -197,6 +199,35 @@ class AuthRippleController @Inject constructor(
        }
    }

    private fun updateFingerprintLocation() {
        val displayMetrics = DisplayMetrics()
        sysuiContext.display?.getRealMetrics(displayMetrics)
        val width = displayMetrics.widthPixels
        val height = displayMetrics.heightPixels

        authController.fingerprintSensorLocation?.let {
            fingerprintSensorLocation = when (RotationUtils.getRotation(sysuiContext)) {
                RotationUtils.ROTATION_LANDSCAPE -> {
                    val normalizedYPos: Float = it.y / width
                    val normalizedXPos: Float = it.x / height
                    PointF(width * normalizedYPos, height * (1 - normalizedXPos))
                }
                RotationUtils.ROTATION_UPSIDE_DOWN -> {
                    PointF(width - it.x, height - it.y)
                }
                RotationUtils.ROTATION_SEASCAPE -> {
                    val normalizedYPos: Float = it.y / width
                    val normalizedXPos: Float = it.x / height
                    PointF(width * (1 - normalizedYPos), height * normalizedXPos)
                }
                else -> {
                    // ROTATION_NONE
                    PointF(it.x, it.y)
                }
            }
        }
    }

    private fun updateRippleColor() {
        mView.setColor(
            Utils.getColorAttr(sysuiContext, android.R.attr.colorAccent).defaultColor)
@@ -314,10 +345,12 @@ class AuthRippleController @Inject constructor(
                        }
                    }
                    "fingerprint" -> {
                        updateSensorLocation()
                        pw.println("fingerprint ripple sensorLocation=$fingerprintSensorLocation")
                        showRipple(BiometricSourceType.FINGERPRINT)
                    }
                    "face" -> {
                        updateSensorLocation()
                        pw.println("face ripple sensorLocation=$faceSensorLocation")
                        showRipple(BiometricSourceType.FACE)
                    }