Android人脸与指纹识别

基础人脸识别模块

添加依赖

请添加基本依赖,不要添加 ktx 版本的依赖,因为他需要 API33 及以上才可以使用!
implementation 'androidx.biometric:biometric:1.1.0'


人脸识别工具类
package com.zhiyiyi.bio.bio

import android.content.Context
import android.os.Handler
import android.widget.Toast
import androidx.biometric.BiometricPrompt
import androidx.fragment.app.FragmentActivity
import java.util.concurrent.Executor

class BioUtils(
    val context: Context,
    val fragment: FragmentActivity,
) {

    // 注册事件监听者与执行器
    val handler = Handler()
    val executor = Executor {
        handler.post(it)
    }

    // 拉取人脸识别窗口
    open fun showBiometricPrompt() {

        // 配置人脸识别窗口的提示信息
        var propertyInfo = BiometricPrompt.PromptInfo.Builder().apply {
            setTitle("登陆人脸验证")
            setSubtitle("请确保面部信息清晰")
            setNegativeButtonText("取消识别")
        }.build()

        // 传入识别事件处理回调函数后,即可正常进入启动人脸识别流程
        var biometricPrompt = BiometricPrompt(fragment, executor, auth())
        biometricPrompt.authenticate(propertyInfo)
    }

    // 使用一个内部类实现识别回调函数(因为他是一个抽象函数)
    // 需要实现三个方法,分别是识别错误、成功、失败的执行方法
    inner class auth : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
            super.onAuthenticationError(errorCode, errString)
            Toast.makeText(context, "认证成功", Toast.LENGTH_SHORT).show()
        }

        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
            super.onAuthenticationSucceeded(result)
            Toast.makeText(context, "认证成功", Toast.LENGTH_SHORT).show()
        }

        override fun onAuthenticationFailed() {
            super.onAuthenticationFailed()
            Toast.makeText(context, "认证成功", Toast.LENGTH_SHORT).show()
        }
    }
}

外部 activity 调用人脸识别

因为我们已经写好了工具类,这里直接调用就好了,注意 mainactivity 需要进行类型转换

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        biobtn.setOnClickListener {
            BioUtils(
                this,
                this as FragmentActivity,
            ).showBiometricPrompt()
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhillery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值