diff --git a/res/values/evolution_strings.xml b/res/values/evolution_strings.xml
index daaa752..ba08e0d 100644
--- a/res/values/evolution_strings.xml
+++ b/res/values/evolution_strings.xml
@@ -90,6 +90,8 @@
Fingerprint
Ripple animation
Show ripple animation when unlocked with fingerprint
+ Screen-Off UDFPS
+ Keep UDFPS enabled while the screen is off
Gestures
diff --git a/res/xml/evolution_settings_lock_screen.xml b/res/xml/evolution_settings_lock_screen.xml
index 9806537..dd3172b 100644
--- a/res/xml/evolution_settings_lock_screen.xml
+++ b/res/xml/evolution_settings_lock_screen.xml
@@ -31,5 +31,12 @@
android:title="@string/lock_screen_fingerprint_ripple_title"
android:summary="@string/lock_screen_fingerprint_ripple_summary"
android:defaultValue="true" />
+
+
+
diff --git a/src/org/evolution/settings/fragments/lockscreen/LockScreen.java b/src/org/evolution/settings/fragments/lockscreen/LockScreen.java
index f8cf5a1..999e385 100644
--- a/src/org/evolution/settings/fragments/lockscreen/LockScreen.java
+++ b/src/org/evolution/settings/fragments/lockscreen/LockScreen.java
@@ -10,6 +10,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
+import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceChangeListener;
@@ -24,6 +25,8 @@ import com.android.settingslib.search.SearchIndexable;
import java.util.List;
+import org.evolution.settings.preferences.SecureSettingSwitchPreference;
+
@SearchIndexable
public class LockScreen extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
@@ -32,8 +35,10 @@ public class LockScreen extends SettingsPreferenceFragment implements
private static final String KEY_FINGERPRINT_CATEGORY = "lock_screen_fingerprint_category";
private static final String KEY_RIPPLE_EFFECT = "enable_ripple_effect";
+ private static final String KEY_SCREEN_OFF_UDFPS = "screen_off_udfps_enabled";
private PreferenceCategory mFingerprintCategory;
+ private SecureSettingSwitchPreference mScreenOffUdfps;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -46,12 +51,22 @@ public class LockScreen extends SettingsPreferenceFragment implements
final Resources resources = context.getResources();
mFingerprintCategory = (PreferenceCategory) findPreference(KEY_FINGERPRINT_CATEGORY);
+ mScreenOffUdfps = (SecureSettingSwitchPreference) findPreference(KEY_SCREEN_OFF_UDFPS);
FingerprintManager fingerprintManager = (FingerprintManager)
getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
if (fingerprintManager == null || !fingerprintManager.isHardwareDetected()) {
prefScreen.removePreference(mFingerprintCategory);
+ } else {
+ boolean screenOffUdfpsAvailable = resources.getBoolean(
+ com.android.internal.R.bool.config_supportScreenOffUdfps) ||
+ !TextUtils.isEmpty(resources.getString(
+ com.android.internal.R.string.config_dozeUdfpsLongPressSensorType));
+
+ if (!screenOffUdfpsAvailable) {
+ mFingerprintCategory.removePreference(mScreenOffUdfps);
+ }
}
}
@@ -80,6 +95,15 @@ public class LockScreen extends SettingsPreferenceFragment implements
if (fingerprintManager == null || !fingerprintManager.isHardwareDetected()) {
keys.add(KEY_RIPPLE_EFFECT);
+ keys.add(KEY_SCREEN_OFF_UDFPS);
+ } else {
+ boolean screenOffUdfpsAvailable = resources.getBoolean(
+ com.android.internal.R.bool.config_supportScreenOffUdfps) ||
+ !TextUtils.isEmpty(resources.getString(
+ com.android.internal.R.string.config_dozeUdfpsLongPressSensorType));
+ if (!screenOffUdfpsAvailable) {
+ keys.add(KEY_SCREEN_OFF_UDFPS);
+ }
}
return keys;
}