public class FingerprintManagerUtil {
private static FingerprintManagerCompat fingerprintManagerCompat;
private static CancellationSignal cancellationSignal;
private FingerprintManagerUtil() {
}
/**
-
开始进行指纹验证
-
@param context 上下文
-
@param fingerprintListener 指纹验证回调接口
*/
public static void startFingerprinterVerification(Context context, final FingerprintListener fingerprintListener) {
fingerprintManagerCompat = FingerprintManagerCompat.from(context);
// 是否支持指纹验证
if (fingerprintManagerCompat == null || !fingerprintManagerCompat.isHardwareDetected()) {
if (fingerprintListener != null)
fingerprintListener.onNonsupport();
return;
}
// 是否录入了指纹
if (!fingerprintManagerCompat.hasEnrolledFingerprints()) {
if (fingerprintListener != null)
fingerprintListener.onEnrollFailed();
return;
}
// 回调可以开始进行认证
if (fingerprintListener != null)
fingerprintListener.onAuthenticationStart();
cancellationSignal = new CancellationSignal();
fingerprintManagerCompat.authenticate(null, 0, cancellationSignal, new FingerprintManagerCompat.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
// 验证出错回调,指纹传感器会关闭一段时间
super.onAuthenticationError(errMsgId, errString);
if (fingerprintListener != null)
fingerprintListener.onAuthenticationError(errMsgId, errString);
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
// 验证帮助回调
super.onAuthenticationHelp(helpMsgId, helpString);
if (fingerprintListener != null)
fingerprintListener.onAuthenticationHelp(helpMsgId, helpString);
}
@Override
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
// 验证成功
super.onAuthenticationSucceeded(result);
if (fingerprintListener != null)
fingerprintListener.onAuthenticationSucceeded(result);
}
@Override
public void onAuthenticationFailed() {
// 验证失败 指纹验证失败后,指纹传感器不会立即关闭指纹验证,
// 系统会提供5次重试的机会,即调用5次onAuthenticationFailed()后,才会调用onAuthenticationError()
super.onAuthenticationFailed();
if (fingerprintListener != null)
fingerprintListener.onAuthenticationFailed();
}
}, null);
}
/**
- 取消指纹验证
*/
public static void cancel() {
if (cancellationSignal != null && !cancellationSignal.isCanceled())
cancellationSignal.cancel();
}
/**
- 指纹验证回调监听
*/
public interface FingerprintListener {
/**
- 手机或系统不支持指纹验证时回调
*/
void onNonsupport();
/**
- 手机支持指纹验证,但是还没有录入指纹时回调
*/
void onEnrollFailed();
/**
- 可以进行指纹验证时回调,该方法主要作用用于在进行指纹验证之前做一些操作,比如弹出对话框
*/
void onAuthenticationStart();
/**
-
指纹验证成功时回调
-
@param result {@link FingerprintManagerCompat.AuthenticationResult} 对象
*/
void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result);
/**
-
验证失败时回调
-
-
指纹验证失败后,指纹传感器不会立即关闭指纹验证,系统会提供5次重试的机会,即调用
-
5次 {@link #onAuthenticationFailed()} 后,才会调用 {@link #onAuthenticationError(int, CharSequence)}
*/
void onAuthenticationFailed();
/**
-
验证出错时回调,指纹传感器会关闭一段时间,具体时间根据厂商不同有所区别
-
@param errMsgId 错误信息id
-
@param errString 错误信息描述
*/
void onAuthenticationError(int errMsgId, CharSequence errString);
/**
-
验证帮助回调
-
@param helpMsgId 帮助信息id
-
@param helpString 帮助信息描述
*/
void onAuthenticationHelp(int helpMsgId, CharSequence helpString);
}
/**
- FingerprintListener 回调监听适配器,减少不必要方法的重写,只需要重写需要处理的对应方法即可
*/
public abstract static class FingerprintListenerAdapter implements FingerprintListener {
@Override
public void onNonsupport() {
}
@Override
public void onEnrollFailed() {
}
@Override
public void onAuthenticationStart() {
}
@Override
public void onAuthenticationFailed() {
}
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
}
}
}
2、activity调用以及指纹识别验证回调方法(调用后,触摸手机指纹按钮即可实现指纹识别)
private AlertDialog alertDialog;
// 调用指纹验证方法
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
**要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(img-MeNQDUvi-1712823587954)]
最后
**要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。
[外链图片转存中…(img-21erdTXJ-1712823587954)]
[外链图片转存中…(img-XuRwZ6zo-1712823587954)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-JRcOm1Ms-1712823587955)]