Android 接入指纹识别

news/2024/4/17 7:14:54

接入指纹框架:https://github.com/Tencent/soter

implementation 'com.github.Tencent.soter:soter-wrapper:2.0.9'

1.Application中初始化

class IApplication : Application() {override fun onCreate() {super.onCreate()instance = thisinitSort()}private fun initSort() {val param = InitializeParamBuilder().setScenes(100).build()SoterWrapperApi.init(this, { result ->logDebug("$result")}, param)}}

2.准备密钥

  SoterWrapperApi.prepareAuthKey({ result ->logDebug("init sort = $result")if (result.errCode == SoterErrCode.ERR_OK) {//支持指纹binding.llFingerPay.visibility = View.VISIBLE} else {binding.llFingerPay.visibility = View.GONE}}, false, true, 100, null, null)

也可以通过准备密钥结果来判断是否设备是否支持指纹

3.调起系统指纹进行验证

3.1 请求验证前获取AuthenticationParam

    private var canceller: SoterBiometricCanceller? = nullfun getAuthParam(act: AppCompatActivity?, showPassword: Boolean = true): AuthenticationParam {canceller = SoterBiometricCanceller()canceller!!.refreshCancellationSignal()val param = AuthenticationParam.AuthenticationParamBuilder().setScene(100).setContext(act).setBiometricType(ConstantsSoter.FINGERPRINT_AUTH).setSoterBiometricCanceller(canceller)//用于获取挑战因子的网络封装结构体。如果在授权之前已经通过其他模块拿到后台挑战因子,则可以改为调用setPrefilledChallenge.setPrefilledChallenge("test1").setSoterBiometricStateCallback(object : SoterBiometricStateCallback {override fun onStartAuthentication() {//开始验证}override fun onAuthenticationHelp(helpCode: Int,helpString: CharSequence?) {}override fun onAuthenticationSucceed() {//验证成功}override fun onAuthenticationFailed() {//指纹错误}override fun onAuthenticationCancelled() {//用户主动取消,可能会切换密码}override fun onAuthenticationError(errorCode: Int,errorString: CharSequence?) {//验证异常}}).build()return param}

3.2 请求验证

        SoterWrapperApi.requestAuthorizeAndSign({ result ->if (result.isSuccess) {//每个手指的指纹标识val fid = result.extData.fid//指纹验证成功} else {//指纹不匹配或其他错误showFingerError(result)}}, authParam)

多个指纹,可以使用fid进行判断对比。

最后权限:

<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

https://www.xjx100.cn/news/3293538.html

相关文章

瑞_Redis_Redis命令

文章目录 1 Redis命令Redis数据结构Redis 的 key 的层级结构1.0 Redis通用命令1.0.1 KEYS1.0.2 DEL1.0.3 EXISTS1.0.4 EXPIRE1.0.5 TTL 1.1 String类型1.1.0 String类型的常见命令1.1.1 SET 和 GET1.1.2 MSET 和 MGET1.1.3 INCR和INCRBY和DECY1.1.4 SETNX1.1.5 SETEX 1.2 Hash类…

DAY9-防病毒AV概述

DNS过滤 URL过滤和DNS过滤对比

广和通发布基于MediaTek T300平台的RedCap模组FM330系列及解决方案

世界移动通信大会MWC 2024期间&#xff0c;广和通发布基于MediaTek T300平台的RedCap模组FM330系列&#xff0c;加速5G-A繁荣发展。FM330系列及其解决方案采用全球先进RedCap方案&#xff0c;满足移动宽带和工业互联对高能效的需求。 广和通FM330系列采用全球首款6nm制程且集成…

Java并发之线程池详解

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ &#x1f440;&#x1f440;&#x1f440; 个人博客&#xff1a;小奥的博客 &#x1f44d;&#x1f44d;&#x1f44d;&#xff1a;个人CSDN ⭐️⭐️⭐️&#xff1a;传送门 &#x1f379; 本人24应届生一枚&#xff0c;技术和水平有限&am…

网工内推 | Base北京,上市公司高级网工,最高25K,带薪年假

01 北京中天瑞合科技有限公司 招聘岗位&#xff1a;高级网络工程师 职责描述&#xff1a; 1、负责高校、医院、企业等数据中心、骨干网络、园区网等有线、无线网络架构的规划、设计、调整、性能优化&#xff0c;制定大、中型网络相关的安全策略和规范&#xff1b; 2、负责网络…

【机器人最短路径规划问题(栅格地图)】基于蚁群算法求解

基于蚁群算法求解机器人最短路径规划问题的仿真结果 仿真结果 收敛曲线变化趋势 蚁群算法求解最优解的机器人运动路径 各代蚂蚁求解机器人最短路径的运动轨迹

web组态软件

1、强大的画面显示web组态功能 2、良好的开放性。 开放性是指组态软件能与多种通信协议互联&#xff0c;支持多种硬件设备&#xff0c;向上能与管理层通信&#xff0c;实现上位机和下位机的双向通信。 3、丰富的功能模块。 web组态提供丰富的控制功能库&#xff0c;满足用户的测…

解决RabbitMQ管理页面异常/不正确的问题

正确的页面&#xff1a;有Channels、Exchanges等 异常/不正确的页面&#xff1a; 问题原因 我的RabbitMQ是用docker安装的&#xff0c;应该不会是安装的环境有问题。 而且MQ的服务确实是启动了&#xff0c;后端能正常使用&#xff0c;并且管理界面的登录页面也是能正常登录的&…