Biometric para Kotlin: guía completa con ejemplos prácticos
La autenticación biométrica se ha convertido en una parte esencial de las aplicaciones móviles modernas. Permite a los usuarios verificar su identidad mediante huella dactilar, escáner facial o iris, lo que resulta mucho más cómodo y seguro que escribir contraseñas. La librería Biometric para Kotlin (parte de AndroidX) proporciona una API unificada para trabajar con todos los sensores biométricos en dispositivos Android.
¿Por qué usar esta librería? Primero, abstrae al desarrollador de las diferencias en la implementación de sensores biométricos entre fabricantes. Segundo, maneja automáticamente escenarios donde la biometría no está disponible (por ejemplo, el dispositivo no tiene escáner) o está bloqueada. Tercero, se integra estrechamente con Android Keystore, permitiendo crear claves criptográficamente seguras que solo se pueden usar tras una autenticación exitosa del usuario.
En este artículo, analizaremos en detalle todos los aspectos del trabajo con la librería Biometric para Kotlin: desde la instalación y un ejemplo mínimo hasta técnicas avanzadas y errores típicos. Aprenderás cómo agregar autenticación biométrica a tu aplicación, haciéndola segura y fácil de usar.
Instalación
Para usar la librería Biometric en tu proyecto Android con Kotlin, agrega la siguiente dependencia en el archivo build.gradle (a nivel de módulo):
dependencies {
implementation("androidx.biometric:biometric:1.2.0-alpha05")
}
Asegúrate también de declarar el permiso para usar sensores biométricos en el archivo AndroidManifest.xml:
Si tu aplicación está orientada a Android 12 (API 31) o superior, se recomienda agregar también el permiso para determinar con precisión el tipo de biometría:
Inicio rápido: ejemplo mínimo funcional
Vamos a crear una Activity simple que, al presionar un botón, inicie la autenticación biométrica y muestre el resultado en un Toast.
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricPrompt
import androidx.core.content.ContextCompat
import java.util.concurrent.Executors
class MainActivity : AppCompatActivity() {
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo: BiometricPrompt.PromptInfo
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val authButton: Button = findViewById(R.id.auth_button)
// Verificamos si la biometría está disponible en el dispositivo
val biometricManager = BiometricManager.from(this)
when (biometricManager.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG)) {
BiometricManager.BIOMETRIC_SUCCESS -> {
// Biometría disponible, configuramos el diálogo
setupBiometricPrompt()
}
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE -> {
Toast.makeText(this, "El dispositivo no tiene sensor biométrico", Toast.LENGTH_LONG).show()
}
BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE -> {
Toast.makeText(this, "El sensor biométrico no está disponible temporalmente", Toast.LENGTH_LONG).show()
}
BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED -> {
Toast.makeText(this, "No hay datos biométricos registrados También en la biblioteca
Biblioteca estándar de Kotlin: una visión completa
Monitoreo de aplicaciones C++: bibliotecas y herramientas para la recopilación de métricas
toml++ para C++: guía completa con ejemplos prácticos
Geolocalización y mapas en Java: bibliotecas, API y ejemplos de código