diff options
author | TheScarastic <warabhishek@gmail.com> | 2021-10-06 06:53:09 +0000 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2022-01-22 11:36:30 +0800 |
commit | 5ec746b2fa40ac2a2e2c7c53ab9b5825602b926c (patch) | |
tree | 2e0676f7f3d6ec78862937c90bc1d01027353e91 | |
parent | da51264a5523f8bca884defeeb8dabbf8a4ec50a (diff) |
udfps: Add support for udfps on aod without having dedicated sensor
Change-Id: I4aa39efe3714bcc40ab3da862809ca9c8974c6bd
3 files changed, 25 insertions, 0 deletions
diff --git a/core/java/android/hardware/fingerprint/IUdfpsOverlayController.aidl b/core/java/android/hardware/fingerprint/IUdfpsOverlayController.aidl index f18360ff4108..f9d037648813 100644 --- a/core/java/android/hardware/fingerprint/IUdfpsOverlayController.aidl +++ b/core/java/android/hardware/fingerprint/IUdfpsOverlayController.aidl @@ -47,4 +47,7 @@ oneway interface IUdfpsOverlayController { // Shows debug messages on the UDFPS overlay. void setDebugMessage(int sensorId, String message); + + // Useful for Legacy devices not having dedicated aod sensor + void onAcquired(int sensorId, int acquiredInfo, int vendorCode); } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index 30fca84472d8..acaf81eb13d4 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -310,6 +310,19 @@ public class UdfpsController implements DozeReceiver, UdfpsHbmProvider { mView.setDebugMessage(message); }); } + + @Override + public void onAcquired(int sensorId, int acquiredInfo, int vendorCode) { + mFgExecutor.execute(() -> { + if (acquiredInfo == 6 && (mStatusBarStateController.isDozing() || !mScreenOn)) { + if (vendorCode == 22) { // Use overlay to determine pressed vendor code? + mPowerManager.wakeUp(mSystemClock.uptimeMillis(), + PowerManager.WAKE_REASON_GESTURE, TAG); + onAodInterrupt(0, 0, 0, 0); // To-Do pass proper values + } + } + }); + } } private static float computePointerSpeed(@NonNull VelocityTracker tracker, int pointerId) { diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java index 7d95ec098fee..87c2910c396c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java @@ -100,6 +100,15 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi } @Override + public void onAcquired(int acquiredInfo, int vendorCode) { + super.onAcquired(acquiredInfo, vendorCode); + try { + mUdfpsOverlayController.onAcquired(getSensorId(), acquiredInfo, vendorCode); + } catch (Exception e) { + } + } + + @Override public void onAuthenticated(BiometricAuthenticator.Identifier identifier, boolean authenticated, ArrayList<Byte> token) { super.onAuthenticated(identifier, authenticated, token); |