在 Android 应用程序中添加指纹扫描仪

Android 支持 Android 6.0(Marshmallow)SDK 23 中的指纹 api

要在你的应用中使用此功能,请先在清单中添加 USE_FINGERPRINT 权限。

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

这里的程序要遵循

首先,你需要使用 KeyGenerator 在 Android 密钥库中创建对称密钥,该密钥只​​能在用户使用指纹进行身份验证并传递 KeyGenParameterSpec 后才能使用。

KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
keyPairGenerator.initialize(
        new KeyGenParameterSpec.Builder(KEY_NAME,
                KeyProperties.PURPOSE_SIGN)
                .setDigests(KeyProperties.DIGEST_SHA256)
                .setAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
                .setUserAuthenticationRequired(true)
                .build());
keyPairGenerator.generateKeyPair();

通过将 KeyGenParameterSpec.Builder.setUserAuthenticationRequired 设置为 true,只有在用户对其进行身份验证(包括使用用户指纹进行身份验证)后才允许使用该密钥。

KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PublicKey publicKey =
        keyStore.getCertificate(MainActivity.KEY_NAME).getPublicKey();

KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PrivateKey key = (PrivateKey) keyStore.getKey(KEY_NAME, null);

然后通过使用创建的对称密钥初始化的密码调用 FingerprintManager.authenticate,开始在指纹传感器上监听指纹。或者,你可以作为身份验证者回退到服务器端验证的密码。

fingerprintManger.class 创建并初始化 FingerprintManger

getContext().getSystemService(FingerprintManager.class)

要验证使用 FingerprintManger api 并使用创建子类

FingerprintManager.AuthenticationCallback 并覆盖方法

onAuthenticationError
onAuthenticationHelp
onAuthenticationSucceeded
onAuthenticationFailed

开始

要开始使用 crypto,请使用 fingerPrint 事件调用 authenticate 方法

fingerprintManager
              .authenticate(cryptoObject, mCancellationSignal, 0 , this, null);

取消

停止持续扫描电话

android.os.CancellationSignal;

验证指纹(或密码)后,将调用 FingerprintManager.AuthenticationCallback#onAuthenticationSucceeded() 回调。

@Override

public void onAuthenticationSucceeded(AuthenticationResult result) {
               
            }