一、背景:

指纹识别是Google从Android6.0(api23)开始才提供的标准指纹识别支持,并对外提供指纹识别相关的接口。目前市场上,因安全问题,指纹验证是在本地指纹库中进行验证,然后返回验证结果给应用侧进行相关逻辑实现。

二、相关类

FingerprintManager类:

判断设备是否支持指纹验证、是否已经有指纹录入、进行指纹验证的管理类;

实例化:

FingerprintManager manager=Context.getSystemService(FingerprintManager.class) ;

或者

FingerprintManager manager=Context.getSystemService(Context.FINGERPRINT_SERVICE) ;

方法:

①判断设备是否含有指纹硬件:   true 含有指纹硬件

boolean isHave=isHardwareDetected()

②判断设备是否已经录入指纹: true 至少有一个指纹录入设备中

boolean isEnrolled=hasEnrolledFingerprints()

③开始指纹识别

authenticate(FingerprintManager.CryptoObject crypto, CancellationSignalcancel, int flags, FingerprintManager.AuthenticationCallback callback,Handler handler)

FingerprintManager.CryptoObject类:

Fingerprint支持加密的包装类,现支持Signature(签名)、Cipher(暗号)、Mac ,这三种加密方式。此类仅适用于安卓P版本(API 28)之前,在API 28之后,有BiometricPrompt.CryptoObject类进行取而代之。

加密方式暂时未仔细查看,此类略记录相关方法;

实例化:

FingerprintManager.CryptoObject(Signature signature)   以signature进行实例化,其中,signature的实例化为:

getInstance(String algorithm);

FingerprintManager.CryptoObject(Cipher cipher),以cipher进行实例化,其中,cipher的实例化为:

createCipher(String transformation, Provider provider)

FingerprintManager.CryptoObject(Mac mac),以mac进行实例化,其中,mac的实例化为:

getInstance(String algorithm)

方法:

①Signature  getSignature()获取Signature对象

②Cipher getCipher()     获取Cipher对象

③Mac  getMac()获取Mac对象

④long getOpId()  获取与之相关的Opid,如果空,则返回0;

CancellationSignal类

未言胜先算败。加密事件结束,先提供一个可能取消当前运作的操作的类。

实例化:

CancellationSignal()  创建一个实例

fromTransport(ICancellationSignal transport)  

方法:

isCanceled() 返回正在指纹验证过程中,是否出现异常;
setOnCancelListener(OnCancelListener listener) 设置一个Cancel的监听;
cancel() 取消指纹验证并触发OnCancelListener;
throwIfCanceled() 抛出一个OperationCanceledException;

FingerprintManager.AuthenticationCallback类:

指纹验证过程中的回调事件,与设备指纹库返回数据进行交互。

实例化:

new AuthenticationCallback(),并实现其方法;

方法:

onAuthenticationError(int errorCode, CharSequence errString),遇到不可恢复的错误并且操作完成时调用;
onAuthenticationHelp(int helpCode, CharSequence helpString),遇到可恢复的错误时进行调用,如“Sensor dirty, please clean it.”
onAuthenticationSucceeded(AuthenticationResult result) 指纹验证成功时调用;
onAuthenticationFailed() 指纹验证失败时调用;

AuthenticationResult类:

指纹验证成功时的回调;内含指纹在设备中的序号、设备的用户id等信息。

实例化:

AuthenticationResult(CryptoObject crypto, Fingerprint fingerprint, int userId) 通过加密方式、Fingerprint、用户id进行创建

方法:

CryptoObject getCryptoObject()  获取加密方式
Fingerprint getFingerprint() 获取指纹相关信息
int getUserId() 获取用户id信息

Fingerprint类:

指纹源数据储存对象,被标记为@Hide 。

实例化:

Fingerprint(CharSequence name, int groupId, int fingerId, long deviceId) 

方法:

CharSequence getName() 
int getFingerId() 获取用户命名的指纹名称
int getGroupId() 获取指纹注册时指定的组ID
long getDeviceId() 获取指纹所属设备

Android 指纹验证标准API学习相关推荐

  1. xamarin android 邮件,Xamarin Android:通过标准API(电子邮件,脸谱等)分享图像

    我认为应用程序图标是在您的应用程序专用的目录中创建的,因此其他应用程序无法获取它. 您需要将其保存在其他应用程序可以访问的位置,然后从该位置共享它,如下所示: public void Share (s ...

  2. Android 指纹相关调研

    Android 指纹相关调研 背景:公司产品同学提出要接入指纹,用于登录场景,提高转化率,由于之前没接触过指纹,接下来就是指纹的相关调查. 一:指纹的优势 我们传统的登录方式,需要用户输入用户名和密码 ...

  3. Android指纹识别,提升APP用户体验,从这里开始

    本文由 左海龙 授权投稿 原文链接:https://blog.csdn.net/hailong0529/article/details/95406183 写在前面 指纹识别大家都不陌生,现在比较新的安 ...

  4. Android - 指纹识别API示例

    – 前言 需求说明:app经常要验证码验证用户手机号保证安全性,现在想接入指纹识别来代替验证码验证,不支持指纹识别的设备照常用验证码. 了解API Android在23(Android M 6.0)新 ...

  5. android7.0 谷歌拼音,谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录...

    原标题:谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录 来源:蓝点网 此前谷歌已经宣布与 FIDO 联盟达成合作关系并在安卓系统上调用指纹或面部识别等来登录某些支持的网站. ...

  6. android指纹fingerprint学习总结

    文章目录 android指纹的软件框图 android指纹的软件框图 录入指纹enroll和验证指纹verify的流程: 当手指按到指纹模组上后,指纹模组产生一个中断,在指纹的linux driver ...

  7. Android 9 功能和 API

    声明:本篇文章转载自https://developer.android.google.cn/about/versions/pie/android-9.0 简介 Android 9(API 级别 28) ...

  8. Android M Developer Preview - API Preview(一)

    API Overview The M Developer Preview gives you an advance look at the upcoming release for the Andro ...

  9. Android P(3)---Android P 功能和 API

    Android P 功能和 API Android P 为用户和开发者引入众多新特性和新功能. 本文重点介绍面向开发者的新功能. 要了解新 API,请阅读 API 差异报告或访问 Android AP ...

  10. [任务书+论文+PPT+源码]基于Android与多媒体的英文学习APP的设计与实现

    第1页 毕业设计(论文)题目:基于ANDROID与多媒体技术的英文学习APP的设计与实现设计(论文)要求及原始数据(资料):1.综述国内外移动互联现状及前景:2.了解ANDROID系统,理解ANDRO ...

最新文章

  1. 欧洲超高速网比宽带快万倍 几秒下载一部电影
  2. windows安装Matplotlib
  3. ONAP — Overview
  4. (二)SpringMVC之执行的过程
  5. SecutrCRTt 连接VirtualBox 中的Ubuntu -端口转发
  6. 1.4 通过时间的反向传播-深度学习第五课《序列模型》-Stanford吴恩达教授
  7. 基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证)企业普及版贝斯OA与工作流系统...
  8. C++的最后一道坎|百万年薪的程序员
  9. 基于Sql Server 2008的分布式数据库的实践(三)
  10. Java设计模式(1 / 23):策略模式
  11. 力压Java、C语言!Python 获2018年度编程语言
  12. gitter 卸载_最佳Gitter渠道:游戏开发人员
  13. 算法笔记_172:历届试题 波动数列(Java)
  14. SpringBoot 中 @Transactional 的使用
  15. List分组 用于客服对话分组场景
  16. ADMM算法在神经网络模型剪枝方面的应用
  17. 遇到from playsound import playsoundModuleNotFoundError: No module named ‘playsound‘解决办法
  18. 基于单片机的超市储物柜设计_智能储物柜开题报告.docx
  19. 2020年GitHub上50个最受程序员欢迎的PHP开源项目
  20. 404是什么意思?404错误页面是怎么造成的

热门文章

  1. [ActionScript 3] 【开源】D5Power RPG网页游戏开发套件
  2. HyperLedger-Fabric v0.6环境搭建详细教程
  3. DM13: COSCon19私人回顾
  4. 设计模式学习(十七) 观察者模式 Observer
  5. 帝国cms灵动标签调用标题图片没有图片时让其显示默认图片的方法
  6. wingide python_Python开发利器WingIDE破解方法
  7. xxl-job整合到微服务
  8. 【一款弹窗表白的pyqt5界面化小程序,完全零基础的你也可以用他追女生了】
  9. Altium Designer原理图标题栏显示参数的解决方法
  10. CRT查看日志中文乱码问题