一、指纹判断工具类
package com.kp.client.test;

import android.app.KeyguardManager;
import android.content.Context;
import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
import android.support.v4.os.CancellationSignal;

import com.kp.client.App;

/**
 * Created by JillFung on 2018/3/16.
 */

public class FingerprintUtil {
    public static CancellationSignal cancellationSignal;

public static void callFingerPrint(final OnCallBackListenr listener) {
        FingerprintManagerCompat managerCompat = FingerprintManagerCompat.from(App.getInstance().getApplicationContext());
        if (!managerCompat.isHardwareDetected()) { //判断设备是否支持
            if (listener != null)
                listener.onSupportFailed();
            return;
        }
        KeyguardManager keyguardManager = (KeyguardManager) App.getInstance().getApplicationContext()
                .getSystemService(Context.KEYGUARD_SERVICE);
        if (!keyguardManager.isKeyguardSecure()) {//判断设备是否处于安全保护中
            if (listener != null)
                listener.onInsecurity();
            return;
        }
        if (!managerCompat.hasEnrolledFingerprints()) { //判断设备是否已经注册过指纹
            if (listener != null)
                listener.onEnrollFailed(); //未注册
            return;
        }
        if (listener != null)
            listener.onAuthenticationStart(); //开始指纹识别
        cancellationSignal = new CancellationSignal(); //必须重新实例化,否则cancel 过一次就不能再使用了
        managerCompat.authenticate(null, 0, cancellationSignal, new FingerprintManagerCompat.AuthenticationCallback() {
            // 当出现错误的时候回调此函数,比如多次尝试都失败了的时候,errString是错误信息,比如华为的提示就是:尝试次数过多,请稍后再试。
            @Override
            public void onAuthenticationError(int errMsgId, CharSequence errString) {
                if (listener != null)
                    listener.onAuthenticationError(errMsgId, errString);
            }

// 当指纹验证失败的时候会回调此函数,失败之后允许多次尝试,失败次数过多会停止响应一段时间然后再停止sensor的工作
            @Override
            public void onAuthenticationFailed() {
                if (listener != null)
                    listener.onAuthenticationFailed();
            }

@Override
            public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
                if (listener != null)
                    listener.onAuthenticationHelp(helpMsgId, helpString);
            }

// 当验证的指纹成功时会回调此函数,然后不再监听指纹sensor
            @Override
            public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
                if (listener != null)
                    listener.onAuthenticationSucceeded(result);
            }

;
        }, null);

}

interface OnCallBackListenr {
        void onSupportFailed();

void onInsecurity();

void onEnrollFailed();

void onAuthenticationStart();

void onAuthenticationError(int errMsgId, CharSequence errString);

void onAuthenticationFailed();

void onAuthenticationHelp(int helpMsgId, CharSequence helpString);

void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result);
    }

public static void cancel() {
        if (cancellationSignal != null)
            cancellationSignal.cancel();
    }

}

二、使用类

package com.kp.client.test;

import android.os.Bundle;
import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
import android.util.Log;
import android.view.View;

import com.kp.client.R;
import com.kp.client.base.BaseActivity;

/**
 * 测试指纹支付
 */
public class TestActivity extends BaseActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
    }

public void onFingerprintClick(View view) {
        FingerprintUtil.callFingerPrint(new FingerprintUtil.OnCallBackListenr() {
            @Override
            public void onSupportFailed() {
                Log.e("TestActivity","当前设备不支持指纹");
            }

@Override
            public void onInsecurity() {
                Log.e("TestActivity","当前设备未处于安全保护中");
            }

@Override
            public void onEnrollFailed() {
                Log.e("TestActivity","请到设置中设置指纹");
            }

@Override
            public void onAuthenticationStart() {
                Log.e("TestActivity","识别开始");
            }

@Override
            public void onAuthenticationError(int errMsgId, CharSequence errString) {
                Log.e("TestActivity", errString.toString());
            }

@Override
            public void onAuthenticationFailed() {
                Log.e("TestActivity", "识别失败");
            }

@Override
            public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
                Log.e("TestActivity", helpString.toString());
            }

@Override
            public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
                Log.e("TestActivity", "验证成功");
            }
        });

}
}

闲时整理3--Android调用指纹验证相关推荐

  1. 微信小程序调用指纹验证

    微信小程序调用指纹验证共有三个相关的接口 1.wx.checkIsSupportSoterAuthentication() 获取本机支持的 SOTER 生物认证方式 wx.checkIsSupport ...

  2. Android 实现指纹识别demo

    demo链接:https://download.csdn.net/download/meixi_android/10796468 1.指纹工具类: /*** 作者:created by meixi* ...

  3. 简单实现 Android M 指纹识别(附源码)

    众所周知, Android阵营里的指纹兼容真可谓是一团糟, 每个厂家几乎都有一套自己的API, 直到Android M的出现, 才慢慢地走上正途. 那么今天我们就一起来探讨一下, Android M里 ...

  4. android7.0 谷歌拼音,谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录...

    原标题:谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录 来源:蓝点网 此前谷歌已经宣布与 FIDO 联盟达成合作关系并在安卓系统上调用指纹或面部识别等来登录某些支持的网站. ...

  5. Android调用照相机展示高清图片及展示图片时图片倾斜问题

    Android调用照相机展示高清图片及展示图片时图片倾斜问题 一.概述 二.配置权限 三.封装CameraUtil工具类 1.Android调用照相机 2.调用系统相册 3.拍摄完毕或在相册选取好照片 ...

  6. android外接键盘打汉字,Android在外接物理键盘时,如何强制调用系统软键盘

    Android在外接物理键盘时,如何强制调用系统软键盘? 第一次写,写的不好请见谅 参考: 物理键盘映射过程: 手机/system/usr/keylayout/*.kl :内核将keyCode映射成有 ...

  7. Android屏幕旋转时Activity不重新调用onCreate的方法

    2019独角兽企业重金招聘Python工程师标准>>> android屏幕旋转时Activity不重新调用onCreate的方法 当手机转屏时,Activity的onDestroy和 ...

  8. Android在外接物理键盘时,如何强制调用系统软键盘

    Android在外接物理键盘时,如何强制调用系统软键盘? 可以加群:466059178,可以共同讨论,大神指导 第一次写,写的不好请见谅 参考: http://blog.csdn.net/DrakeB ...

  9. Android N 指纹框架

    1. 指纹框架UML 2. Fingerprint 2.1 Fingerprint数据流图 FingerprintManager API. 直接与应用程序交互的API,属于当前APP进程. 每个应用程 ...

  10. Android中指纹识别的使用

    /   今日科技快讯   / 近日,微软斥资75亿美元收购了游戏发行商ZeniMax Media,后者旗下的游戏工作室曾推出<毁灭战士>以及<辐射>等知名游戏.这使得微软旗下的 ...

最新文章

  1. 如何解决ORA-12547错误!
  2. 花生增产对话万书波-农业大健康·万祥军:获山东科技最高奖
  3. Convert AS400 Spool to PFD Tools – PDFing
  4. Python的深copy和浅copy
  5. 基于pygame的射击小游戏制作(三)让外星人动起来
  6. FastJson/spring boot: json输出
  7. request对象与response对象
  8. 264 参考帧 list0 list1
  9. 【C语言基础】C语言异常捕获机制 - setjmp
  10. PhpStorm中如何使用Xdebug工具,入门级操作方法
  11. nginx 逻辑运算
  12. php中的魔术常量__FILE__
  13. 浅析大数据给我们带来的便利和好处
  14. ubi ubifs学习笔记
  15. Markdown生成左侧目录
  16. 想了解Intel vPro(博锐)技术,就来Intel vPro虚拟展厅
  17. Java的小数点后精度计算
  18. 软件缺陷常见问题总结(软件测试入门速成篇)
  19. 年轻人频繁辞职的主要原因是什么呢?
  20. 基于Processing和Leap Motion的绘画系统

热门文章

  1. 零基础HTML入门教程(14)--水平线
  2. SNF快速开发平台--规则引擎在程序当中如何调用
  3. 愿以三生烟火,换君一世迷离
  4. hdu2073 无限的路 瞎搞
  5. JDO与Hibernate之比较(转载)
  6. 搜湖州师范学院C语言题库,湖州师范学院文件-20210402175834.doc-原创力文档
  7. 编译原理——自下而上语法分析
  8. android第三方登录appid,Android 第三方登录之支付宝登录
  9. 关于长江的题目_高中优秀议论文题目【高中关于长江的作文题目加优秀范文】...
  10. excel打开密码忘记了_行李箱密码忘记了怎么办?教你3招轻松打开