Java 在像素4XL上检测生物特征失败,生物特征错误不可用

Java 在像素4XL上检测生物特征失败,生物特征错误不可用,java,android,androidx,android-biometric,Java,Android,Androidx,Android Biometric,在像素4XL(安卓Q)上测试生物识别失败,返回生物识别错误\u HW\u不可用 我已经设置了人脸识别 Android清单文件 <uses-permission android:name="android.permission.USE_BIOMETRIC" /> 测试代码 private boolean setBIOSetup() { BiometricManager biometricManager = BiometricManager.from(getActivity()

在像素4XL(安卓Q)上测试生物识别失败,返回
生物识别错误\u HW\u不可用

我已经设置了人脸识别

Android清单文件

<uses-permission android:name="android.permission.USE_BIOMETRIC" />
测试代码

private boolean setBIOSetup() {
    BiometricManager biometricManager = BiometricManager.from(getActivity());
    switch (biometricManager.canAuthenticate()) {
        case BiometricManager.BIOMETRIC_SUCCESS:
            return true; 
        case BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE:
            Toast.makeText(getActivity(), "No biometric hardware installed", 
                           Toast.LENGTH_LONG).show(); 
         case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE: 
             Toast.makeText(getActivity(), "Biometric hardware unavailable.", 
                            Toast.LENGTH_LONG).show();
              break; 
         case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED: 
             Toast.makeText(getActivity(), "No biometrics enrolled", Toast.LENGTH_LONG).show(); 
             break;
    } 
    return false; 
}
在像素2XL上,它返回指纹生物识别的
生物识别\u成功

但对于Pixel 4XL,它返回
生物识别错误\u HW\u不可用

Pixel 4和4 XL没有任何指纹传感器,只有面部解锁

您已经针对库提交了一个bug,请参阅问题
您应该按照他们的建议运行
adb bugreport foo.zip

.canAuthenticate()
至少说明了三个先决条件:

确定是否可以使用生物识别技术,或是否可以等效地显示生物识别提示

  • 可用硬件
  • 注册模板
  • 用户启用
如果它确实是一个bug,您将不得不等到androidx.biometric:biometric:1.0.2发布

private boolean setBIOSetup() {
    BiometricManager biometricManager = BiometricManager.from(getActivity());
    switch (biometricManager.canAuthenticate()) {
        case BiometricManager.BIOMETRIC_SUCCESS:
            return true; 
        case BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE:
            Toast.makeText(getActivity(), "No biometric hardware installed", 
                           Toast.LENGTH_LONG).show(); 
         case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE: 
             Toast.makeText(getActivity(), "Biometric hardware unavailable.", 
                            Toast.LENGTH_LONG).show();
              break; 
         case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED: 
             Toast.makeText(getActivity(), "No biometrics enrolled", Toast.LENGTH_LONG).show(); 
             break;
    } 
    return false; 
}