指纹识别是Google从Android6.0(api23)开始才提供的标准指纹识别支持,并对外提供指纹识别相关的接口。目前市场上,因安全问题,指纹验证是在本地指纹库中进行验证,然后返回验证结果给应用侧进行相关逻辑实现。
判断设备是否支持指纹验证、是否已经有指纹录入、进行指纹验证的管理类;
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)
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() 创建一个实例
或
fromTransport(ICancellationSignal transport)
isCanceled() 返回正在指纹验证过程中,是否出现异常;
setOnCancelListener(OnCancelListener listener) 设置一个Cancel的监听;
cancel() 取消指纹验证并触发OnCancelListener;
throwIfCanceled() 抛出一个OperationCanceledException;
指纹验证过程中的回调事件,与设备指纹库返回数据进行交互。
new AuthenticationCallback(),并实现其方法;
onAuthenticationError(int errorCode, CharSequence errString),遇到不可恢复的错误并且操作完成时调用;
onAuthenticationHelp(int helpCode, CharSequence helpString),遇到可恢复的错误时进行调用,如“Sensor dirty, please clean it.”
onAuthenticationSucceeded(AuthenticationResult result) 指纹验证成功时调用;
onAuthenticationFailed() 指纹验证失败时调用;
指纹验证成功时的回调;内含指纹在设备中的序号、设备的用户id等信息。
AuthenticationResult(CryptoObject crypto, Fingerprint fingerprint, int userId) 通过加密方式、Fingerprint、用户id进行创建
CryptoObject getCryptoObject() 获取加密方式
Fingerprint getFingerprint() 获取指纹相关信息
int getUserId() 获取用户id信息
指纹源数据储存对象,被标记为@Hide 。
实例化:
Fingerprint(CharSequence name, int groupId, int fingerId, long deviceId)
方法:
CharSequence getName()
int getFingerId() 获取用户命名的指纹名称
int getGroupId() 获取指纹注册时指定的组ID
long getDeviceId() 获取指纹所属设备