我正在实施Bio metric Prompt API,以授权用户使用指纹。我发现Bio-metric Prompt API根据设备传感器类型显示不同的UI。
生物识别API SDK调用可独立工作,以根据传感器类型显示相应的UI。
现在关注的是:
现在的问题是:
答案 0 :(得分:1)
在这种情况下,确实有一个API和回调可供您使用。您要查找的软件包是API级别28+的Biometrics软件包或API级别23-27的Fingerprint软件包。
我要引用的回调可以在API 28+的here和API 23-27的here中找到。
以下是一些示例代码,说明了如何初始化回调:
/**
* Helper class for authentication callback
*/
@RequiresApi(api = Build.VERSION_CODES.M)
private class FingerprintHandler extends FingerprintManager.AuthenticationCallback {
private FingerprintHandler(){}
/**
* Called when an unrecoverable error has been encountered and the operation is complete.
* No further callbacks will be made on this object.
* @param errMsgId An integer identifying the error message
* @param errString A human-readable error string that can be shown in UI
*/
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
//Authentication error. The 'errString' is meant to be displayed to the user
//Handle logic here
}
/**
* Called when a fingerprint is valid but not recognized.
*/
@Override
public void onAuthenticationFailed() {
//Authentication failed (Fingerprints don't match ones on device)
//Handle logic here
}
/**
* Called when a recoverable error has been encountered during authentication. The help
* string is provided to give the user guidance for what went wrong, such as
* "Sensor dirty, please clean it."
* @param helpMsgId An integer identifying the error message
* @param helpString A human-readable string that can be shown in UI
*/
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
//Non-Fatal error (IE moved finger too quickly). The helpString can be displayed to the user to help them retry.
//Handle logic here
}
/**
* Called when a fingerprint is recognized.
* @param result An object containing authentication-related data
*/
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
//Authentication Succeeded. They are good to go and it matches the stored one
//Handle logic here
}
}
如果上面的代码不足以使您感动,那么here是我的一类示例中的一些用法。
关于利用警报或显示,如果我不想阻止屏幕,则只需将回调信息与Dialog或屏幕上的文本视图结合使用。
答案 1 :(得分:1)
如果您仍然遇到此问题,最近发布的blog post阐明了API为什么以其行为方式运行。这篇文章还向您展示了如何正确使用API。
您只需要在AndroidX中使用生物识别库即可。
基本上,您会得到三个回调:
onAuthenticationSucceeded()”。
onAuthenticationError()。
onAuthenticationFailed()在用户被拒绝时被调用,例如,当未注册的指纹放在传感器上时,但是与onAuthenticationError()不同,用户可以继续尝试进行身份验证。
您可以使用这些回调中的任何一个通过Toast等将消息发布给用户。
答案 2 :(得分:0)
我认为您的问题与显示器/后置传感器无关。在我使用Biometricx API进行的测试分析中,我发现当生物特征认证失败时,两种显示/后传感器类型在系统UI中均显示错误。这也取决于您要测试的设备,设备制造商可能已决定不支持Biometrics API。就我而言,当我在Samsung S5设备上进行测试时,即使该设备具有显示传感器,canAuthenticate()也会返回false。