Merge "Set/Get features with new interface"
This commit is contained in:
@@ -18,6 +18,8 @@ package com.android.settings.biometrics.face;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.face.FaceManager;
|
import android.hardware.face.FaceManager;
|
||||||
|
import android.hardware.face.FaceManager.GetFeatureCallback;
|
||||||
|
import android.hardware.face.FaceManager.SetFeatureCallback;
|
||||||
|
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.preference.SwitchPreference;
|
import androidx.preference.SwitchPreference;
|
||||||
@@ -37,6 +39,28 @@ public class FaceSettingsAttentionPreferenceController extends TogglePreferenceC
|
|||||||
private FaceManager mFaceManager;
|
private FaceManager mFaceManager;
|
||||||
private SwitchPreference mPreference;
|
private SwitchPreference mPreference;
|
||||||
|
|
||||||
|
private final SetFeatureCallback mSetFeatureCallback = new SetFeatureCallback() {
|
||||||
|
@Override
|
||||||
|
public void onCompleted(boolean success, int feature) {
|
||||||
|
if (feature == FaceManager.FEATURE_REQUIRE_ATTENTION) {
|
||||||
|
mPreference.setEnabled(true);
|
||||||
|
if (!success) {
|
||||||
|
mPreference.setChecked(!mPreference.isChecked());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private final GetFeatureCallback mGetFeatureCallback = new GetFeatureCallback() {
|
||||||
|
@Override
|
||||||
|
public void onCompleted(boolean success, int feature, boolean value) {
|
||||||
|
if (feature == FaceManager.FEATURE_REQUIRE_ATTENTION && success) {
|
||||||
|
mPreference.setEnabled(true);
|
||||||
|
mPreference.setChecked(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public FaceSettingsAttentionPreferenceController(Context context, String preferenceKey) {
|
public FaceSettingsAttentionPreferenceController(Context context, String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
mFaceManager = Utils.getFaceManagerOrNull(context);
|
mFaceManager = Utils.getFaceManagerOrNull(context);
|
||||||
@@ -64,12 +88,22 @@ public class FaceSettingsAttentionPreferenceController extends TogglePreferenceC
|
|||||||
if (!FaceSettings.isAvailable(mContext)) {
|
if (!FaceSettings.isAvailable(mContext)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return mFaceManager.getFeature(FaceManager.FEATURE_REQUIRE_ATTENTION);
|
// Set to disabled until we know the true value.
|
||||||
|
mPreference.setEnabled(false);
|
||||||
|
mFaceManager.getFeature(FaceManager.FEATURE_REQUIRE_ATTENTION, mGetFeatureCallback);
|
||||||
|
|
||||||
|
// Ideally returns a cached value.
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
mFaceManager.setFeature(FaceManager.FEATURE_REQUIRE_ATTENTION, isChecked, mToken);
|
// Optimistically update state and set to disabled until we know it succeeded.
|
||||||
|
mPreference.setEnabled(false);
|
||||||
|
mPreference.setChecked(isChecked);
|
||||||
|
|
||||||
|
mFaceManager.setFeature(FaceManager.FEATURE_REQUIRE_ATTENTION, isChecked, mToken,
|
||||||
|
mSetFeatureCallback);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user