2016-06-21 14 views
12

Właśnie uaktualniania Verizion Samsung Galaxy S5 (SM-G900V) do wersji G900VVRU2DPD1 poprzez Instrukcji wymienionych w http://www.androidofficer.com/2016/06/g900vvru2dpd1-android-601-marshmallow.htmlAndroid M FingerprintManager.isHardwareDetected() zwraca wartość false na Samsung Galaxy S5

gdy uruchomię kod poniżej, isHardwareDetected() zwraca "false". Spodziewam się, że zwróci "true".

Googling, którego dokonałem, nie przyniosło żadnych informacji w ten czy inny sposób, co czytnik linii papilarnych S5 obsługiwany przez Marshmallow.

Czy ktoś ma jakieś informacje na temat obsługiwanego czytnika linii papilarnych 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); 
    } 
+0

Czy rozwiązałeś ten problem? Mam ten sam problem – Miguel

Odpowiedz

8

W końcu rozwiązany. Wygląda na to, że domyślne API Androida nie jest w stanie obsłużyć niektórych urządzeń Samsung, więc rozwiązaniem jest dodanie bibliotek Samsunga dla tego problemu.

można znaleźć dokumentację i biblioteki tutaj: http://developer.samsung.com/galaxy/pass

Po dodać biblioteki, trzeba dodać nowe pozwolenie na swoim manifeście:

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

I wreszcie, można użyć tej metody :

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; 
} 
+0

Hej Miguel, czy to działa na inne urządzenia firmy innej niż Samsung? – Kennedy

+1

@Kennedy nie, http://developer.samsung.com/galaxy/pass mówi o tym, jakie urządzenia mogą korzystać z ich SDK: "Każde urządzenie Samsung Mobile obsługujące czujnik odcisków palców i usługę Fingerprint Service z systemem Android 4.2 (Jelly Bean API 17) i powyżej." – Jules

Powiązane problemy