Android——超简单的 指纹验证

news2024/10/5 21:22:20

 GT库出指纹验证了,只需 二步即可完成指纹验证功能,非常简单

  使用GT库里的,当然需要先依赖好GT库啦:

GitHub - 1079374315/GTContribute to 1079374315/GT development by creating an account on GitHub.https://github.com/1079374315/GT

简易版 指纹

第一步:添加指纹验证权限

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

第二步:指纹验证核心代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //是否显示UI,高版本的 Android 自带指纹验证UI,低版本的则需要自定UI
                boolean isAndroid11 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R;

                DialogFragment dialogFragment = GT.DarknessMagic.
                        FingerprintDialogFragment.newInstance(
                                "请进行指纹校验", //指纹校验 中心文字
                                "取消",//取消校验的按钮
                                isAndroid11,//是否显示指纹校验 默认UI,这个需要更具具体手机适配
                                false);//是否单击UI以外的区域 自动取消验证
                //启动指纹校验
                GT.startDialogFragment(MainActivity.this, dialogFragment);

            }
        });


    }

    //获取指纹验证数据
    public void onActivityReenter(int resultCode, Intent data) {
        super.onActivityReenter(resultCode, data);
        int type = data.getIntExtra(GT.DarknessMagic.FingerprintDialogFragment.TYPE, -1);
        GT.logt("type:" + type);
        switch (type){
            case GT.DarknessMagic.FingerprintUtils.TYPE_0://正常可以 指纹功能
            case GT.DarknessMagic.FingerprintUtils.TYPE_1://您的手机不支持指纹功能
            case GT.DarknessMagic.FingerprintUtils.TYPE_2://您还未设置锁屏,请先设置锁屏并添加一个指纹
            case GT.DarknessMagic.FingerprintUtils.TYPE_3://您至少需要在系统设置中添加一个指纹
            case GT.DarknessMagic.FingerprintUtils.TYPE_cancel://用户手动取消了
            case GT.DarknessMagic.FingerprintUtils.TYPE_SUCCESS://指纹认证成功
            case GT.DarknessMagic.FingerprintUtils.TYPE_ERROR2://尝试次数过多,请稍后重试。
                break;
            case GT.DarknessMagic.FingerprintUtils.TYPE_ERROR://指纹认证失败,请再试一次
                break;
        }
    }
}

结尾:布局只需要一个 TextView 单击即可,故不填,需要注意的是:是否显示UI,最好是根据 当前安卓版本判断,以上就是 简易版 指纹验证 教程了,下面将介绍自定义 UI 指纹验证:

自定义 UI 指纹验证:

public class MainActivity extends AppCompatActivity {

    private GT.DarknessMagic.FingerprintUtils fingerprint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //初始化指纹验证,并接受指纹验证状态
                fingerprint = GT.DarknessMagic.FingerprintUtils.getInstance().init(MainActivity.this, new GT.OnListener<Integer>() {
                    @Override
                    public void onListener(Integer... integers) {
                        GT.logt("指纹验证状态:" + integers[0]);
                        switch (integers[0]) {
                            case GT.DarknessMagic.FingerprintUtils.TYPE_0://正常可以 指纹功能
                            case GT.DarknessMagic.FingerprintUtils.TYPE_1://您的手机不支持指纹功能
                            case GT.DarknessMagic.FingerprintUtils.TYPE_2://您还未设置锁屏,请先设置锁屏并添加一个指纹
                            case GT.DarknessMagic.FingerprintUtils.TYPE_3://您至少需要在系统设置中添加一个指纹
                            case GT.DarknessMagic.FingerprintUtils.TYPE_cancel://用户手动取消了
                            case GT.DarknessMagic.FingerprintUtils.TYPE_SUCCESS://指纹认证成功
                            case GT.DarknessMagic.FingerprintUtils.TYPE_ERROR2://尝试次数过多,请稍后重试。
                                break;
                            case GT.DarknessMagic.FingerprintUtils.TYPE_ERROR://指纹认证失败,请再试一次
                                break;
                        }
                    }
                });

                fingerprint.startListening();//开启指纹验证
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        fingerprint.stopListening();//停止指纹验证
    }
}

总结:自定义UI教程,贴出了 核心代码,具体可自己编写对话框UI,并自己控制指纹验证的 显示与取消,非常简单吧,GT库不止这一个好用的功能。

  点个关注点个赞呗(〃'▽'〃)   关注博主最新发布库:GitHub - 1079374315/GT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/857697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++笔记之回调函数的演变

C笔记之回调函数的演变 code review! 文章目录 C笔记之回调函数的演变1.使用函数指针2.使用typedef加函数指针3.使用std::using加函数指针4.使用std::using加std::function5.使用回调和不使用回调对比 1.使用函数指针 代码 #include <iostream>// 定义函数&#xff0c…

浅析数字孪生和虚拟仿真的区别与联系

工业数字孪生和虚拟仿真是当今工业领域的两大热门技术&#xff0c;注意我的说法&#xff0c;在“工业领域”&#xff0c;在其他领域可能概念有所不同。 其实工业数字孪生和虚拟仿真做出来的产品很相似&#xff0c;并且很多数字孪生产品也会结合虚拟仿真技术&#xff0c;所以导致…

最好的和解,是陪“内在小孩”一起长大

“为什么我总是很心累&#xff1f;” 经常莫名感到心累、有深深的无力感&#xff0c;是现代成年人的通病。 生活压力大&#xff0c;忙忙碌碌却觉得迷茫、空虚、压抑&#xff1b; 不管怎么努力&#xff0c;好像总是卡在某个地方&#xff0c;得不到升职加薪&#xff1b; 每段感情…

使用注解实现MyBatis映射

文章目录 前言简单语句用注解增加功能更新功能删除功能查询功能 复杂语句用映射查询功能 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 注解实现的最大的好处是简单SQL语句放注解里&#xff0c;映射文件就不用写了 数据库代码&#xff1a; create t…

轻量级Web框架Flask

Flask-SQLAlchemy MySQL是免费开源软件&#xff0c;大家可以自行搜索其官网&#xff08;https://www.MySQL.com/downloads/&#xff09; 测试MySQL是否安装成功 在所有程序中&#xff0c;找到MySQL→MySQL Server 5.6下面的命令行工具&#xff0c;然后单击输入密码后回车&am…

Scratch 之 TurboWarp 常用插件介绍-2

今天带来2篇 TurboWarp 常用插件介绍 什么你还没有 TurboWarp &#xff1f; 快去下载一个吧 TurboWarp&#xff08;简称TW&#xff09; 在线版 | 离线版下载 TurboWarp优点 编译速度快于原版 Scratch 至少10倍拥有自定义帧的功能&#xff08;比如60 FPS&#xff09;造型编…

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…

云计算——存储虚拟化简介 与 存储模式及方法

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前期回顾 前言 一.存储虚拟化介绍 1.云计算存储基本概念 2.云计算存储模型 3.创…

小米基于 Flink 的实时计算资源治理实践

摘要&#xff1a;本文整理自小米高级软件工程师张蛟&#xff0c;在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分&#xff1a; 1. 发展现状与规模 2. 框架层治理实践 3. 平台层治理实践 4. 未来规划与展望 Tips&#xff1a;点击「阅读原文」免费领取…

客户端渲染和服务端渲染的区别

一、客户端渲染 页面的渲染工作都是由浏览器来完成的&#xff0c;服务器只是负责提供数据。前端去后端取数据生成DOM树。 **最少两次请求 ** 第一次请求拿到的是页面第二次请求拿到的是动态数据 二、服务端渲染 页面渲染的工作都是由服务端来完成的&#xff0c;数据也是由服…

# X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系 很多人对于他们是啥是傻傻分不清的&#xff0c;我做了个表格供大家参考。 摘抄&#xff1a; X11是X Window System Protocol, Version 11&#xff08;RFC1013&#xff09;&#xff0c;是X server和X client之间的通…

Maven进阶1 -- 分模块开发、依赖管理、聚合与继承、属性、版本管理、多环境开发、跳过测试

目录 1.分模块开发 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#xff0c;接口共享。 案例&#xff1a;拆分一下这个SSM整合案例 ①创建maven模块 demo项目下的pom.xml文件&#xff08;主要看一下依赖&#xff09; <dependencies><!…

ApplicationContextInitializer

目录 在何处执行&#xff1f;何时初始化&#xff1f;自己写一个ApplicationContextInitializer 那这个类的设计具体有什么作用呢&#xff1f;&#xff1f;1. DelegatingApplicationContextInitializer2. SharedMetadataReaderFactoryContextInitializer3. ContextIdApplication…

试卷扫描去掉痕迹,这个工具很好用

随着科技的不断发展&#xff0c;试卷扫描越来越普及&#xff0c;成为了现代教育不可或缺的一部分。试卷扫描的优势在于可以快速高效地批改试卷&#xff0c;但试卷上的痕迹往往会干扰扫描的准确性。如果可以扫描试卷并将上面填写的答案内容擦除还可以针对打错的题目重新巩固&…

【Rust】Rust学习 第八章常见集合

Rust 标准库中包含一系列被称为 集合&#xff08;collections&#xff09;的非常有用的数据结构。大部分其他数据类型都代表一个特定的值&#xff0c;不过集合可以包含多个值。不同于内建的数组和元组类型&#xff0c;这些集合指向的数据是储存在堆上的&#xff0c;这意味着数据…

mybatis-flex探索

mybatis古今未来 最近无意之中发现了一个非常棒的持久层框架mybatis-flex&#xff0c;迫不及待研究了一下 发现简直就是我的梦中情框&#xff0c;之前写ibatis&#xff0c;后来写mybatis&#xff0c;接着写mybatis-plus&#xff0c;接着研究mybatis-flex ibatis ibatis是apa…

ssm在线医疗服务系统源码和论文PPT

ssm在线医疗服务系统源码和论文PPT003 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 选题意义、价值和目标&#xff1a; 随着经济的迅速发展,人们对生活水平和身体健康的要…

chatGPT应用于房地产行业

作为 2023 年的房地产专业人士&#xff0c;您无疑认识到技术对行业的重大影响。近年来&#xff0c;一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面&#xff0c;从简化管理任务到增强客户互动。 在本文中&#xff0c;我们将探讨几种巧妙的人工智…

工业互联网发展在即 博晨(BOCHEN)攻克“卡脖子”难题

5G时代的到来&#xff0c;正在悄然掀起一场智能化技术改革的风暴。工业互联网未来一定要走向制造智能化&#xff0c;这可能是我们未来工业互联网推动工业系统新生态的核心问题。”中国电子信息行业联合会专家委员会主任董云庭就曾表示。目前&#xff0c;工业互联网已经覆盖至国…

DC电源模块在工业控制器中的重要性

BOSHIDA DC电源模块在工业控制器中的重要性 DC电源模块在工业控制器中起着非常重要的作用&#xff0c;它是实现工业控制器运转所必需的组成部分。 DC电源模块主要用于将交流电转换成直流电供给工业控制器中的各个部件&#xff0c;包括控制器内部的微处理器、传感器、执行器等等…