基础人脸识别模块
添加依赖
请添加基本依赖,不要添加 ktx 版本的依赖,因为他需要 API33 及以上才可以使用!
implementation 'androidx.biometric:biometric:1.1.0'
人脸识别工具类
package com.zhiyiyi.bio.bioimport android.content.Context
import android.os.Handler
import android.widget.Toast
import androidx.biometric.BiometricPrompt
import androidx.fragment.app.FragmentActivity
import java.util.concurrent.Executorclass 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()}}
}