前言
指纹识别功能在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); } }
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/12341299.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。