В настоящее время я использую диспетчер biometri c и приглашение biometri c для создания приложения аутентификации по отпечатку пальца на пикселе Google 2. Код ниже предназначен для этого приложения. Однако мне было интересно, если бы я вместо этого перешел на разработку на пикселе 4 Google, могу ли я по-прежнему использовать подсказку biometri c manager / biometri c для распознавания лица вместо аутентификации по отпечатку пальца? Та же предпосылка, в которой зарегистрированное лицо на устройстве может быть единственным лицом для входа в систему. Любая помощь или объяснение было бы здорово, спасибо!
// Building the fingerprint scanner
final Executor executor = Executors.newSingleThreadExecutor();
final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(this)
.setTitle("Biosecure")
.setSubtitle("Fingerprint Authentication")
.setDescription("Please scan your fingerprint")
.setNegativeButton("cancel", executor, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).build();
// Scanning fingerprint
btnScanFinger.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
biometricPrompt.authenticate(new CancellationSignal(), executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
}
@Override
public void onAuthenticationHelp(int helpCode, final CharSequence helpString) {
super.onAuthenticationHelp(helpCode, helpString);
}
@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
activity.runOnUiThread(new Runnable() {
@Override
public void run()
{
Toast.makeText(Login_Biometrics.this, "Fingerprint authenticated successfully", Toast.LENGTH_LONG).show();
fingerprintAuth = true;
please.setText("Please input your pin");
fingerprint.setVisibility(View.INVISIBLE);
btnScanFinger.setVisibility(View.INVISIBLE);
PinInput.setVisibility(View.VISIBLE);
}
});
}
Решение:
Используйте тот же код, измененный для распознавания лиц на устройстве, которое использует аутентификацию лица для разблокировки. Я использовал Google Pixel 4. Не забудьте добавить разрешения на использование биометрии.
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
// Building the fingerprint scanner
final Executor executor = Executors.newSingleThreadExecutor();
final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(this)
.setTitle("Biosecure")
.setSubtitle("Face Authentication")
.setDescription("Please scan your face")
.setNegativeButton("cancel", executor, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).build();
btnScanFinger.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
biometricPrompt.authenticate(new CancellationSignal(), executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
}
@Override
public void onAuthenticationHelp(int helpCode, final CharSequence helpString) {
super.onAuthenticationHelp(helpCode, helpString);
}
@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
activity.runOnUiThread(new Runnable() {
@Override
public void run()
{
Toast.makeText(MainActivity.this, "Face scanned succesfully", Toast.LENGTH_LONG).show();
fingerprintAuth = true;
}
});
}