在Android应用程序中实施指纹验证
生物统计学是与人类特征有关的计算和身体测量。生物统计学被分为。物理的和行为的。物理生物计量学是指我们的人体特征,如指纹、虹膜和其他许多特征。行为是我们的行为,例如,微笑、手势和其他。
反过来,生物统计学带来了巨大的、简单的和更安全的方法,利用他们的身体特征来识别一个特定的用户。
简介
让我们承认,在密码的名称中输入八个以上的字符是一项相当艰巨的任务,那是在用户甚至记得密码的情况下。这些天来,大多数开发商和公司通过使用生物识别技术作为一种认证形式,使我们的工作变得更加容易。
生物识别技术,一次又一次地被证明是更有效和更不容易受到网络攻击的。大多数领域,如银行、信息技术、教育和其他许多领域,都已将生物识别技术应用于他们的系统,以达到各种目的。
本文将介绍其中一种生物识别的认证方法,即使用我们的指纹。
生物统计学的优点
- 生物识别技术是特殊的,因为它与一个人有关(不像任何人都可以授权的密码)。
- 它非常方便。不需要携带或记住任何东西。
- 它非常安全。生物识别技术具有高度的抗欺诈性。
缺点
- 它们容易出错,有时甚至导致系统关闭。一旦生物识别数据被破坏,就没有办法挽回损失。对于被破坏的密码,你只需改变它;对于指纹、耳部图像或虹膜扫描,你只能使用被破坏的生物识别,最终导致生物识别系统的关闭。
- 与其他传统设备相比,生物识别设备和内置的生物识别功能成本很高。
先决条件
- 有构建基本的Android应用程序的经验。
- [Kotlin编程语言]和XML的基本知识。
- 安装了[Android Studio]。
- 有指纹扫描仪的Android手机。
目标
在本教程结束时,读者应该能够。
- 理解什么是生物识别技术以及生物识别技术的各种应用。
- 理解如何在Android应用程序中实现指纹验证。
现在,让我们深入研究并建立我们的应用程序。
第一步:创建一个新的Android Studio项目
打开Android Studio,选择开始一个新的Android Studio项目->空活动。
我们将把这个项目命名为**FingerprintAuthentication。**选择 "完成"并等待项目的构建。

第二步:在清单文件中启用生物识别技术的权限
在我们的AndroidManifest.xml 文件中,我们将添加生物识别权限声明,这将允许我们的应用程序访问我们设备中的内置生物识别功能。
在你的AndroidManifest.xml中添加以下一行代码。
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
第三步:在我们的项目中添加生物统计学库
在你的应用级build.gradle 文件中添加以下依赖项。
def biometricLibraryVersion = "1.0.1"
implementation "androidx.biometric:biometric:$biometricLibraryVersion"
第四步:创建一个新的空活动
由于我们的应用程序将要求我们使用生物识别技术来访问一个最高机密的活动,我们将创建一个包含秘密信息的活动。
右键单击Java目录,选择新建->活动->空活动。让我们给我们的新活动命名为秘密。点击完成。
我们的秘密活动的UI将只包含一个Textview,它将显示一个可选的消息。
activity_secret.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Secret">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="62dp"
android:layout_marginLeft="62dp"
android:layout_marginTop="348dp"
android:layout_marginEnd="63dp"
android:layout_marginRight="63dp"
android:layout_marginBottom="349dp"
android:text="TOP SECRET MESSAGE :)"
android:textSize="25dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout />
第五步:更新MainActivity.kt
在这一步,我们将编写代码,使我们的活动能够使用生物识别技术验证用户,以访问我们的最高机密活动。
我们的代码将包含以下函数。
- 一个
onAuthenticationError函数,提供一个失败的认证实例的结果。 - 一个
onAuthenticationSucceeded函数,提供一个成功的认证实例的结果。 - 一个
onCreate函数,它将包含一个onClickListener,它将唤起生物识别提示。我们还将在这个函数中包括一些生物识别提示的细节。 - 一个
notifyUser函数,它将在另一个函数调用时显示一个 Toast 消息。 - 一个
getCancellationSignal函数,它将处理用户的取消操作。 - 一个
checkBiometricSupport函数将检查一个特定的安卓设备是否有内置的生物识别技术支持,它们是否在手机的设置中被启用,或者用户已经接受了应用程序访问生物识别技术的许可。
package com.example.fingerprintauthentication
import android.app.KeyguardManager
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.content.pm.PackageManager
import android.hardware.biometrics.BiometricPrompt
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.CancellationSignal
import android.widget.Button
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.core.app.ActivityCompat
class MainActivity : AppCompatActivity() {
private var cancellationSignal: CancellationSignal? = null
private val authenticationCallback: BiometricPrompt.AuthenticationCallback
get() =
@RequiresApi(Build.VERSION_CODES.P)
object: BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int, errString: CharSequence?) {
super.onAuthenticationError(errorCode, errString)
notifyUser("Authentication error: $errString")
}
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult?) {
super.onAuthenticationSucceeded(result)
notifyUser("Authentication Success!")
startActivity(Intent(this@MainActivity, Secret::class.java))
}
}
@RequiresApi(Build.VERSION_CODES.P)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkBiometricSupport()
val button = findViewById<Button>(R.id.btn_authenticate)
button.setOnClickListener{
val biometricPrompt : BiometricPrompt = BiometricPrompt.Builder(this)
.setTitle("Title")
.setSubtitle("Authenticaion is required")
.setDescription("Fingerprint Authentication")
.setNegativeButton("Cancel", this.mainExecutor, DialogInterface.OnClickListener { dialog, which ->
}).build()
biometricPrompt.authenticate(getCancellationSignal(), mainExecutor, authenticationCallback)
}
}
private fun notifyUser(message: String) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
private fun getCancellationSignal(): CancellationSignal {
cancellationSignal = CancellationSignal()
cancellationSignal?.setOnCancelListener {
notifyUser("Authentication was cancelled by the user")
}
return cancellationSignal as CancellationSignal
}
private fun checkBiometricSupport(): Boolean {
val keyguardManager : KeyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if(!keyguardManager.isKeyguardSecure) {
notifyUser("Fingerprint hs not been enabled in settings.")
return false
}
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.USE_BIOMETRIC) !=PackageManager.PERMISSION_GRANTED) {
notifyUser("Fingerprint hs not been enabled in settings.")
return false
}
return if (packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
true
} else true
}
}
我们已经完成了!
让我们运行我们的应用程序。

总结
我们已经学会了如何在Android应用程序中实现生物识别技术。我们也知道了使用生物识别技术的优点和缺点。