Сканирование отпечатков пальцев
Теперь, когда мы видели, как подготовить приложение Xamarin.Android для использования проверки подлинности отпечатков пальцев, давайте вернемся к FingerprintManager.Authenticate
методу и обсудим его место в проверке подлинности отпечатков пальцев Android 6.0. Краткий обзор рабочего процесса для проверки подлинности по отпечаткам пальцев:
- Вызов
FingerprintManager.Authenticate
, передачаCryptoObject
и экземпляраFingerprintManager.AuthenticationCallback
.CryptoObject
используется, чтобы убедиться, что результат проверки подлинности по отпечаткам пальцев не был изменен. - Подкласс класса FingerprintManager.AuthenticationCallback. Экземпляр этого класса будет предоставлен для
FingerprintManager
при запуске проверки подлинности по отпечаткам пальцев. После завершения сканирования отпечатков пальцев он будет вызывать один из методов обратного вызова для этого класса. - Написание кода для обновления пользовательского интерфейса, чтобы сообщить пользователю о том, что устройство запустило сканер отпечатков пальцев и ожидает взаимодействия с пользователем.
- По завершении сканирования отпечатков пальцев Android вернет результаты в приложение, вызвав метод на экземпляре
FingerprintManager.AuthenticationCallback
, который был предоставлен на предыдущем шаге. - Приложение будет уведомлять пользователя о результатах проверки подлинности по отпечаткам пальцев и реагировать на результаты надлежащим образом.
В следующем фрагменте кода приведен пример метода в действии, который начнет сканирование отпечатков пальцев:
protected void FingerPrintAuthenticationExample()
{
const int flags = 0; /* always zero (0) */
// CryptoObjectHelper is described in the previous section.
CryptoObjectHelper cryptoHelper = new CryptoObjectHelper();
// cancellationSignal can be used to manually stop the fingerprint scanner.
cancellationSignal = new Android.Support.V4.OS.CancellationSignal();
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(this);
// AuthenticationCallback is a base class that will be covered later on in this guide.
FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new MyAuthCallbackSample(this);
// Start the fingerprint scanner.
fingerprintManager.Authenticate(cryptoHelper.BuildCryptoObject(), flags, cancellationSignal, authenticationCallback, null);
}
Давайте рассмотрим каждый из этих параметров в методе Authenticate
более подробно:
- Первый параметр — это криптографический объект, который сканер отпечатков пальцев будет использовать для проверки подлинности результатов сканирования отпечатков пальцев. Этот объект может быть
null
, в этом случае приложение должно быть надежным и результаты сканирования отпечатка пальца не должны быть изменены. Рекомендуется создавать экземплярыCryptoObject
и предоставлять ихFingerprintManager
, а не NULL. В статье Создание CryptObject объясняется, как создать экземплярCryptoObject
на основеCipher
. - Второй параметр всегда равен нулю. Документация по Android определяет его как набор флагов и, скорее всего, он зарезервирован для использования в будущем.
- Третий параметр,
cancellationSignal
— это объект, используемый для отключения сканера отпечатков пальцев и отмены текущего запроса. Это Android CancellationSignal, а не тип из .NET Framework. - Четвертый параметр является обязательным и является классом, подклассом которого является абстрактный класс
AuthenticationCallback
. Методы в этом классе будут вызываться для передачи клиентам сигнала о завершении работыFingerprintManager
и о ее результатах. О реализацииAuthenticationCallback
доступно множество информации, поэтому она будет изложена в отдельном разделе. - Пятый параметр является необязательным экземпляром
Handler
. Если объектHandler
предоставлен,FingerprintManager
будет использоватьLooper
из этого объекта при обработке сообщений с устройства для сканирования отпечатков пальца. Как правило, не требуется предоставлятьHandler
, и FingerprintManager будет использоватьLooper
из приложения.
Отмена сканирования отпечатков пальцев
Может потребоваться, чтобы пользователь (или приложение) отменил сканирование отпечатков пальцев после запуска. В этом случае вызовите метод IsCancelled
на CancellationSignal
, который был предоставлен для FingerprintManager.Authenticate
при вызове для запуска сканирования отпечатков пальцев.
Теперь, когда мы видели метод Authenticate
, давайте внимательнее рассмотрим некоторые наиболее важные параметры. Сначала обратим внимание на статью Ответ на обратные вызовы проверки подлинности, в которой обсуждается подкласс FingerprintManager.AuthenticationCallback, который позволяет приложению Android реагировать на данные, предоставленные сканером отпечатков пальцев.