Какие устройства Samsung не поддерживают собственный API отпечатков пальцев Android?

Я предполагаю, что никакие телефоны с ОС до версии Marshmallow не поддерживают API отпечатков пальцев.

Мои вопросы:

(а) Все ли / любые телефоны Samsung, выпущенные с зефиром, поддерживают API отпечатков пальцев Android.

(b) Поддерживают ли какие-либо телефоны Samsung, ОС которых обновлена ​​до версии Marshmallow, API отпечатков пальцев Android?

Я читал это:

Сканер отпечатков пальцев не обнаруживается при использовании Android 6.0 Fingerprint API на Samsung S5

Отпечаток пальца Samsung galaxy note 4 не найден

Android FingerPrint API isHardwareDetected возвращает false для Samsung Note 4

Устройства с датчиком отпечатков пальцев выше 6.0 которые не используют Android fingerprint SDK

но однозначных ответов нет. Также на веб-сайте samsung упоминается, что все устройства samsung поддерживают Pass SDK, но не упоминает поддержку API отпечатков пальцев Android.


comment
Да, поддерживает .. Я пробовал играть с ними пару месяцев назад   -  person Akshay    schedule 04.08.2017
comment
да, но какие все устройства не поддерживают API Android? Кажется, что разные люди имеют разный опыт в зависимости от рассматриваемой модели и версии Android на ней.   -  person ColonD    schedule 04.08.2017
comment
Я пробовал это на s7 marshmallow .. на каком устройстве вы хотите, чтобы он работал?   -  person Akshay    schedule 04.08.2017
comment
Это для приложения, которое я публикую. Я хотел бы знать, на каких устройствах это не работает, потому что у моих пользователей, вероятно, будут немного более старые телефоны (не знаю, какие все у них будут). поэтому я хотел бы обеспечить максимальную совместимость. если количество телефонов велико, я постараюсь обеспечить поддержку как для Pass SDK, так и для Android API.   -  person ColonD    schedule 04.08.2017
comment
Также было бы хорошо для устранения неполадок, если какие-либо пользователи сообщают, что не могут использовать эту функцию, я могу знать, является ли это ошибкой или нет.   -  person ColonD    schedule 04.08.2017
comment
Вы ориентируетесь только на samsung ... если да, напишите на форуме developer.samsung.com   -  person Akshay    schedule 04.08.2017
comment
Нет. Все телефоны. Я, вероятно, мог бы использовать обертку для обоих, если нет ответа. Думаю, у Nexus тоже есть собственный SDK   -  person ColonD    schedule 04.08.2017


Ответы (3)


В результате моего небольшого расследования я обнаружил следующее. Pass API поможет с устройствами Samsung, у которых до Android 6 был fingerprint api. Это устройства 2014 года выпуска с отпечатком пальца. Список устройств можно найти здесь. https://en.wikipedia.org/wiki/Samsung_Galaxy Основные устройства:

  1. Samsung Galaxy s5 (и его модификации mini, plus)
  2. Samsung Galaxy Note 4 (примечание 4 край)

Они не поддерживают стандартный API Google FingerPrint даже после обновления Android до версии 6.

person Stanislav Mukhametshin    schedule 09.10.2018

После более четкого понимания требований из комментария под моим ответом, вот обновленный ответ

Pass - это SDK, отвечающий за функцию отпечатков пальцев на устройствах Samsung. Что вы можете сделать, вы можете проверить, использует ли устройство Pass SDK или нет.

Ниже приведен код для проверки:

    FingerprintManager fingerprintManager = (FingerprintManager) getApplicationContext().getSystemService(Context.FINGERPRINT_SERVICE);
    boolean isFingerprintSupported = fingerprintManager != null && fingerprintManager.isHardwareDetected();

    if (!isFingerprintSupported && SsdkVendorCheck.isSamsungDevice()) { // for samsung devices which doesn't support Native Android Fingerprint API
        Spass spass = new Spass();
        try {
            spass.initialize(context);
            isFingerprintSupported = spass.isFeatureEnabled(Spass.DEVICE_FINGERPRINT);
        } catch (SsdkUnsupportedException | UnsupportedOperationException e) {
            //Error handling here
        }
    } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // for devices which doesn't support Pass SDK

            FingerprintManager fingerprintManager = (FingerprintManager) getApplicationContext().getSystemService(Context.FINGERPRINT_SERVICE);
            if (!fingerprintManager.isHardwareDetected()) {
                // This device is not supporting fingerprint authentication     
            } else if (!fingerprintManager.hasEnrolledFingerprints()) {
                // User hasn't enrolled any fingerprints to authenticate with 
            } else {
                // Everything is ready for fingerprint authentication 
            }
        }
    }

Добавьте ниже разрешения для AndroidManifest.xml.

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

Я надеюсь, это поможет.

person Vikasdeep Singh    schedule 27.06.2018
comment
Привет, спасибо за ответ, но вопрос заключался в том, продолжает ли Samsung использовать собственный SDK для отпечатков пальцев или они перешли на собственный SDK для Android после M. Мы хотели знать этот случай для (а) устройств, которые поставлялись с M и (b ), которые были обновлены до M. Мы наконец решили игнорировать все другие SDK и просто поддерживать устройства с родным SDK. Хотя спасибо за ответ - person ColonD; 27.06.2018
comment
@ColonD благодарит за терпение и за уточнение требований. Я обновил свой ответ. Пожалуйста, посмотрите. Я думаю, вы получите от этого какой-нибудь указатель. - person Vikasdeep Singh; 27.06.2018
comment
@ColonD ты проверил мой ответ? Я не слышал от вас никаких комментариев после моего обновления. - person Vikasdeep Singh; 04.07.2018
comment
Привет, извините за это. Кажется, ваш код охватывает все основы проверки обоих API. Поскольку я занимался этим очень давно, я решил поддерживать только собственный API, поэтому я забыл об этом. Проголосовал за ваш ответ, так как он должен работать во всех случаях, связанных с телефонами Samsung :) - person ColonD; 04.07.2018
comment
@ColonD Поскольку вы изменили свое мнение, т.е. требование, но мой ответ будет охватывать все случаи, пожалуйста, примите мой ответ, чтобы он мог помочь и другим. - person Vikasdeep Singh; 04.07.2018
comment
@ColonD, кстати, мой первоначальный ответ был просто для поддержки Native API, но вы сказали, что хотите проверить Samsung SDK, поэтому я обновил свой ответ :) - person Vikasdeep Singh; 04.07.2018
comment
Еще раз спасибо за ответ. Хотя ваш ответ действительно показывает как поддерживать оба API, мой вопрос касался того, перешла ли Samsung на собственный API, чтобы мы могли решить, стоит ли поддерживать передачу вместе с родным. см. ответ Евгения Мишустина stackoverflow.com/a/51168447/8258872 - person ColonD; 04.07.2018
comment
Я уже знал как с самого начала поддерживать API отпечатков пальцев. Вопрос был в том, использовала ли Samsung в своих телефонах технологию pass over native (это было моим требованием с самого начала). - person ColonD; 04.07.2018
comment
этот ответ еще действителен? Я попытался добавить зависимости spass sdk, и студия Android не распознала его. - person Siddarth G; 17.11.2020

Я с уверенностью могу сказать вам по собственному опыту, что некоторые телефоны Samsung продолжают использовать библиотеку Spass даже на Android M и более поздних версиях. Например, сейчас я тестирую мобильную ОС: Android 6.0.1 (Galaxy Note 4 Edge). Я написал код, который выводит данные в журналы следующим образом:

   /*
    * This function evaluates which fingerprint helper should be instantiated (if any)
    */
    public static FingerprintHelper initializeFingerprintHelper(Context context){
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            FingerprintManager manager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);

            if (manager != null) {
                logger.info("Android native fingerprint manager exists");
                if (manager.isHardwareDetected()) {
                    logger.info("Android native fingerprint manager detected hardware");
                    if (manager.hasEnrolledFingerprints()) {
                        logger.info("Android native fingerprint manager has enrolled fingerprints");
                    }else{
                        logger.info("Android native fingerprint manager has no enrolled fingerprints");
                    }
                    return new AndroidFingerprintHelper(context);
                }

            }
        }
        try{
            logger.info("Android native fingerprint manager is null, trying Samsung SPASS rollback");

            Spass spass = new Spass();
            spass.initialize(context);
            if(spass.isFeatureEnabled(Spass.DEVICE_FINGERPRINT)){
                return new SamsungFingerprintHelper(context);
            }
        } catch (SsdkUnsupportedException e) {
            logger.error("Spass library is missing on the device");
        }
        return null;
    }

И из логов в консоли вижу, что хотя Версия Android на устройствах M (6.0.1) - метод

manager.isHardwareDetected()

возвращает false, и метод переходит к инициализации Spass lib, и он завершается успешно. Так что устройство определенно использует библиотеку Spass на android M.

person Evgeniy Mishustin    schedule 04.07.2018
comment
Итак, это устройство, которое выпустило pre-Marshmallow и обновлено до Marshmallow, верно? - person ColonD; 04.07.2018
comment
@ColonD, я не могу сказать это на 100%. - person Evgeniy Mishustin; 15.07.2018