0

我目前正在使用生物识别管理器和生物识别提示在 google pixel 2 上创建指纹认证应用程序。下面的代码适用于该应用程序。但是,我想知道如果我改为在 google pixel 4 上开发,我是否仍然可以使用生物识别管理器/生物识别提示进行面部识别而不是指纹来进行身份验证?在相同的前提下,设备的注册面孔可能是唯一的登录面孔。任何帮助或解释都会非常感谢!

      // 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;

                        }
                    });

                }
4

0 回答 0