Merge "Set/Get features with new interface"

This commit is contained in:
Kevin Chyn
2019-04-03 23:46:14 +00:00
committed by Android (Google) Code Review

View File

@@ -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;
}