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.hardware.face.FaceManager;
|
||||
import android.hardware.face.FaceManager.GetFeatureCallback;
|
||||
import android.hardware.face.FaceManager.SetFeatureCallback;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
@@ -37,6 +39,28 @@ public class FaceSettingsAttentionPreferenceController extends TogglePreferenceC
|
||||
private FaceManager mFaceManager;
|
||||
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) {
|
||||
super(context, preferenceKey);
|
||||
mFaceManager = Utils.getFaceManagerOrNull(context);
|
||||
@@ -64,12 +88,22 @@ public class FaceSettingsAttentionPreferenceController extends TogglePreferenceC
|
||||
if (!FaceSettings.isAvailable(mContext)) {
|
||||
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
|
||||
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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user