本文实例为大家分享了Android指纹登录工具类的封装代码,供大家参考,具体内容如下

核心

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();  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. Android之DiskLruCache(缓存工具)
  2. Android构建工具Gradle知识1
  3. 如何在android 中编译alsa-utils工具
  4. Android工具之Hierarchy Viewer--分析应用程序UI布局
  5. 通过判断浏览器的userAgent,用正则来判断手机是否是ios(苹果)和Andr
  6. android获取手机号码以及imsi信息
  7. android手机两种方式获取IP地址
  8. Qt for Android获取手机序列号
  9. Android 获取手机信息

随机推荐

  1. 单阶段目标检测
  2. Take Command 事件监视命令(触发器)
  3. 五个关键的云安全挑战以及如何克服它们
  4. 【DB笔试面试490】 如何导出csv和html文
  5. Take Command 脚本语言基础
  6. 校验和:探究密码学中的数据完整性问题
  7. vue前端一直发生websocket请求的解决办法
  8. 等保2.0高风险项之安全的区域边界
  9. 命令执行
  10. SaaS时代对数据安全的重新思考