前言
本系列将探索 Android 原生人脸解锁,从底层介绍到上层,涉及底层硬件、驱动、系统服务、框架、应用、跨进程通信、接口定义语言等知识。欢迎和我一起探讨,指出我的错误或不足,完善该系列,帮助更多有需要的人。
人脸解锁概述
人脸解锁即用户通过注视设备的正面方便地解锁手机或平板。Android 10 为支持人脸解锁的设备在人脸认证期间添加了一个新的可以安全处理相机帧、保持隐私与安全的人脸认证栈的支持,也为安全合规地启用集成交易的应用(网上银行或其他服务)提供了一种容易实现的方式。
Android 原生的人脸认证栈在 Android 10 是一种新的实现,与 Android P 不一样了。新的实现介绍了 IBiometricsFace.hal
,IBiometricsFaceClientCallback.hal
和 types.hal
这些接口。
架构
这里要说到 BiometricsPrompt
这个 API,它囊括了 Android 所有生物识别,包括人脸、指纹、虹膜。人脸 HAL 与如下组件进行交互(HAL 全称硬件抽象层):
可以看到,通过 FingerprintManager
实现支持库和系统服务之间的通信在 Android P 被废弃了,在 Android 10 或者更高的版本通过 BiometricManager
实现支持库和系统服