Android 指纹登录工具类封装

   日期:2020-09-04     浏览:226    评论:0    
核心提示:###核心Android 指纹 是在 6.0 才出来的一个重要的功能@RequiresApi(api = Build.VERSION_CODES.M)核心的两个 api:FingerprintManagerKeyguardManager###step1判断android 版本,如果小于 6.0 支持不了指纹if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){return;}###step2判断 手机硬件(有没有指纹感应区

核心

Android 指纹 是在 6.0 才出来的一个重要的功能

@RequiresApi(api = Build.VERSION_CODES.M)

核心的两个 api:

FingerprintManager
KeyguardManager

step1

判断android 版本,如果小于 6.0 支持不了指纹

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
return;
}

step2

判断 手机硬件(有没有指纹感应区)就是手机是否支持传感

  @RequiresApi(api = Build.VERSION_CODES.M)
    public boolean isHardFinger() {
        if (fingerprintManager != null && fingerprintManager.isHardwareDetected()) {
            return true;
        } else {
            return false;
        }
    }

step3

检查手机是否开启锁屏密码(如手机未开锁,涉及到一个优先级问题,先解锁 后使用)

  public boolean isWindowSafe() {
        if (keyguardManager != null && keyguardManager.isKeyguardSecure()) {
            return true;
        } else {
            return false;
        }
    }

step4

检查手机是否有录入指纹

  @RequiresApi(api = Build.VERSION_CODES.M)
    public boolean isHaveHandler() {
        if (fingerprintManager != null && fingerprintManager.hasEnrolledFingerprints()) {
            return true;
        } else {
            return false;
        }
    }

只有以上步骤全满足,才能使用指纹

开启指纹验证

    @RequiresApi(api = Build.VERSION_CODES.M)
    public void authenticate(FingerprintManager.CryptoObject cryptoObject, CancellationSignal cancellationSignal,
                             int flag,
                             FingerprintManager.AuthenticationCallback authenticationCallback, Handler handler) {
        if (fingerprintManager != null) {
            fingerprintManager.authenticate(cryptoObject, cancellationSignal, flag, authenticationCallback, handler);
        }
    }

参数中最重要的就是 cancellationSignal和 callback,其他传null 和 0 就行,
cancellationsignal  是用来取消指纹验证的,而callback 可以回调 指纹验证失败次数 或者指纹验证成功、

最后附上简单工具类


public class FingerUtils {

    private final FingerprintManager fingerprintManager;
    private final KeyguardManager keyguardManager;

    @RequiresApi(api = Build.VERSION_CODES.M)
    private FingerUtils(Context context) {
        fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
        keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
    }

    private static FingerUtils singleton = null;

    @RequiresApi(api = Build.VERSION_CODES.M)
    public static FingerUtils getInstance(Context context) {
        if (singleton == null) {
            synchronized (FingerUtils.class) {
                if (singleton == null) {
                    singleton = new FingerUtils(context);
                }
            }
        }
        return singleton;
    }


    

    @RequiresApi(api = Build.VERSION_CODES.M)
    public boolean isHardFinger() {
        if (fingerprintManager != null && fingerprintManager.isHardwareDetected()) {
            return true;
        } else {
            return false;
        }
    }

    

    public boolean isWindowSafe() {
        if (keyguardManager != null && keyguardManager.isKeyguardSecure()) {
            return true;
        } else {
            return false;
        }
    }

    
    @RequiresApi(api = Build.VERSION_CODES.M)
    public boolean isHaveHandler() {
        if (fingerprintManager != null && fingerprintManager.hasEnrolledFingerprints()) {
            return true;
        } else {
            return false;
        }
    }

    
    @RequiresApi(api = Build.VERSION_CODES.M)
    public void authenticate(FingerprintManager.CryptoObject cryptoObject, CancellationSignal cancellationSignal,
                             int flag,
                             FingerprintManager.AuthenticationCallback authenticationCallback, Handler handler) {
        if (fingerprintManager != null) {
            fingerprintManager.authenticate(cryptoObject, cancellationSignal, flag, authenticationCallback, handler);
        }
    }

    
    public void cannelFinger(CancellationSignal cancellationSignal) {
        cancellationSignal.cancel();

    }
}

`

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服