• 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);
    
        }
    }
  • 相关阅读:
    Hadoop错误之namenode宕机的数据恢复
    Hadoop双namenode配置搭建(HA)
    Hadoop2之NameNode HA详解
    基于zookeeper的高可用Hadoop HA集群安装
    Spring Boot集成JPA的Column注解命名字段无效的问题
    Spring Boot使用Druid连接池基本配置
    Java设计模式六大原则之场景应用分析
    下半部和推后运行的工作
    SecureCRT连接linux,vim颜色显示问题
    Objective-C MacOS以管理员权限执行程序
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/12341299.html
Copyright © 2020-2023  润新知