Android M指纹验证的简单使用
最近项目不咋忙,想着找点事儿做,就给自己写个自己用的App,顺便练练手学习新技术。因为我的手机有指纹功能,那么登陆功能~~
话不多说,开工!
取得这两个manager
mFingerprintManager = (FingerprintManager) this.getSystemService(Context.FINGERPRINT_SERVICE);
mKeyguardManager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
哦忘了 记得添加权限(以前老是忘记添加权限导致报错),这个权限不在那几个权限组里,所以我们只需要在清单文件声明就行了.
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
现在开始用了,
/**
* 第一个参数是个FingerprintManager.CryptoObject类型,只是做验证指纹的话没啥用,填null就行,
* 第二个参数需要一个CancellationSignal,那就new一个
* 第三个需要一个int型的flag,填个0(填233也行~~!)
* 第四个是指纹识别的一个回调,待会儿在说
* 第五个需要个handler,我也不需要~~~
**/
mFingerprintManager.authenticate(null, new CancellationSignal(), 0, mCallBack, null);
然后就是返回验证结果的回调方法:
FingerprintManager.AuthenticationCallback mCallBack = new FingerprintManager
.AuthenticationCallback() {
//这个方法是在超过次数后调用,超过错误次数之后需要等三十秒才能再次使用(我的手机是三十秒~~~),就像手机锁屏的那个图案密码
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
showToast(errString);
}
//这个方法在识别错误时会给予提示帮助之类的,我只看到过"手指移动太快,请重试"
@Override
public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
showToast(helpString);
Log.d(TAG, "onAuthenticationHelp: " + helpCode + "," + helpString);
}
//识别成功
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
// Toast.makeText(mContext, "识别成功", Toast.LENGTH_SHORT).show();
startActivity(new Intent(mContext, MainActivity.class));
finish();
}
//每次识别失败都会调用这个方法(安全起见,而且错误五次还要等三十秒才能再次解锁,我可不想看着锁屏界面三十秒)
@Override
public void onAuthenticationFailed() {
checkErrorNum++;
if (checkErrorNum >= 3) {
//达到了错误次数,调用锁屏方法
showToast("已经错误3次,即将锁屏");
//延时2.5秒,不然我的Toast给谁看
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
lockScreen();
}
}, 2500);
} else {
showToast("错误的指纹");
}
}
};
OK,这样就可以了,是不是很简单!要是来个弹出框,配合一张带指纹扫描的那种GIF图,简直B格满满啊~~
其实如果能识别某个特定的指纹就完美了,暂时不知道目前有没有这样的技术,继续学习吧
这代码也是前天写的,今天心血来潮写博客,百度看不到我参考的那篇文章了,那就谢谢各位前辈啦