核心

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

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

  @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-设置手机桌面
  2. Android中手机声音调节步骤(Android学习随笔四)
  3. 不使用webview,用手机浏览器的android app
  4. android apk签名(为什么 如何做 验证)
  5. 我开发的第一个Android软件
  6. Android(安卓)获得手机屏幕大小
  7. Android(安卓)Studio中Edittext监听回车事件,捕获手机和扫描枪的
  8. Android获取手机短信
  9. Android(安卓)读取手机音乐,视频,图片

随机推荐

  1. SQL语句练习实例之二——找出销售冠军
  2. SQL语句练习实例之三——平均销售等待时
  3. SQL Server Bulk Insert 只需要部分字段
  4. SQL 判断给定日期值(或时间段)所在星期的
  5. 在数据库‘master’中拒绝CREATE DATABAS
  6. mssql server 数据库附加不上解决办法分
  7. Android开发中遇到的坑
  8. Android(安卓)数据业务框架分析
  9. Buttons in button bars should be borde
  10. [Android(安卓)L]关于Android(安卓)L的Se