Android 指纹验证标准API学习

一、背景:

指纹识别是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学习)