BiometricHelper-指纹识别,面部识别,自定义弹窗,用法超级简单
基于安卓原生指纹识别和面部识别的工具类,可按需求自定义弹窗
支持系统弹窗
支持采用SDK弹窗
支持采用自定义弹窗
小于Android 6 Api 小于 23
不支持
Android 6到8 Api 23到27
支持SDK弹窗/自定义弹窗
支持系统弹窗
支持面部识别
不开启enableAndroidP
true
false
false
开启enableAndroidP
true
false
false
Android 9 Api 28
支持SDK弹窗/自定义弹窗
支持系统弹窗
支持面部识别
不开启enableAndroidP
true
false
false
开启enableAndroidP
false
true
false
大于等于 Android 10
支持SDK弹窗/自定义弹窗
支持系统弹窗
支持面部识别
不开启enableAndroidP
true
false
false
开启enableAndroidP
false
true
true
为什么接入SDK没有出现面部识别弹窗?
很多手机没有面部解锁功能
没有开启面部解锁功能
有面部解锁且开启面部解锁也不一定有识别弹窗出现
目前知道三星S21是可以面部识别,你有更多机型可以的调起面部识别弹窗的话可以留言
为什么接入SDK没出现指纹识别?
1.在Project的build.gradle
中添加仓库地址
allprojects {
repositories {
.. .
maven { url " https://jitpack.io" }
}
}
2.在Module目录下的build.gradle
中添加依赖
dependencies {
implementation ' com.github.ITxiaoguang:BiometricHelper:1.0.1'
}
<uses-permission android : name =" android.permission.USE_FINGERPRINT" />
private fun showDialog (enableAndroidP : Boolean ) {
BiometricPromptManager .Builder (this )
// 启动安卓自带弹窗 default true,设置成false面部识别不生效
.enableAndroidP(enableAndroidP)
.setCallback(fingerprintCallback)
.title(" 请验证已录入的指纹/面容" )
.cancelText(" 取消" )
// 以下设置 enableAndroidP false 安卓8以上手机才有效
.setImgRes(R .drawable.ic_fingerprint)
.failTitle(" 未能识别指纹" )
.failContent(" 再试一次" )
// 自定义弹窗(采用工厂模式,继承IBiometricDialog)
// .setCustomDialog(BiometricDialogCustomImpl())
.build()
}
private val fingerprintCallback: FingerprintCallback = object : FingerprintCallback {
@RequiresApi(api = Build .VERSION_CODES .M )
override fun onSucceeded23 (result : FingerprintManagerCompat .AuthenticationResult ? ) {
Toast .makeText(this @MainActivity, " success" , Toast .LENGTH_SHORT ).show()
}
@RequiresApi(api = Build .VERSION_CODES .P )
override fun onSucceeded28 (result : androidx.biometric.BiometricPrompt .AuthenticationResult ? ) {
Toast .makeText(this @MainActivity, " success" , Toast .LENGTH_SHORT ).show()
}
override fun onFailed () {
Toast .makeText(this @MainActivity, " onFailed" , Toast .LENGTH_SHORT ).show()
}
override fun onError (errString : CharSequence? ) {
Toast .makeText(this @MainActivity, " onError " + errString, Toast .LENGTH_SHORT ).show()
}
override fun onCancel () {
Toast .makeText(this @MainActivity, " onCancel" , Toast .LENGTH_SHORT ).show()
}
}
/* *
* onPause生命周期关闭自定义弹窗
*/
override fun onPause () {
super .onPause()
manager?.onActivityPause()
}
/* *
* onDestroy生命周期关闭自定义弹窗
*/
override fun onDestroy () {
super .onDestroy()
manager?.onActivityDestroy()
}