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

Commit 4843004d authored by Joshua McCloskey's avatar Joshua McCloskey
Browse files

Updated face session to use SurfaceView

Test: Verified that it builds.
Test: Verified framework supports older NativeHandle.
Test: atest FaceEnrollClientTest
Bug: 308784038
Change-Id: Id191e8e61b1d7c016f3d6cd60c98a9064fe4a5cb
parent e91c7507
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ java_library_static {
        "android.hardware.power-java_static",
    ],
    srcs: [
        ":android.hardware.biometrics.face-V3-java-source",
        ":android.hardware.biometrics.face-V4-java-source",
        ":android.hardware.tv.hdmi.connection-V1-java-source",
        ":android.hardware.tv.hdmi.earc-V1-java-source",
        ":statslog-art-java-gen",
+7 −0
Original line number Diff line number Diff line
@@ -75,4 +75,11 @@ public class AidlSession {
    public boolean hasContextMethods() {
        return mHalInterfaceVersion >= 2;
    }

    /**
     * If this backend implements enroll methods with an {@link android.view.Surface}.
     */
    public boolean supportsFaceEnrollOptions() {
        return mHalInterfaceVersion >= 4;
    }
}
+16 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Context;
import android.hardware.biometrics.BiometricFaceConstants;
import android.hardware.biometrics.common.ICancellationSignal;
import android.hardware.biometrics.face.EnrollmentType;
import android.hardware.biometrics.face.FaceEnrollOptions;
import android.hardware.biometrics.face.Feature;
import android.hardware.biometrics.face.IFace;
import android.hardware.common.NativeHandle;
@@ -201,9 +202,21 @@ public class FaceEnrollClient extends EnrollClient<AidlSession> {

        if (session.hasContextMethods()) {
            final OperationContextExt opContext = getOperationContext();
            final ICancellationSignal cancel = session.getSession().enrollWithContext(
            ICancellationSignal cancel;
            if (session.supportsFaceEnrollOptions()) {
                FaceEnrollOptions options = new FaceEnrollOptions();
                options.hardwareAuthToken = hat;
                options.enrollmentType = EnrollmentType.DEFAULT;
                options.features = features;
                options.nativeHandlePreview = null;
                options.context = opContext.toAidlContext();
                options.surfacePreview = mPreviewSurface;
                cancel = session.getSession().enrollWithOptions(options);
            } else {
                cancel = session.getSession().enrollWithContext(
                        hat, EnrollmentType.DEFAULT, features, mHwPreviewHandle,
                        opContext.toAidlContext());
            }
            getBiometricContext().subscribe(opContext, ctx -> {
                try {
                    session.getSession().onContextChanged(ctx);
+7 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.hardware.biometrics.common.ICancellationSignal;
import android.hardware.biometrics.common.OperationContext;
import android.hardware.biometrics.face.EnrollmentStageConfig;
import android.hardware.biometrics.face.Error;
import android.hardware.biometrics.face.FaceEnrollOptions;
import android.hardware.biometrics.face.IFace;
import android.hardware.biometrics.face.ISession;
import android.hardware.biometrics.face.ISessionCallback;
@@ -212,6 +213,12 @@ public class TestHal extends IFace.Stub {
            public void onContextChanged(OperationContext context) {
                Slog.w(TAG, "onContextChanged");
            }

            @Override
            public ICancellationSignal enrollWithOptions(FaceEnrollOptions options) {
                return enroll(options.hardwareAuthToken, options.enrollmentType, options.features,
                        options.nativeHandlePreview);
            }
        };
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.hardware.biometrics.BiometricFaceConstants;
import android.hardware.biometrics.common.ICancellationSignal;
import android.hardware.biometrics.common.OperationContext;
import android.hardware.biometrics.face.EnrollmentStageConfig;
import android.hardware.biometrics.face.FaceEnrollOptions;
import android.hardware.biometrics.face.ISession;
import android.hardware.biometrics.face.V1_0.IBiometricsFace;
import android.hardware.biometrics.face.V1_0.OptionalBool;
@@ -344,4 +345,10 @@ public class AidlToHidlAdapter implements ISession {
            return null;
        }
    }

    @Override
    public ICancellationSignal enrollWithOptions(FaceEnrollOptions options) {
        //Unsupported in HIDL
        return null;
    }
}
Loading