人脸解锁从底层到上层(二)

本文深入探讨了Android系统中人脸识别的底层实现,包括Face HIDL接口、错误消息处理、采集消息机制以及硬件安全要求。重点讲解了IBiometricsFace.hal和IBiometricsFaceClientCallback.hal接口的实现,并介绍了状态图和错误消息在人脸识别过程中的作用。同时,强调了硬件安全性的必要性,尤其是在Android 10及更高版本中对安全执行环境和相机硬件的要求。
摘要由CSDN通过智能技术生成

前言

这一部分简单讲讲底层的实现。

Face HIDL

为了实现 Face HIDL,必须在供应商 (vendor) 指定的库 (library) 里实现 IBiometricsFace.hal 的所有方法。接下来我们就来看看 hardware/interfaces/biometrics/face/1.0/ 目录下的源代码。

IBiometricsFace.hal

hardware/interfaces/biometrics/face/1.0/IBiometricsFace.hal

package android.hardware.biometrics.face@1.0;

import IBiometricsFaceClientCallback;

/**
 * 用于人脸认证的 HAL 接口
 */
interface IBiometricsFace {

    /**
     * 设置当前的客户端回调
     */
    @callflow(next={"setActiveUser"})
    @entry
    setCallback(IBiometricsFaceClientCallback clientCallback)
        generates (OptionalUint64 result);

    /**
     * 设置所有随后的 HAL 操作作用于上面的活跃用户
     */
    @callflow(next={"authenticate", "generateChallenge", "enumerate", "remove"})
    setActiveUser(int32_t userId, string storePath) generates (Status status);

    /**
     * 生成随机数,用于 token 校验
     */
    @callflow(next={"enroll", "revokeChallenge", "setFeature"})
    generateChallenge(uint32_t challengeTimeoutSec)
        generates (OptionalUint64 result);

    /**
     * 录入一张用户的人脸
     */
    @callflow(next={"cancel", "enroll", "revokeChallenge", "remove"})
    enroll(vec<uint8_t> hat, uint32_t timeoutSec, vec<Feature> disabledFeatures)
        generates (Status status);

    /**
     * 撤销随机数
     */
    @callflow(next={"authenticate", "setActiveUser", "enumerate", "remove"})
    revokeChallenge() generates (Status status);

    setFeature(Feature feature, bool enabled, vec<uint8_t> hat, uint32_t faceId)
        generates(Status status);

    getFeature(Feature feature, uint32_t faceId) generates (OptionalBool result);

    /**
     * 返回和当前人脸集关联的标识符 (ID),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值