Можете ли вы использовать диспетчер biometri c и приглашение biometri c для распознавания лиц? - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я использую диспетчер 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;

                        }
                    });

                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...