Здравствуйте.
Можно ли в Java получить уникальный идентификатор, или хэш (короче грубо говоря последовательность байтов) от пальца при работе с Android Fingerprint API?
Fingerprint Api в Android не отдаёт никаких данных о снятом отпечатке. Вся работа с ним происходит исключительно внутри SDK.
К тому же, такого понятия, как хеш (уид) для отпечатка пальца не существует. При снятии отпечатка, он переводится в набор характерных признаков, называемых минуши (количество, характер линий, координаты, углы излома). При следующем сканировании набор этих признаков будет другим, так как мы можем сдвинуть палец, приложить его под другим углом и т.д. При сравнении наборов, ищутся соответствия признаков и если их количество превышает определённый порог, то считается, что отпечатки идентичны.
Таким образом, даже если преобразовать исходный отпечаток в некий УИД, он будет бесполезен, потому что практически никогда не будет совпадать с полученным УИД при повторном сканировании.
Не совсем согласен с предыдущим ответом, так как можно сказать, что у отпечатка пальцев в системе есть ID. Например, если вывести содержимое файла /data/system/users/0/settings_fingerprint.xml
, то можно увидеть следующее:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<fingerprints>
<fingerprint fingerId="1" name="Lex 1" groupId="0" deviceId="0" />
<fingerprint fingerId="2" name="Lex 2" groupId="0" deviceId="0" />
<fingerprint fingerId="3" name="Lex 3" groupId="0" deviceId="0" />
<fingerprint fingerId="4" name="Lex 4" groupId="0" deviceId="0" />
</fingerprints>
А если взглянуть на исходники fingerprintd
, то можно увидеть в методе void FingerprintDaemonProxy::hal_notify_callback(const fingerprint_msg_t *msg)
такой фрагмент кода.
case FINGERPRINT_AUTHENTICATED:
ALOGD("onAuthenticated(fid=%d, gid=%d)",
msg->data.authenticated.finger.fid,
msg->data.authenticated.finger.gid);
if (msg->data.authenticated.finger.fid != 0) {
const uint8_t* hat = reinterpret_cast<const uint8_t *>(&msg->data.authenticated.hat);
instance->notifyKeystore(hat, sizeof(msg->data.authenticated.hat));
}
callback->onAuthenticated(device,
msg->data.authenticated.finger.fid,
msg->data.authenticated.finger.gid);
break;
UPD#1
Для желающих более подробно разобраться с механизмом работы fingerprint
в Android рекомендую прочитать эту работу.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть логин activity - а, после логгирования юзер попадает в Activity -b, при сворачивании приложения и открытии ,снова открыватеся activity -a, но каждый...
Методы которые предлагает Context открывают sharedPreferences только из папки пакета приложения, а что, если мне нужно открыть такой файл из внешнего...
Есть таблица со столбцом boolean, нужно подсчитать кол-во выбранных строк, когда boolean = true, и это кол-во занести в переменнуюНашел индексы строк...