1. AndroidManifest权限声明
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
2. 获取FingerManager服务对象
public static FingerprintManager getFingerprintManager(Context context) {
FingerprintManager fingerprintManager = null;
try {
fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
} catch (Throwable e) {
FPLog.log("have not class FingerprintManager");
}
return fingerprintManager;
}
3. 启动指纹识别
mFingerprintManager.authenticate(cryptoObject, mCancellationSignal, 0, mAuthCallback, null);
4.兼容性
官方v4包中 使用FingerprintManagerCompat代替FingerprintManager可以兼容更低版本
5.使用指纹识别需要确认
是否有指纹服务
指纹服务中是否返回硬件支持
/**
* 有指纹识别硬件支持
* @return
*/
public boolean isHardwareDetected() {
try {
return mFingerprintManager.isHardwareDetected();
} catch (SecurityException e) {
} catch (Throwable e) {}
return false;
}
/**
* 是否录入指纹,有些设备上即使录入了指纹,但是没有开启锁屏密码的话此方法还是返回false
* @return
*/
public boolean isHasEnrolledFingerprints() {
try {
// 有些厂商api23之前的版本可能没有做好兼容,这个方法内部会崩溃(redmi note2, redmi note3等)
return mFingerprintManager.hasEnrolledFingerprints();
} catch (SecurityException e) {
} catch (Throwable e) {
}
return false;
}
demo 可以参考
Github地址:https://github.com/PopFisher/FingerprintRecognition