Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 782b7f99 authored by Kevin Chyn's avatar Kevin Chyn Committed by Android (Google) Code Review
Browse files

Merge "Set/Get features with new interface"

parents e4f64e5c 856b34da
Loading
Loading
Loading
Loading
+36 −2
Original line number Diff line number Diff line
@@ -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;
    }