Android 指纹识别——架构篇
2018-01-18 本文已影响197人
Peak_jianshu
相信大部分人都用过指纹识别,日常生活中很多场景用到指纹识别技术,比如手机解锁,指纹支付,指纹打卡,就连公司附近的健身房也用了指纹加人脸识别的闸机。
安卓系统从6.0版本(代号Marshmallow,发布时间2015年,)开始支持指纹识别技术。这篇文章将对安卓指纹识别功能及架构做一个简介。而更核心的指纹识别原理及算法将在后续文章中探讨。
首先我们来看指纹识别的功能,指纹识别技术主要包括下面几个子功能:
- 指纹录入(Enroll);
- 指纹认证(Authenticate);
- 指纹管理(重命名Rename, 删除Remove, 查询getEnrolledFingerprints);
关于录入和管理不多做介绍,这里说一说指纹识别。关于指纹认证大家可能有一个小的误区,大家思考一个问题,我们手机的指纹识别功能是一直处于就绪状态等待我们输入指纹吗?答案是否定的。当我们锁屏后,指纹解锁功能才开始工作,当我们打开指纹付款页面指纹支付才开始工作,在安卓系统中是调用authenticate方法使指纹硬件上电,这时才能进行指纹采集,指纹采集成功后下电,当失败一定次数后也会下电。这样的好处很明显,那就是省电。
介绍了指纹识别的功能,下面来看看安卓的指纹识别架构。以安卓7.0系统为例,下面是一张简略图:

在应用层主要有设置(Settings)和锁屏(Keyguard, 包含在SystemUI内)两部分。在Framework层 FingerprintManager 为应用层提供API接口,以及处理底层的回调,FingerprintService调用native层为FingerprintManager提供功能实现。至于native层,本次不做介绍,下篇文章将结合指纹识别的原理来探讨。
下面是更详细一些的类图:
