Sync up to v219

This commit is contained in:
Andy CrossGate Yan
2020-06-11 00:52:56 +00:00
parent 23b58fa57f
commit 133b4799cc
20 changed files with 1552 additions and 165 deletions
@@ -8,7 +8,7 @@ Subject: [PATCH 13/36] Show APN Settings for CDMA carriers
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 19f8203f750..4e0fcbb7358 100755
index 19f8203f750..4e0fcbb7358 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -3073,7 +3073,7 @@ public class CarrierConfigManager {
@@ -1,4 +1,4 @@
From 8049bd5138e52042ed47b8b0700753cb77b57641 Mon Sep 17 00:00:00 2001
From 66452f7948361f504cb2d41249c04d53f56ca7d6 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 24 Mar 2019 23:05:14 +0100
Subject: [PATCH] Support new samsung light hal
@@ -22,7 +22,7 @@ index fdcefd42316..d8645012e24 100644
static_libs: [
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
index 35d8219651d..20de7985d1d 100644
index 35d8219651d..2f77726d5bd 100644
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
@@ -23,6 +23,8 @@
@@ -43,11 +43,10 @@ index 35d8219651d..20de7985d1d 100644
static bool sLightSupported = true;
static bool validate(jint light, jint flash, jint brightness) {
@@ -151,6 +155,21 @@ static void setLight_native(
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
@@ -152,6 +156,21 @@ static void setLight_native(
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
}
+
+ sp<ISecLight> secHal = ISecLight::getService();
+
+ if(secHal != nullptr) {
@@ -62,9 +61,10 @@ index 35d8219651d..20de7985d1d 100644
+ if (t.duration() > 50ms) ALOGD("Excessive delay setting light");
+ }
+ }
+
Type type = static_cast<Type>(light);
LightState state = constructState(
colorARGB, flashMode, onMS, offMS, brightnessMode);
--
2.17.1
+17 -19
View File
@@ -1,4 +1,4 @@
From b15c825ccb48260a85695db41aff138787d1817f Mon Sep 17 00:00:00 2001
From ad26b4fe426344371cd018050025d7ca4d47bec2 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Sun, 24 Mar 2019 22:48:39 +0100
Subject: [PATCH] wip
@@ -11,15 +11,15 @@ Change-Id: I50fa9a7a670cef5b93fc4a3a027f1587b1214831
.../fingerprint/FingerprintService.java | 26 ++-
.../testharness/TestHarnessModeService.java | 7 +-
.../com/android/server/wm/ActivityRecord.java | 6 -
...om_android_server_lights_LightsService.cpp | 15 +-
7 files changed, 255 insertions(+), 12 deletions(-)
...om_android_server_lights_LightsService.cpp | 13 +-
7 files changed, 254 insertions(+), 11 deletions(-)
create mode 100644 services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
diff --git a/Android.bp b/Android.bp
index 16abdbf79de..d01dc639c8f 100644
index bdd88034655..5e79350ac5c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -777,6 +777,8 @@ java_defaults {
@@ -779,6 +779,8 @@ java_defaults {
"android.hardware.vibrator-V1.2-java",
"android.hardware.vibrator-V1.3-java",
"android.hardware.wifi-V1.0-java-constants",
@@ -257,7 +257,7 @@ index 00000000000..8829bcb7e48
+ }
+}
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index 19593e7e047..c7de87126e8 100644
index f6e0742aa67..92c0cc5dc85 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -120,8 +120,10 @@ public class FingerprintService extends BiometricServiceBase {
@@ -298,7 +298,7 @@ index 19593e7e047..c7de87126e8 100644
}
/**
@@ -180,7 +202,6 @@ public class FingerprintService extends BiometricServiceBase {
@@ -181,7 +203,6 @@ public class FingerprintService extends BiometricServiceBase {
/**
* The following methods contain common code which is shared in biometrics/common.
*/
@@ -306,7 +306,7 @@ index 19593e7e047..c7de87126e8 100644
@Override // Binder call
public long preEnroll(IBinder token) {
checkPermission(MANAGE_FINGERPRINT);
@@ -725,6 +746,7 @@ public class FingerprintService extends BiometricServiceBase {
@@ -727,6 +748,7 @@ public class FingerprintService extends BiometricServiceBase {
mAlarmManager = context.getSystemService(AlarmManager.class);
context.registerReceiver(mLockoutReceiver, new IntentFilter(getLockoutResetIntent()),
getLockoutBroadcastPermission(), null /* handler */);
@@ -314,7 +314,7 @@ index 19593e7e047..c7de87126e8 100644
}
@Override
@@ -952,6 +974,7 @@ public class FingerprintService extends BiometricServiceBase {
@@ -954,6 +976,7 @@ public class FingerprintService extends BiometricServiceBase {
Slog.w(TAG, "startPreEnroll: no fingerprint HAL!");
return 0;
}
@@ -322,7 +322,7 @@ index 19593e7e047..c7de87126e8 100644
try {
return daemon.preEnroll();
} catch (RemoteException e) {
@@ -966,6 +989,7 @@ public class FingerprintService extends BiometricServiceBase {
@@ -968,6 +991,7 @@ public class FingerprintService extends BiometricServiceBase {
Slog.w(TAG, "startPostEnroll: no fingerprint HAL!");
return 0;
}
@@ -349,10 +349,10 @@ index fcf87ee2a4b..0aa948417c1 100644
// There's no data to apply, so leave it as-is.
return null;
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 479babc4c7d..1f972dd4918 100644
index d9c85c0ca50..0740f70bbf4 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -2833,12 +2833,6 @@ final class ActivityRecord extends ConfigurationContainer {
@@ -2835,12 +2835,6 @@ final class ActivityRecord extends ConfigurationContainer {
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
private void updateOverrideConfiguration() {
final Configuration overrideConfig = mTmpConfig;
@@ -366,7 +366,7 @@ index 479babc4c7d..1f972dd4918 100644
if (mCompatDisplayInsets != null) {
// The override configuration is set only once in size compatibility mode.
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
index 20de7985d1d..2b50d04233e 100644
index 2f77726d5bd..2b50d04233e 100644
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
@@ -46,6 +46,9 @@ using ISecLight = ::vendor::samsung::hardware::light::V2_0::ISecLight;
@@ -379,19 +379,17 @@ index 20de7985d1d..2b50d04233e 100644
static bool validate(jint light, jint flash, jint brightness) {
bool valid = true;
@@ -155,20 +158,24 @@ static void setLight_native(
colorAlpha = (colorAlpha * brightnessLevel) / 0xFF;
@@ -156,19 +159,23 @@ static void setLight_native(
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
}
-
- sp<ISecLight> secHal = ISecLight::getService();
- if(secHal != nullptr) {
- sp<ISecLight> secHal = ISecLight::getService();
+ if(!sSecTried) {
+ sSecHal = ISecLight::getService();
+ sSecTried = true;
+ }
+
- if(secHal != nullptr) {
+ if(sSecHal != nullptr) {
SecType type = static_cast<SecType>(light);
LightState state = constructState(
@@ -1,21 +1,23 @@
From b5ed01a87952a16e928390aec2aaa531c2bd623d Mon Sep 17 00:00:00 2001
From 1026ff090a11633027dd62fcff8fe91e2cdea732 Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Thu, 2 Jan 2020 10:16:49 +0800
Subject: [PATCH 46/46] fix crashing on devices with higher aspect ratio down
to sw288dp
Subject: [PATCH] fix crashing on devices with higher aspect ratio down to
sw288dp
* This is what the Qin 2 (Pro) is.
Change-Id: I2289a23b706b512a99a541221576960407c098e7
---
.../SystemUI/res/values-sw288dp/dimens.xml | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
.../SystemUI/res/values-sw288dp/dimens.xml | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 packages/SystemUI/res/values-sw288dp/dimens.xml
diff --git a/packages/SystemUI/res/values-sw288dp/dimens.xml b/packages/SystemUI/res/values-sw288dp/dimens.xml
new file mode 100644
index 00000000000..2774554ec64
index 00000000000..40adc2e6879
--- /dev/null
+++ b/packages/SystemUI/res/values-sw288dp/dimens.xml
@@ -0,0 +1,34 @@
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2019 The Android Open Source Project
@@ -49,7 +51,6 @@ index 00000000000..2774554ec64
+ <dimen name="global_actions_grid_item_icon_bottom_margin">4dp</dimen>
+
+</resources>
+
--
2.17.1
@@ -1,63 +0,0 @@
From 1f986fdcdbf2788cc1df26c032a08bce89b1427d Mon Sep 17 00:00:00 2001
From: "Chris.CC Lee" <chriscclee@google.com>
Date: Mon, 3 Feb 2020 17:33:19 +0800
Subject: [PATCH 47/49] Fix AoD front scrim being opaque at DOZE_PULSING.
When doze state changed from DOZE to DOZE_PULSING on devices not
supporting doze_brightness_sensor_type sensor, there would be no
sensor events to update the AoD front scrim. And due to the scrim was
set to opaque at DOZE state, most views on the statusbar will be
invisible. This patch change the scrim to transparent again at leaving
DOZE state.
Bug: 148129743
Test: atest DozeScreenBrightnessTest
Change-Id: I2c079d081b04f00a929ae5c4475639685f9f7e69
---
.../systemui/doze/DozeScreenBrightness.java | 4 ++++
.../systemui/doze/DozeScreenBrightnessTest.java | 14 ++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
index bd6882c01bb..c27e633f2a9 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
@@ -161,6 +161,10 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
// again, it will only show after the brightness sensor has stabilized,
// avoiding a potential flicker.
scrimOpacity = 255;
+ } else if (!mScreenOff && mLightSensor == null) {
+ // No light sensor but previous state turned the screen black. Make the scrim
+ // transparent and below views visible.
+ scrimOpacity = 0;
} else if (brightnessReady) {
// Only unblank scrim once brightness is ready.
scrimOpacity = computeScrimOpacity(sensorValue);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
index 392c677b982..1347175c7d3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
@@ -170,6 +170,20 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness);
}
+ @Test
+ public void testPulsing_withoutLightSensor_setsAoDDimmingScrimTransparent() throws Exception {
+ mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
+ null /* sensor */, mHostFake, null /* handler */,
+ DEFAULT_BRIGHTNESS, SENSOR_TO_BRIGHTNESS, SENSOR_TO_OPACITY,
+ true /* debuggable */);
+ mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
+ mScreen.transitionTo(INITIALIZED, DOZE);
+
+ mScreen.transitionTo(DOZE, DOZE_REQUEST_PULSE);
+
+ assertEquals(0f, mHostFake.aodDimmingScrimOpacity, 0.001f /* delta */);
+ }
+
@Test
public void testNullSensor() throws Exception {
mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
--
2.17.1
@@ -0,0 +1,40 @@
From 5d0e8590f692a4cc868310dbc61d502f204cfbaa Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 20 May 2020 17:28:26 +0200
Subject: [PATCH 59/65] Add a backlight listener, to be used by FOD to properly
set dim
---
.../core/java/com/android/server/lights/LightsService.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index 777a00daf31..9d7975d63b4 100644
--- a/services/core/java/com/android/server/lights/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -30,10 +30,14 @@ import android.view.SurfaceControl;
import com.android.server.SystemService;
public class LightsService extends SystemService {
+ public interface OnBacklightChange {
+ void onBacklightChange(int newBacklight);
+ }
static final String TAG = "LightsService";
static final boolean DEBUG = false;
final LightImpl mLights[] = new LightImpl[LightsManager.LIGHT_ID_COUNT];
+ public static OnBacklightChange backlightChangeListener;
private final class LightImpl extends Light {
@@ -90,6 +94,7 @@ public class LightsService extends SystemService {
(float) brightness / mSurfaceControlMaximumBrightness);
return;
}
+ if(mId == 0 && backlightChangeListener != null) backlightChangeListener.onBacklightChange(brightness);
if(mId == 0) {
String fp = SystemProperties.get("ro.vendor.build.fingerprint", "hello");
--
2.17.1
@@ -0,0 +1,48 @@
From 7e7cdc92f9f23fa9ea1fb1b6d7cea37f0301f899 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 20 May 2020 17:39:50 +0200
Subject: [PATCH 60/65] Don't show facola on preenroll, wait for enroll
---
.../server/biometrics/fingerprint/FingerprintService.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index 1323c5ec0dd..c53607786df 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -176,7 +176,6 @@ public class FingerprintService extends BiometricServiceBase {
@Override
public boolean onAcquired(int acquiredInfo, int vendorCode) {
boolean result = super.onAcquired(acquiredInfo, vendorCode);
- android.util.Log.d("PHH-Enroll", "acquired ret " + result);
if(result) mFacola.hide();
return result;
}
@@ -185,7 +184,6 @@ public class FingerprintService extends BiometricServiceBase {
public boolean onAuthenticated(BiometricAuthenticator.Identifier identifier,
boolean authenticated, ArrayList<Byte> token) {
boolean result = super.onAuthenticated(identifier, authenticated, token);
- android.util.Log.d("PHH-Enroll", "auth-ed ret " + result);
if(result) mFacola.hide();
return result;
}
@@ -744,6 +742,7 @@ public class FingerprintService extends BiometricServiceBase {
Slog.w(TAG, "enroll(): no fingerprint HAL!");
return ERROR_ESRCH;
}
+ mFacola.show();
return daemon.enroll(cryptoToken, groupId, timeout);
}
@@ -990,7 +989,6 @@ public class FingerprintService extends BiometricServiceBase {
Slog.w(TAG, "startPreEnroll: no fingerprint HAL!");
return 0;
}
- mFacola.show();
try {
return daemon.preEnroll();
} catch (RemoteException e) {
--
2.17.1
@@ -0,0 +1,531 @@
From 5624ce8b0cadf9cc588aadc8f216073a1eb8385f Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Wed, 20 May 2020 21:17:58 +0200
Subject: [PATCH 61/65] Add support for new Goodix, Samsung, Xiaomi FODs
- Xiaomi on MIUI12 has new magical Z to trigger HBM, and trigger feedback. Dim layer is done by kernel, but we need to set alpha
- Samsung has usageBits to trigger HBM and trigger feedback
- Goodix has nothing specific just send events
---
services/core/Android.bp | 2 +
.../biometrics/fingerprint/FacolaView.java | 323 +++++++++++++++---
2 files changed, 285 insertions(+), 40 deletions(-)
diff --git a/services/core/Android.bp b/services/core/Android.bp
index dd0575c0b02..910e2fcf64c 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -55,7 +55,9 @@ java_library_static {
"netd_aidl_interface-V2-java",
"netd_event_listener_interface-java",
"vendor.goodix.extend.service-V2.0-java",
+ "vendor.goodix.hardware.biometrics.fingerprint-V2.1-java",
"vendor.samsung.hardware.biometrics.fingerprint-V2.1-java",
+ "vendor.samsung.hardware.biometrics.fingerprint-V3.0-java",
"vendor.oppo.hardware.biometrics.fingerprint-V2.1-java",
"vendor.xiaomi.hardware.fingerprintextension-V1.0-java",
],
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
index a87f7e78af4..d3d58aff6c0 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
@@ -35,30 +35,38 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
+import java.util.Arrays;
import vendor.xiaomi.hardware.fingerprintextension.V1_0.IXiaomiFingerprint;
import vendor.goodix.extend.service.V2_0.IGoodixFPExtendService;
import vendor.samsung.hardware.biometrics.fingerprint.V2_1.ISecBiometricsFingerprint;
+import vendor.samsung.hardware.biometrics.fingerprint.V3_0.ISehBiometricsFingerprint;
import android.hardware.display.DisplayManager;
+import android.os.Build;
+import android.os.FileObserver;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.ServiceManager;
+import android.util.DisplayMetrics;
+
public class FacolaView extends ImageView implements OnTouchListener {
private int mX, mY, mW, mH;
private final Paint mPaintFingerprint = new Paint();
private final Paint mPaintShow = new Paint();
private IXiaomiFingerprint mXiaomiFingerprint = null;
private IGoodixFPExtendService mGoodixFingerprint = null;
+ private vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon mGoodixFingerprintV2_1 = null;
private ISecBiometricsFingerprint mSamsungFingerprint = null;
+ private ISehBiometricsFingerprint mSamsungFingerprint3_0 = null;
private vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint mOppoFingerprint = null;
private boolean mInsideCircle = false;
private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
private final WindowManager.LayoutParams mParamsTouched = new WindowManager.LayoutParams();
- private final static float UNTOUCHED_DIM = .1f;
+ private final static float UNTOUCHED_DIM = .0f;
private final static float TOUCHED_DIM = .9f;
private final HandlerThread mHandlerThread;
@@ -68,10 +76,17 @@ public class FacolaView extends ImageView implements OnTouchListener {
private final DisplayManager mDM;
private final boolean samsungFod = samsungHasCmd("fod_enable");
private boolean noDim;
+ private boolean bypassedBrightness;
+ private boolean isDown = false;
+
+ private java.util.ArrayList<Object> objectsToKeep = new java.util.ArrayList();
+
+ private static boolean doneCalibrationOnce = true;
private boolean mFullGreenDisplayed = false;
private final View mFullGreen;
private boolean mHidden = true;
+ private boolean xiaomiAsynchronous = false;
FacolaView(Context context) {
super(context);
@@ -86,13 +101,18 @@ public class FacolaView extends ImageView implements OnTouchListener {
mWM = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
mDM = (DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE);
+ Point displayRealSize = new Point();
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ mDM.getDisplay(0).getRealSize(displayRealSize);
+ mDM.getDisplay(0).getMetrics(displayMetrics);
+
android.util.Log.d("PHH", "Samsung FOD " + samsungFod);
mHandlerThread = new HandlerThread("FacolaThread");
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
- noDim = android.os.SystemProperties.getBoolean("persist.sys.phh.nodim", true);
+ noDim = android.os.SystemProperties.getBoolean("persist.sys.phh.nodim", false);
String[] location = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.location.X_Y", "").split(",");
if(location.length != 2)
location = android.os.SystemProperties.get("persist.sys.fp.fod.location.X_Y", "").split(",");
@@ -107,12 +127,25 @@ public class FacolaView extends ImageView implements OnTouchListener {
mW = Integer.parseInt(size[0]);
mH = Integer.parseInt(size[1]);
} else {
+ //a50
+ //mX = -1;//443;// - 190/2;
+ //mY = -1;// 1972;// - 190 / 2;
+ //mW = -1;//190;
+ //mH = -1;//190;
+
+ //x2 pro
+ //mX = 445;// - 190/2;
+ //mY = 1988;// - 190/2;
+ //mW = 190;
+ //mH = 190;
mX = -1;
mY = -1;
mW = -1;
mH = -1;
}
+ mParamsTouched.dimAmount = 0;
+
int oppoSize = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconsize", 0);
if(oppoSize > 0) {
mW = oppoSize;
@@ -121,15 +154,16 @@ public class FacolaView extends ImageView implements OnTouchListener {
int oppoLocation = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconlocation", 0);
if(oppoLocation > 0) {
Slog.d("PHH-Enroll", "Got Oppo icon location " + oppoLocation);
- Point p = new Point();
- mDM.getDisplay(0).getRealSize(p);
- Slog.d("PHH-Enroll", "\tscreen size " + p.x + ", " + p.y);
- mX = p.x/2 - mW/2;
- mY = p.y - mH/2 - oppoLocation;
+ Slog.d("PHH-Enroll", "\tscreen size " + displayRealSize.x + ", " + displayRealSize.y);
+ mX = displayRealSize.x/2 - mW/2;
+ mY = displayRealSize.y - mH/2 - oppoLocation;
Slog.d("PHH-Enroll", "\tfacola at " + mX + ", " + mY);
noDim = true;
}
+ String gammaStr = android.os.SystemProperties.get("persist.sys.phh.fod.gamma", "2.2");
+ float gamma = Float.parseFloat(gammaStr);
+
mPaintFingerprint.setAntiAlias(true);
mPaintFingerprint.setColor(Color.GREEN);
@@ -148,11 +182,21 @@ public class FacolaView extends ImageView implements OnTouchListener {
} catch(Exception e) {
Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
}
+ try {
+ mGoodixFingerprintV2_1 = vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting goodix2 fingerprint service", e);
+ }
try {
mSamsungFingerprint = ISecBiometricsFingerprint.getService();
} catch(Exception e) {
Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
}
+ try {
+ mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting samsung 3.0 fingerprint service", e);
+ }
try {
mOppoFingerprint = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
} catch(Exception e) {
@@ -160,13 +204,154 @@ public class FacolaView extends ImageView implements OnTouchListener {
}
}
+ if(mSamsungFingerprint3_0 != null || mSamsungFingerprint != null) {
+ noDim = true;
+ bypassedBrightness = true;
+
+ String fodPositionString = readFile("/sys/class/fingerprint/fingerprint/position");
+ final String brightnessFile;
+ if("qcom".equals(Build.HARDWARE))
+ brightnessFile = "/sys/class/backlight/panel0-backlight/brightness";
+ else
+ brightnessFile = "/sys/class/lcd/panel/device/backlight/panel/brightness";
+
+ String maskBrightnessStr = readFile("/sys/class/lcd/panel/mask_brightness");
+ String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
+
+ if(fodPositionString != null && maskBrightnessStr != null) {
+ double maskBrightness = Double.parseDouble(maskBrightnessStr);
+ String[] fodPositionArray = readFile("/sys/class/fingerprint/fingerprint/position").split(",");
+ float bottomMM = Float.parseFloat(fodPositionArray[0]);
+ float areaSizeMM = Float.parseFloat(fodPositionArray[5]);
+
+ float bottomInch = bottomMM * 0.0393700787f;
+ float areaSizeInch = areaSizeMM * 0.0393700787f;
+
+ int bottomPx = (int)(bottomInch * displayMetrics.ydpi);
+ int areaSizePx = (int)(areaSizeInch * displayMetrics.ydpi);
+ mW = areaSizePx;
+ mH = areaSizePx;
+ mX = displayRealSize.x/2 - mW/2;
+ mY = displayRealSize.y - bottomPx - mH;
+ Slog.d("PHH-Enroll", "Samsung computed " + mX + "," + mY + "; " + mW + "x" + mH);
+
+ String cmd = String.format("fod_rect,%d,%d,%d,%d", mX, mY, mX+mW, mY+mH);
+ samsungCmd(cmd);
+
+ Slog.d("PHH-Enroll", "Reading brightness file gives " + readFile(brightnessFile));
+ FileObserver samsungCallback = new FileObserver(brightnessFile, FileObserver.MODIFY) {
+ //Don't use LightsService' observer, because Samsung's brightness file is in nits, which makes for much more accurate computation
+ @Override
+ public void onEvent(int event, String path) {
+ String currentBrightnessStr = readFile(brightnessFile);
+ Slog.d("PHH-Enroll", "New brightness is " + currentBrightnessStr);
+ int currentBrightness = Integer.parseInt(currentBrightnessStr);
+
+ mHandler.post( () -> {
+ double dim = 1.0d - Math.pow( (currentBrightness / maskBrightness), 1/gamma);
+ Slog.d("PHH-Enroll", "Setting dim to " + dim);
+ mParamsTouched.dimAmount = (float)dim;
+ if(!mHidden) {
+ Slog.d("PHH-Enroll", "++Setting dim to " + dim);
+ if(mFullGreenDisplayed && !mHidden) {
+ mWM.updateViewLayout(mFullGreen, mParamsTouched);
+ }
+ }
+ });
+ }
+ };
+ samsungCallback.startWatching();
+ objectsToKeep.add(samsungCallback);
+
+ Slog.d("PHH-Enroll", "Reading actual brightness file gives " + readFile(actualMaskBrightnessPath));
+ FileObserver actualMaskObserver = new FileObserver(actualMaskBrightnessPath, FileObserver.MODIFY) {
+ @Override
+ public void onEvent(int event, String path) {
+ String actualMask = readFile(actualMaskBrightnessPath);
+ Slog.d("PHH-Enroll", "New actual mask brightness is " + actualMask);
+ try {
+ int eventReq = 0;
+ if("0".equals(actualMask)) {
+ eventReq = 1; //released
+ } else {
+ eventReq = 2; //pressed
+ }
+ if(mSamsungFingerprint != null) {
+ mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, eventReq, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
+ } else if(mSamsungFingerprint3_0 != null) {
+ mSamsungFingerprint3_0.sehRequest(22 /* SEM_FINGER_STATE */, eventReq, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
+ }
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed setting samsung event for mask observer", e);
+ }
+ }
+ };
+ actualMaskObserver.startWatching();
+ objectsToKeep.add(actualMaskObserver);
+
+ }
+ }
+
+ String xiaomiFodReadyPath = "/sys/class/drm/card0-DSI-1/fod_ui_ready";
+ if(new File(xiaomiFodReadyPath).exists()) {
+ xiaomiAsynchronous = true;
+ FileObserver xiaomiUiReadyCb = new FileObserver(xiaomiFodReadyPath, FileObserver.MODIFY) {
+ @Override
+ public void onEvent(int event, String path) {
+ String currentUiReady = readFile(xiaomiFodReadyPath);
+ Slog.d("PHH-Enroll", "New fod ready is " + currentUiReady);
+
+ mHandler.post( () -> {
+ try {
+ if("0".equals(currentUiReady)) {
+ mXiaomiFingerprint.extCmd(0xa, 0);
+ } else if("1".equals(currentUiReady)) {
+ mXiaomiFingerprint.extCmd(0xa, 1);
+ }
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed Xiaomi async extcmd", e);
+ }
+ });
+ }
+ };
+ xiaomiUiReadyCb.startWatching();
+ objectsToKeep.add(xiaomiUiReadyCb);
+ }
+
if(mX != -1) {
android.os.SystemProperties.set("persist.sys.phh.has_fod", "true");
} else {
android.os.SystemProperties.set("persist.sys.phh.has_fod", "false");
}
+ com.android.server.lights.LightsService.backlightChangeListener = new com.android.server.lights.LightsService.OnBacklightChange() {
+ public void onBacklightChange(int brightness) {
+ //Simple (but wrong) math assuming 255 is max brightness with 2.2 screen gamma and linear backlight
+ double dim = (1.0 - Math.pow(brightness/255.0, 1/gamma));
+
+ int alpha = (int)(255.0*dim);
+ Slog.d("PHH-Enroll", "Setting Xiaomi dim alpha to " + alpha + ", from " + brightness);
+ writeFile("/sys/class/drm/card0-DSI-1/dim_alpha", Integer.toString(alpha));
+
+ mHandler.post( () -> {
+ if(!noDim) {
+ Slog.d("PHH-Enroll", "Setting dim to " + dim);
+ mParams.dimAmount = (float)dim;
+ if(!mHidden) {
+ Slog.d("PHH-Enroll", "++Setting dim to " + dim);
+ mWM.updateViewLayout(FacolaView.this, mParams);
+ }
+ }
+ });
+ }
+ };
+
+ bypassedBrightness = hbmCtrl1.exists() || noDim;
}
+ private final File hbmCtrl1 = new File("/proc/leds/hbm_mode");
+
private final File oppoFod = new File("/sys/kernel/oppo_display/notify_fppress");
private void oppoPress(boolean pressed) {
if(!oppoFod.exists()) return;
@@ -199,11 +384,14 @@ public class FacolaView extends ImageView implements OnTouchListener {
mParamsTouched.type = WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
mParamsTouched.setTitle("Fingerprint on display.touched");
mParamsTouched.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
- WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
- mParamsTouched.dimAmount = UNTOUCHED_DIM;
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
+ WindowManager.LayoutParams.FLAG_DIM_BEHIND;
+ writeFile(hbmCtrl1, "1");
if(!noDim) {
- mParamsTouched.dimAmount = TOUCHED_DIM;
mParamsTouched.screenBrightness = 1.0f;
+ if(!bypassedBrightness) {
+ mParamsTouched.screenBrightness = 1.0f;
+ }
}
mParamsTouched.packageName = "android";
@@ -216,39 +404,52 @@ public class FacolaView extends ImageView implements OnTouchListener {
mWM.addView(mFullGreen, mParamsTouched);
});
}
-
- int nitValue = 2;
- mHandler.postDelayed( () -> {
- try {
- if(mXiaomiFingerprint != null) {
+ if(!isDown) {
+ isDown = true;
+ int nitValue = 2;
+ mHandler.postDelayed( () -> {
+ try {
+ if(mXiaomiFingerprint != null && !xiaomiAsynchronous) {
mXiaomiFingerprint.extCmd(0xa, nitValue);
- } else if(mGoodixFingerprint != null) {
+ } else if(mGoodixFingerprint != null) {
mGoodixFingerprint.goodixExtendCommand(10, 1);
- } else if(mSamsungFingerprint != null) {
- mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, 2 /* pressed */, new java.util.ArrayList<Byte>(),
+ } else if(mGoodixFingerprintV2_1 != null) {
+ mGoodixFingerprintV2_1.sendCommand(0x600, new java.util.ArrayList<Byte>(),
(int retval, java.util.ArrayList<Byte> out) -> {} );
- }
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed calling late fp extcmd", e);
- }
- }, 200);
+ }
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed calling late fp extcmd", e);
+ }
+ }, 200);
+ }
} catch(Exception e) {
Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
}
oppoPress(true);
} else {
+ writeFile(hbmCtrl1, "1");
oppoPress(false);
- try {
- if(mXiaomiFingerprint != null) {
- mXiaomiFingerprint.extCmd(0xa, 0);
- } else if(mGoodixFingerprint != null) {
- mGoodixFingerprint.goodixExtendCommand(10, 0);
- } else if(mSamsungFingerprint != null) {
- mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, 1 /* released */, new java.util.ArrayList<Byte>(),
- (int retval, java.util.ArrayList<Byte> out) -> {} );
+ if(isDown) {
+ isDown = false;
+ try {
+ if(mXiaomiFingerprint != null && !xiaomiAsynchronous) {
+ mXiaomiFingerprint.extCmd(0xa, 0);
+ } else if(mGoodixFingerprint != null) {
+ mGoodixFingerprint.goodixExtendCommand(10, 0);
+ } else if(mGoodixFingerprintV2_1 != null) {
+ mGoodixFingerprintV2_1.sendCommand(0x601, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {});
+ } else if(mSamsungFingerprint != null) {
+ mSamsungFingerprint.request(22 /* SEM_FINGER_STATE */, 0, 1 /* released */, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
+ } else if(mSamsungFingerprint3_0 != null) {
+ mSamsungFingerprint3_0.sehRequest(22 /* SEM_FINGER_STATE */, 1 /* released */, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
+ }
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
}
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed calling fp extcmd", e);
+
}
if(mFullGreenDisplayed) {
mHandler.post( () -> {
@@ -278,7 +479,9 @@ public class FacolaView extends ImageView implements OnTouchListener {
if(!mInsideCircle) {
mParams.screenBrightness = .0f;
- mParams.dimAmount = UNTOUCHED_DIM;
+ if(!noDim) {
+ mParams.dimAmount = UNTOUCHED_DIM;
+ }
mWM.updateViewLayout(this, mParams);
return false;
}
@@ -296,6 +499,34 @@ public class FacolaView extends ImageView implements OnTouchListener {
Slog.d("PHH-Enroll", "Show", new Exception());
if(!mHidden) return;
mHidden = false;
+ try {
+ mSamsungFingerprint = ISecBiometricsFingerprint.getService();
+ mSamsungFingerprint.request(20 /* SEM_FINGER_STATE */, 0, 0 /* released */, new java.util.ArrayList<Byte>(),
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed setting fast fingerprint recognition");
+ }
+ try {
+ mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
+ Slog.d("PHH-Enroll", "Samsung ask for sensor status");
+ mSamsungFingerprint3_0.sehRequest(6, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
+ Slog.d("PHH-Enroll", "Result is " + retval);
+ for(int i=0; i<out.size(); i++) {
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
+ }
+ } );
+ Slog.d("PHH-Enroll", "Samsung ask for sensor brightness value");
+ mSamsungFingerprint3_0.sehRequest(32, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
+ Slog.d("PHH-Enroll", "Result is " + retval);
+ for(int i=0; i<out.size(); i++) {
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
+ }
+ } );
+
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed setting samsung3.0 fingerprint recognition", e);
+ }
+
if(mOppoFingerprint != null) {
try {
mOppoFingerprint.setScreenState(vendor.oppo.hardware.biometrics.fingerprint.V2_1.FingerprintScreenState.FINGERPRINT_SCREEN_ON);
@@ -327,13 +558,17 @@ public class FacolaView extends ImageView implements OnTouchListener {
mParams.format = PixelFormat.TRANSLUCENT;
mParams.type = WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
- mParams.setTitle("Fingerprint on display");
+ mParams.setTitle("Fingerprint on display.untouched");
mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH |
WindowManager.LayoutParams.FLAG_DIM_BEHIND |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
- mParams.dimAmount = UNTOUCHED_DIM;
- mParams.screenBrightness = .0f;
+ if(!noDim) {
+ mParams.dimAmount = UNTOUCHED_DIM;
+ mParams.screenBrightness = .0f;
+ } else {
+ mParams.dimAmount = 0;
+ }
mParams.packageName = "android";
@@ -370,8 +605,6 @@ public class FacolaView extends ImageView implements OnTouchListener {
try {
if(mXiaomiFingerprint != null) {
mXiaomiFingerprint.extCmd(0xa, 0);
- } else if(mGoodixFingerprint != null) {
- mXiaomiFingerprint.extCmd(10, 0);
}
} catch(Exception e) {
Slog.d("PHH-Enroll", "Failed calling xiaomi fp extcmd");
@@ -417,7 +650,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
}
}
- private static void samsungCmd(String cmd) {
+ public static void samsungCmd(String cmd) {
try {
PrintWriter writer = new PrintWriter("/sys/devices/virtual/sec/tsp/cmd", "UTF-8");
writer.println(cmd);
@@ -442,4 +675,14 @@ public class FacolaView extends ImageView implements OnTouchListener {
}
}
+ private static void writeFile(File file, String value) {
+ try {
+ PrintWriter writer = new PrintWriter(file, "UTF-8");
+ writer.println(value);
+ writer.close();
+ } catch(Exception e) {
+ android.util.Log.d("PHH", "Failed writing to " + file + ": " + value);
+ }
+ }
+
}
--
2.17.1
@@ -0,0 +1,33 @@
From 80751a02c586e3280e41dc457b6ba3aa3404f5a4 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 21 May 2020 16:12:42 +0200
Subject: [PATCH 62/65] On MIUI12 vendor, we don't want our own diming
---
.../com/android/server/biometrics/fingerprint/FacolaView.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
index d3d58aff6c0..8afbbc0dce0 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
@@ -81,8 +81,6 @@ public class FacolaView extends ImageView implements OnTouchListener {
private java.util.ArrayList<Object> objectsToKeep = new java.util.ArrayList();
- private static boolean doneCalibrationOnce = true;
-
private boolean mFullGreenDisplayed = false;
private final View mFullGreen;
private boolean mHidden = true;
@@ -297,6 +295,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
String xiaomiFodReadyPath = "/sys/class/drm/card0-DSI-1/fod_ui_ready";
if(new File(xiaomiFodReadyPath).exists()) {
xiaomiAsynchronous = true;
+ noDim = true;
FileObserver xiaomiUiReadyCb = new FileObserver(xiaomiFodReadyPath, FileObserver.MODIFY) {
@Override
public void onEvent(int event, String path) {
--
2.17.1
@@ -0,0 +1,59 @@
From a788201da61532891201d3dddcbdfb9a97d0a089 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 21 May 2020 18:41:57 +0200
Subject: [PATCH 63/65] Add mUiHidden which is guarded by Handler. This is
needed because backlight listener might intervene at the wrong time
---
.../android/server/biometrics/fingerprint/FacolaView.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
index 8afbbc0dce0..aeb81f5b7c9 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
@@ -84,6 +84,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
private boolean mFullGreenDisplayed = false;
private final View mFullGreen;
private boolean mHidden = true;
+ private boolean mUiHidden = true;
private boolean xiaomiAsynchronous = false;
FacolaView(Context context) {
super(context);
@@ -216,6 +217,8 @@ public class FacolaView extends ImageView implements OnTouchListener {
String maskBrightnessStr = readFile("/sys/class/lcd/panel/mask_brightness");
String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
+ Slog.d("PHH-Enroll", "Got fod position, mask brightness " + fodPositionString + ", " + maskBrightnessStr);
+
if(fodPositionString != null && maskBrightnessStr != null) {
double maskBrightness = Double.parseDouble(maskBrightnessStr);
String[] fodPositionArray = readFile("/sys/class/fingerprint/fingerprint/position").split(",");
@@ -337,7 +340,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
if(!noDim) {
Slog.d("PHH-Enroll", "Setting dim to " + dim);
mParams.dimAmount = (float)dim;
- if(!mHidden) {
+ if(!mUiHidden) {
Slog.d("PHH-Enroll", "++Setting dim to " + dim);
mWM.updateViewLayout(FacolaView.this, mParams);
}
@@ -573,6 +576,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
mParams.gravity = Gravity.TOP | Gravity.LEFT;
mHandler.post( () -> {
+ mUiHidden = false;
mWM.addView(this, mParams);
});
@@ -618,6 +622,7 @@ public class FacolaView extends ImageView implements OnTouchListener {
Slog.d("PHH-Enroll", "Removed facola");
mHandler.post( () -> {
+ mUiHidden = true;
mWM.removeView(this);
});
}
--
2.17.1
@@ -0,0 +1,84 @@
From f2c5806a14c89a6f029e7d27117749df4210bf10 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Thu, 21 May 2020 18:42:20 +0200
Subject: [PATCH 64/65] Always try to get FOD HALs, because we check samsung
HAL later to compute width
---
.../biometrics/fingerprint/FacolaView.java | 60 +++++++++----------
1 file changed, 29 insertions(+), 31 deletions(-)
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
index aeb81f5b7c9..3536093a4ee 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FacolaView.java
@@ -170,37 +170,35 @@ public class FacolaView extends ImageView implements OnTouchListener {
mPaintShow.setColor(Color.argb(0x18, 0x00, 0xff, 0x00));
setOnTouchListener(this);
Slog.d("PHH-Enroll", "Created facola...");
- if(mW != -1) {
- try {
- mXiaomiFingerprint = IXiaomiFingerprint.getService();
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed getting xiaomi fingerprint service", e);
- }
- try {
- mGoodixFingerprint = IGoodixFPExtendService.getService();
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
- }
- try {
- mGoodixFingerprintV2_1 = vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon.getService();
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed getting goodix2 fingerprint service", e);
- }
- try {
- mSamsungFingerprint = ISecBiometricsFingerprint.getService();
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
- }
- try {
- mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed getting samsung 3.0 fingerprint service", e);
- }
- try {
- mOppoFingerprint = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
- } catch(Exception e) {
- Slog.d("PHH-Enroll", "Failed getting oppo fingerprint service", e);
- }
+ try {
+ mXiaomiFingerprint = IXiaomiFingerprint.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting xiaomi fingerprint service", e);
+ }
+ try {
+ mGoodixFingerprint = IGoodixFPExtendService.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting goodix fingerprint service", e);
+ }
+ try {
+ mGoodixFingerprintV2_1 = vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting goodix2 fingerprint service", e);
+ }
+ try {
+ mSamsungFingerprint = ISecBiometricsFingerprint.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting samsung fingerprint service", e);
+ }
+ try {
+ mSamsungFingerprint3_0 = ISehBiometricsFingerprint.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting samsung 3.0 fingerprint service", e);
+ }
+ try {
+ mOppoFingerprint = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
+ } catch(Exception e) {
+ Slog.d("PHH-Enroll", "Failed getting oppo fingerprint service", e);
}
if(mSamsungFingerprint3_0 != null || mSamsungFingerprint != null) {
--
2.17.1