github地址
https://github.com/gaoyangcr7/BiometricPromptDemo
可以直接用
BiometricPromptDemo/biometriclib/src/main/java/com/nestia/biometriclib包下的所有类
AndroidManifest添加权限:
//指纹识别
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
//BiometricPrompt 生物识别
//在AndroidP(9.0)时候,官方不再推荐使用FingerprintManager,标记为@Deprecated,开放BiometricPrompt新的API
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
封装类:
public class BiometricHandler {
private static final String FINGER = "finger_";
private static final String FINGER_OPEN = "open";
private static final String FINGER_CLOSE = "close";
private BiometricPromptManager mManager;
private Activity mActivity;
public void startWork(Activity activity) {
if (mManager == null) mManager = BiometricPromptManager.from(activity);
if (mActivity == null) mActivity = activity;
}
/**
* 判断系统硬件是否支持指纹识别
*
* @return true 支持 false 不支持
*/
public boolean isHardwareDetected() {
return mManager != null && mManager.isHardwareDetected();
}
/**
* 当前用户是否开启指纹
*
* @return true 开启 false 未开启
*/
public boolean isOpenBiometric(String userId) {
return isUserOpen(userId) && mManager != null && mManager.isBiometricPromptEnable();
}
/**
* 手机是否开启指纹
*
* @return true 开启 false 未开启
*/
public boolean isBiometricPromptEnable() {
return mManager != null && mManager.isBiometricPromptEnable();
}
private boolean isUserOpen(String userId) {
if (FINGER_CLOSE.equals(Facade.getCacheManager().getAsString(FINGER + userId)))
return false;
return true;
}
/**
* 用户打开指纹开关
*
* @param userId true 打开成功 false 打开失败
*/
public void openBiometric(String userId) {
Facade.getCacheManager().put(FINGER + userId, FINGER_OPEN);
if (mManager != null && !mManager.hasEnrolledFingerprints()) {
Intent intent = new Intent(Settings.ACTION_SETTINGS);
mActivity.startActivity(intent);
}
}
/**
* 用户关闭指纹开关
*
* @param userId
*/
public void closeBiometric(String userId) {
Facade.getCacheManager().put(FINGER + userId, FINGER_CLOSE);
}
/**
* 唤起指纹识别功能
*
* @param callback
*/
public void authenticate(@NonNull BiometricPromptManager.OnBiometricIdentifyCallback callback) {
authenticate(new CancellationSignal(), callback);
}
public void authenticate(@NonNull CancellationSignal cancel,
@NonNull BiometricPromptManager.OnBiometricIdentifyCallback callback) {
if (mManager != null) {
mManager.authenticate(cancel, callback);
}
}
public void stopWork() {
if (mManager != null) {
mManager.cancel();
mManager = null;
}
}
}
调用类
private BiometricHandler biometricHandler = new BiometricHandler();
biometricHandler.startWork(this);
biometricHandler.authenticate(this);
原文地址
Android指纹识别,看这一篇就够了