zoukankan      html  css  js  c++  java
  • Android开发 Android6.0指纹识别

    前言

      指纹识别功能在Android端已经被封装的十分简单,当然给予的功能也十分少你只能得到指纹是否识别成功或失败的回调。其实实际业务里你也没有需要很复杂的功能,这些基本满足了你确认当前设备是机主的密码锁功能。

    另外,你需要知道在此博客的指纹识别只适用于Android 6.0 - Android 9.0 。

    简单demo

      权限

    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>

      代码

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private static final String TAG = MainActivity.class.getSimpleName();
        private FingerprintManagerCompat mFingerprintManagerCompat;
        private CancellationSignal mCancellationSignal;
        private TextView mTextView;
        private Button mAuthenticateBtn;
        private Button mCandleBtn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
            mFingerprintManagerCompat = FingerprintManagerCompat.from(this);//初始化指纹管理区
    
    
        }
    
        private void initView() {
            mAuthenticateBtn = (Button) findViewById(R.id.authenticate_btn);
            mCandleBtn = (Button) findViewById(R.id.candle_btn);
            mAuthenticateBtn.setOnClickListener(this);
            mCandleBtn.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.authenticate_btn:
                    if (mFingerprintManagerCompat.isHardwareDetected()) {
                        Log.e(TAG, "检测到指纹设备");
                        if (mFingerprintManagerCompat.hasEnrolledFingerprints()){
                            fingerprintAuthenticate();
                            Log.e(TAG, "有指纹");
                            return;
                        }
                    }
                    Toast.makeText(this, "此设备没有指纹", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.candle_btn:
                    if (mCancellationSignal != null){
                        mCancellationSignal.cancel();   //取消指纹认证请求
                    }
                    break;
            }
        }
    
        /**
         * 请求指纹认证
         */
        private void fingerprintAuthenticate() {
            //TODO 此处可以添加你的指纹认证提示对话框
            mCancellationSignal = new CancellationSignal(); //取消指纹认证操作类
            mCancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() {
                @Override
                public void onCancel() {
                    //取消指纹认证回调
                }
            });
            /*
            下面这行代码就是认证请求操作,它一共有5个参数,这里说明下
            1. 与调用关联的对象;如果不需要,则为null。 不需要关注
            2.可选标志;应该是0 。 不需要关注
            3.可用于取消身份验证的对象的操作类
            4.回调接口
            5.接口回调线程Handler,默认主线程
             */
            mFingerprintManagerCompat.authenticate(null, 0, mCancellationSignal, new FingerprintManagerCompat.AuthenticationCallback() {
                @Override
                public void onAuthenticationError(int errMsgId, CharSequence errString) {
                    super.onAuthenticationError(errMsgId, errString);
                    //遇到不可恢复的错误并且操作完成时调用。 *不会在此对象上进行进一步的回调
                    //另外主动取消认证后,也会在此处回调
                    Log.e(TAG, "onAuthenticationError: 认证错误");
                }
    
                @Override
                public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
                    super.onAuthenticationHelp(helpMsgId, helpString);
                    //身份验证期间遇到可恢复的错误时调用。提供了帮助字符串,以向用户提供有关发生问题的指导,例如*“传感器脏污,请清洁它”
                    Log.e(TAG, "onAuthenticationHelp: 认证帮助");
                }
    
                @Override
                public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
                    super.onAuthenticationSucceeded(result);
                    //成功识别指纹时调用
                    Log.e(TAG, "onAuthenticationSucceeded: 认证成功");
                }
    
                @Override
                public void onAuthenticationFailed() {
                    super.onAuthenticationFailed();
                    //当指纹有效但未被识别时调用
                    Log.e(TAG, "onAuthenticationFailed: 认证失败");
                }
            }, null);
    
        }
    }
  • 相关阅读:
    15:链表中倒数第K个节点
    14:调整数组顺序使奇数位于偶数的前面
    13:在O(1)时间内删除单向链表中的一个节点
    centos7下zookeeper集群安装部署
    zabbix3.2监控mysql
    解决关于confluence缓慢 字体乱码 宏乱码 编辑不能贴图等问题
    nginx日志文件的定时切割与归纳
    centos7安装sonarqube6.7 代码质量管理平台
    centos7下安装vnc更改vnc默认端口号
    centos7安装java环境和maven环境
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/12341299.html
Copyright © 2011-2022 走看看