Android M FingerprintManager.isHardwareDetected () devuelve falso en un Samsung Galaxy S5

Acabo de actualizar una Verizion Samsung Galaxy S5 (SM-G900V) a la versión G900VVRU2DPD1 a través de las instrucciones de manual listadas en http://www.androidofficer.com/2016/06/g900vvru2dpd1-android-601-marshmallow.html

Cuando ejecuto el código a continuación, isHardwareDetected () devuelve 'false'. Me esperaba que volver 'verdad'.

El Googling que he hecho no dio lugar a ninguna información de una manera u otra en cuanto a la S5 lector de huellas digitales que se apoya en Marshmallow.

¿Alguien tiene alguna información sobre el lector de huellas dactilares del S5?

FingerprintManager manager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE); if (manager != null) { if (ActivityCompat.checkSelfPermission(this, permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { retVal.append(INDENT).append("Fingerprint permission was not granted") .append(EOL); } else { retVal.append(INDENT).append("Fingerprint hardware detected: ") .append(manager.isHardwareDetected()).append(EOL); retVal.append(INDENT).append("Has Enrolled Fingerprint(s): ") .append(manager.hasEnrolledFingerprints()).append(EOL); } } else { retVal.append(INDENT).append("no FingerprintManager available").append(EOL); } 

Finalmente resuelto. Parece que la API predeterminada de Android no es capaz de manejar algunos dispositivos Samsung, por lo que la solución es agregar las bibliotecas de Samsung para este problema.

Puede encontrar documentación y bibliotecas aquí: http://developer.samsung.com/galaxy/pass

Después de agregar las bibliotecas, tiene que agregar un nuevo permiso a su manifiesto:

 <uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" /> 

Y finalmente, usted podría utilizar este método:

 private boolean isFingerprintSupported() { boolean isFingerprintSupported = fingerprintManager != null && fingerprintManager.isHardwareDetected(); if (!isFingerprintSupported && SsdkVendorCheck.isSamsungDevice()) { Spass spass = new Spass(); try { spass.initialize(context); isFingerprintSupported = spass.isFeatureEnabled(Spass.DEVICE_FINGERPRINT); } catch (SsdkUnsupportedException | UnsupportedOperationException e) { // Error handling } } return isFingerprintSupported; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.