华为提供安全的指纹认证能力。如果系统安全存在问题,回调函数BioAuthnCallback.onAuthError(),会提供错误码FingerprintManager.ERROR_SYS_INTEGRITY_FAILED。如果设备运行环境安全,则执行指纹认证。指纹认证的错误码详情,请参考接口文档。
华为指纹认证能力使用方法,如以下代码片段所示:
- import android.app.Activity;
- import android.view.View;
- import com.huawei.hms.support.api.fido.bioauthn.BioAuthnCallback;
- import com.huawei.hms.support.api.fido.bioauthn.BioAuthnResult;
- import com.huawei.hms.support.api.fido.bioauthn.FingerprintManager;
- import java.util.concurrent.Executors;
- public class MainActivity extends Activity {
- public void btnFingerAuthenticateWithoutCryptoObjectClicked(View view) {
- // 回调
- BioAuthnCallback bioAuthnCallback = new BioAuthnCallback() {
- @Override
- public void onAuthError(int errMsgId, CharSequence errString) {
- // 认证错误
- }
- @Override
- public void onAuthSucceeded(BioAuthnResult result) {
- // 认证成功
- }
- @Override
- public void onAuthFailed() {
- // 认证失败
- }
- };
- FingerprintManager fingerprintManager =
- new FingerprintManager(this, Executors.newSingleThreadExecutor(), bioAuthnCallback);
- // 是否支持认证
- int errorCode = fingerprintManager.canAuth();
- if (errorCode != 0) {
- // 不支持认证
- return;
- }
- // 执行认证
- fingerprintManager.auth();
- }
- }
华为提供安全的3D面容认证能力。如果系统安全存在问题,回调函数BioAuthnCallback.onAuthError,会提供错误码FaceManager.FACE_ERROR_SYS_INTEGRITY_FAILED。如果设备运行环境安全,则执行3D面容认证。3D面容认证的错误码详情,参考接口文档。
1. EMUI 10(API Level 29)以上版本才支持面容认证,另外请确保设备硬件支持3D面容认证。
2. 使用CryptoObject对象认证时,使用KeyGenParameterSpec.Builder创建key时setUserAuthenticationRequired()必须为false。当前版本中,KeyStore没有与面容认证结果关联。
华为3D面容认证能力使用方法,如以下代码片段所示:
- import android.app.Activity;
- import android.os.CancellationSignal;
- import android.os.Handler;
- import android.view.View;
- import com.huawei.hms.support.api.fido.bioauthn.BioAuthnCallback;
- import com.huawei.hms.support.api.fido.bioauthn.BioAuthnResult;
- import com.huawei.hms.support.api.fido.bioauthn.CryptoObject;
- import com.huawei.hms.support.api.fido.bioauthn.FaceManager;
- public class MainActivity extends Activity {
- public void btnFaceAuthenticateWithoutCryptoObjectClicked(View view) {
- // 回调
- BioAuthnCallback callback = new BioAuthnCallback() {
- @Override
- public void onAuthError(int errMsgId, CharSequence errString) {
- // 认证错误
- }
- @Override
- public void onAuthHelp(int helpMsgId, CharSequence helpString) {
- // 帮助
- }
- @Override
- public void onAuthSucceeded(BioAuthnResult result) {
- // 认证成功
- }
- @Override
- public void onAuthFailed() {
- // 认证失败
- }
- };
- // 取消信号
- CancellationSignal cancellationSignal = new CancellationSignal();
- FaceManager faceManager = new FaceManager(this);
- int errorCode = faceManager.canAuth();
- if (errorCode != 0) {
- // 不支持认证
- return;
- }
- // Flags.
- int flags = 0;
- // 认证消息处理器
- Handler handler = null;
- // 推荐CryptoObject传null,当前版本,KeyStore没有和面容识别关联。
- // KeyGenParameterSpec.Builder.setUserAuthenticationRequired()必须设置为false。
- CryptoObject crypto = null;
- faceManager.auth(crypto, cancellationSignal, flags, callback, handler);
- }
- }
更多Sample信息请参考: fido-bioauthn-sample.zip。