Android指纹登录工具类封装
- 作者: 飘在天空的羽
- 来源: 51数据库
- 2021-07-07
本文实例为大家分享了android指纹登录工具类的封装代码,供大家参考,具体内容如下
核心
android 指纹 是在 6.0 才出来的一个重要的功能
@requiresapi(api = build.version_codes.m)
核心的两个 api:
fingerprintmanager
keyguardmanager
step1
判断android 版本,如果小于 6.0 支持不了指纹
if(build.version.sdk_int < build.version_codes.m){
return;
}
step2
判断 手机硬件(有没有指纹感应区)就是手机是否支持传感
@requiresapi(api = build.version_codes.m)
public boolean ishardfinger() {
if (fingerprintmanager != null && fingerprintmanager.ishardwaredetected()) {
return true;
} else {
return false;
}
}
step3
检查手机是否开启锁屏密码(如手机未开锁,涉及到一个优先级问题,先解锁 后使用)
public boolean iswindowsafe() {
if (keyguardmanager != null && keyguardmanager.iskeyguardsecure()) {
return true;
} else {
return false;
}
}
step4
检查手机是否有录入指纹
@requiresapi(api = build.version_codes.m)
public boolean ishavehandler() {
if (fingerprintmanager != null && fingerprintmanager.hasenrolledfingerprints()) {
return true;
} else {
return false;
}
}
只有以上步骤全满足,才能使用指纹
开启指纹验证
@requiresapi(api = build.version_codes.m)
public void authenticate(fingerprintmanager.cryptoobject cryptoobject, cancellationsignal cancellationsignal,
int flag,
fingerprintmanager.authenticationcallback authenticationcallback, handler handler) {
if (fingerprintmanager != null) {
fingerprintmanager.authenticate(cryptoobject, cancellationsignal, flag, authenticationcallback, handler);
}
}
参数中最重要的就是 cancellationsignal和 callback,其他传null 和 0 就行,cancellationsignal 是用来取消指纹验证的,而callback 可以回调 指纹验证失败次数 或者指纹验证成功
最后附上简单工具类
/**
* 指纹识别工具类
*/
public class fingerutils {
private final fingerprintmanager fingerprintmanager;
private final keyguardmanager keyguardmanager;
@requiresapi(api = build.version_codes.m)
private fingerutils(context context) {
fingerprintmanager = (fingerprintmanager) context.getsystemservice(context.fingerprint_service);
keyguardmanager = (keyguardmanager) context.getsystemservice(context.keyguard_service);
}
private static fingerutils singleton = null;
@requiresapi(api = build.version_codes.m)
public static fingerutils getinstance(context context) {
if (singleton == null) {
synchronized (fingerutils.class) {
if (singleton == null) {
singleton = new fingerutils(context);
}
}
}
return singleton;
}
/**
* ②检查手机硬件(有没有指纹感应区)
*/
@requiresapi(api = build.version_codes.m)
public boolean ishardfinger() {
if (fingerprintmanager != null && fingerprintmanager.ishardwaredetected()) {
return true;
} else {
return false;
}
}
/**
* ③检查手机是否开启锁屏密码
*/
public boolean iswindowsafe() {
if (keyguardmanager != null && keyguardmanager.iskeyguardsecure()) {
return true;
} else {
return false;
}
}
/**
* ④检查手机是否已录入指纹
*/
@requiresapi(api = build.version_codes.m)
public boolean ishavehandler() {
if (fingerprintmanager != null && fingerprintmanager.hasenrolledfingerprints()) {
return true;
} else {
return false;
}
}
/**
* 创建指纹验证
*/
@requiresapi(api = build.version_codes.m)
public void authenticate(fingerprintmanager.cryptoobject cryptoobject, cancellationsignal cancellationsignal,
int flag,
fingerprintmanager.authenticationcallback authenticationcallback, handler handler) {
if (fingerprintmanager != null) {
fingerprintmanager.authenticate(cryptoobject, cancellationsignal, flag, authenticationcallback, handler);
}
}
/**
* 取消指纹验证 . 应该不会用上
*/
public void cannelfinger(cancellationsignal cancellationsignal) {
cancellationsignal.cancel();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
热点文章
android中Bitmap用法(显示,保存,缩放,旋转)实例分析
12
android 仿微信聊天气泡效果实现思路
1
Android的尺度,drawable-xxxxxxx
2
Codeforces Round #656 (Div. 3) (C、D题)
1
Android之handler异步消息处理机制解析
6
GridView中图片显示出现上下间距过大,左右图片显示类似瀑布流的问题
0
AsyncTask的简单使用
5
两个简单Fragment之间的通信(三种方式)
18
uboot修改设置boot参数命令
41
android中实现从相册中一次性获取多张图片与拍照,并将选中的图片显示出来
2
