Слайд 2Define
Physiological
VS
Behavioral
![Define Physiological VS Behavioral](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-1.jpg)
Слайд 3Verification (one-to-one)
Identification (one-to-many)
![Verification (one-to-one) Identification (one-to-many)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-2.jpg)
Слайд 9Deploy
Gradle:
dependencies {
implementation "androidx.biometric:biometric:1.0.1"
}
![Deploy Gradle: dependencies { implementation "androidx.biometric:biometric:1.0.1" }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-8.jpg)
Слайд 10Deploy
private lateinit var executor: Executor
private lateinit var biometricPrompt: BiometricPrompt
private lateinit var promptInfo:
![Deploy private lateinit var executor: Executor private lateinit var biometricPrompt: BiometricPrompt private](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-9.jpg)
BiometricPrompt.PromptInfo
override fun onCreate(savedInstanceState: Bundle?) {
...
executor = ContextCompat.getMainExecutor(this)
biometricPrompt = BiometricPrompt(this, executor,
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int,errString: CharSequence)
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult)
override fun onAuthenticationFailed()
}
)
Слайд 11Deploy
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using
![Deploy promptInfo = BiometricPrompt.PromptInfo.Builder() .setTitle("Biometric login for my app") .setSubtitle("Log in using](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-10.jpg)
your biometric credential")
.setNegativeButtonText("Use account password")
.build()
Слайд 12Deploy
// Allows user to authenticate using their lock screen
// PIN, pattern, or
![Deploy // Allows user to authenticate using their lock screen // PIN,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-11.jpg)
password.
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
// Cannot call setNegativeButtonText() and
// setDeviceCredentialAllowed() at the same time.
// .setNegativeButtonText("Use account password")
.setDeviceCredentialAllowed(true)
.build()
Слайд 13Deploy
// Allows user to authenticate using their lock screen
// PIN, pattern, or
![Deploy // Allows user to authenticate using their lock screen // PIN,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-12.jpg)
password.
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
// Cannot call setNegativeButtonText() and
// setDeviceCredentialAllowed() at the same time.
// .setNegativeButtonText("Use account password")
.setDeviceCredentialAllowed(true)
.build()
Слайд 14Enjoy
Cryptographic solution that depends on authentication
Authenticate using only biometric credentials
Authenticate using either
![Enjoy Cryptographic solution that depends on authentication Authenticate using only biometric credentials](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-13.jpg)
biometric or lock screen credentials
Authenticate without explicit user action
Слайд 15Update
Android 6
Android 8
Android 9
Android 10
![Update Android 6 Android 8 Android 9 Android 10](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/974130/slide-14.jpg)