| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 浅谈Android指纹识别技术 -> 正文阅读 |
|
[移动开发]浅谈Android指纹识别技术 |
当今时代,随着移动智能手机的普及,指纹解锁早已是手机不可或缺的一个功能。除了现在比较新款的iPhone或者部分手机采用了Face ID之外,人们几乎天天都会用到指纹解锁技术。但你知道指纹解锁技术背后的原理吗? 原理指纹识别的前提是对指纹的采集,所以我们首先就应该了解第一步:指纹采集。 第一步:指纹采集 指纹采集主要分为两种方式:滑动式采集和按压式采集 滑动式采集是将手指在传感器上滑过,从而使手机获得手指指纹图像。滑动式采集具有成本相对偏低,而且可以采集大面积图像的优势。但这种采集方式存在体验较差的问题,使用者需要一个连续规范的滑动动作才能实现采集成功,采集失败的概率大大增加。某品牌手机曾经使用过这种采集方式,因滑动式采集存在的短板而受到诟病。 按压式采集顾名思义就是在传感器上按压实现指纹数据采集,这种采集方式当然用户体验好一些,不过成本比滑动采集高,技术难度也相对高一些。此外,由于一次采集的指纹面积相对滑动式采集来说要小一些,就得多次采集,通过“拼凑”,拼出较大面积的指纹图像。这就必须仰仗先进的算法,用软件算法来弥补滑按压式采集获得的指纹面积相对偏小的问题,以保障识别的精确度。 第二步:指纹评估 在采集到指纹之后,然后对采集的指纹进行质量评估,如果质量不合格,会要求再采一次。如果合格则对图像进行增强和细化。 第三步:“提取“特征 ??经过处理后会依次对得到的二值化图、细化图和提取特征图。在获得比较清晰的图像后,就开始对其进行特征提取。经过特征提取将数据储存下来之后,就可以进行下一步的匹配工作了。 第四步:指纹匹配 在匹配中要注意一点,那就是由于同一个手指的两幅图像会因为手指的位移、偏转以及按压的力度不同而产生差异,这就要在匹配时进行校准,通过特征点集校准等方式保证指纹识别的准确性。 版本演变指纹识别是在Android 6.0之后新增的功能,因此在使用的时候需要先判断用户手机的系统版本是否支持指纹识别。另外,实际开发场景中,使用指纹的主要场景有两种:
由于使用指纹识别功能需要一个加密对象(CryptoObject)该对象一般是由对称加密或者非对称加密获得。 指纹识别的API版本演进 在 Android 6.0(Android M Api23),Android 系统开放了指纹识别的api,存在于android.hardware.fingerprint包下,核心类是FingerprintManager,提供了基础的指纹识别的功能。但是需要注意的是,FingerprintManager在 Android 9.0(Android P Api28)做了 @Deprecated 标记,将被弃用。 后来,在android.support.v4.hardware.fingerprint包和 androidx.core.hardware.fingerprint包中,FingerprintManager升级为了 FingerprintManagerCompat,对功能进行了增强,也做了一些兼容性的处理,比如增加了系统版本号的判断,对指纹支持加密处理等。实际上阅读源码会发现,他的核心功能还是调用 FingerprintManager 实现的。 再之后,在 Android 9.0(Android P Api 28),Google 对生物识别进行了进一步增强,开放了以 BiometricPrompt 为核心的新 Api,存在于 androidx.biometric 包和android.hardware.biometrics包下,Google 在开发者文档中是这样解释的: On devices running P and above, this will show a system-provided authentication prompt, using a device's supported biometric (fingerprint, iris, face, etc). 大意是,在 Android P 及以上版本的系统中,BiometricPrompt 将展现一个由系统提供的验证提示,用于支持设备提供的生物识别,包括指纹、虹膜、面部等。 指纹识别的核心方法
校验指纹识别是否可用
指纹识别的发展变化上述的指纹识别主要讲述的就是传统的电容式指纹识别,而随着科技的发展,直至今天,市面上的指纹识别技术已经发展到大致三类:电容式指纹识别、光学屏幕指纹识别和超声波指纹识别。那接下来就分别来看看三大指纹识别技术的技术原理。 电容式指纹识别 首先,传统的电容式指纹识别技术我们应该都不陌生,全面屏手机时代没有来临之前,几乎所有的手机指纹识别技术都是电容式指纹识别。 电容式指纹识别技术应用发展多年,无论是识别速度还是准确性都很高,可以说已经相当成熟。其原理是利用硅晶圆在和我们皮肤上电解液接触的时候后形成电场,同时指纹在微观上是高低不平的(肉眼不可见),这时候传感器就可以记录下指纹的形状,以供解锁使用。 从电容式指纹识别原理我们可以得出,电容识别不能湿手解锁,以及无法隔着电场情况复杂的屏幕实现屏下指纹识别。想要将电容式指纹识别转移到屏下有着不小的困难,因为其穿透能力太差让它在全面屏时代显得格格不入。 虽然电容式指纹还可以选择后置和侧边识别,或者另辟蹊径把指纹识别镶嵌在品牌logo中,但顺应市场,屏下指纹识别才是未来的主流方向。 光学指纹识别 谈到光学识别的应用就很普遍了,简单的举例来说我们日常上下班的打卡机或门禁等,都采用了光学指纹识别技术,其原理是利用了光的折射和反射。 手指按压屏幕时,OLED屏幕发出光线将手指区域照亮,照亮指纹的反射光线透过屏幕像素的间隙返回到紧贴于屏下的传感器上。获取的指纹图像与手机初次录入的图像进行对比,最后进行识别判断。 另外,由于LCD屏幕无法自发光,所以目前支持光学屏下指纹识别的产品都采用的是OLED屏幕。而且OLED屏幕拥有的自发光、可弯曲,厚度薄等特性,是光学屏下指纹识别技术的有力支撑。 超声波指纹识别 既然是超声波指纹识别,那实现原理自然就离不开它了。超声波指纹识别与电容式指纹识别原理不同,因为超声波具有穿透性,指纹模组发出的特定频率的超声波扫描手指,利用指纹的不同对超声波反射的不同,能够建立3D图像。 高通称超声波指纹识别为Sense ID,它对手指表面的清洁程度没有太多要求。而且不用对屏幕面板进行开孔,无需按压、可以实现湿手解锁。但目前应用该技术的手机厂商并不是很多,三星的Galaxy系列旗舰算一个。 材料来源: |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:40:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |