Captura de huellas
Introducción
La captura de huellas se realiza con el Phingers Component.
Este componente se encarga de realizar la captura de las huellas de los dedos (fingerprints) del usuario y la posterior extracción de las plantillas. Sus principales procesos son:
Gestión interna de cámara y permisos.
Diferentes modos de extracción: extracción de los cuatro dedos de la mano (excepto el pulgar), extracción únicamente del pulgar, ...
Detección de vivacidad incorporada.
Asistente en los procesos de captura de las huellas.
Generación de las plantillas con las características de las huellas, imágenes y puntuaciones.
En el apartado de Lanzamiento simplificado se detallan los pasos necesarios para la integración básica del SDK. En esta sección se añade la información para el lanzamiento de este componente.
Dependencia
La dependencia específica del componente es:
implementation "com.facephi.androidsdk:phingers_component:$version"Controladores disponibles
Controlador
Descripción
PhingersController
Controlador principal de captura de huellas
Lanzamiento simplificado
Una vez iniciado el SDK y creada una nueva operación se podrá lanzar el componente. Se podrá hacer uso de cualquiera de sus controladores para ejecutar su funcionalidad.
Lanzamiento de la captura:
Configuración básica
Para lanzar el componente actual, se deberá crear un objeto PhingersConfigurationData que será la configuración del controlador del componente.
La configuración básica necesaria para es la siguiente:
Las diferentes orientaciones son:
CaptureOrientation.LEFT
CaptureOrientation.RIGHT
Los diferentes filtros son:
FingerFilter.SLAP
FingerFilter.ALL_4_FINGERS_ONE_BY_ONE
FingerFilter.ALL_5_FINGERS_ONE_BY_ONE
FingerFilter.INDEX_FINGER
FingerFilter.MIDDLE_FINGER
FingerFilter.RING_FINGER
FingerFilter.LITTLE_FINGER
FingerFilter.THUMB_FINGER
Recepción del resultado
El lanzamiento devolverá la información en formato SdkResult. Pudiendo diferenciarse entre un lanzamiento correcto y uno incorrecto:
Recepción de errores
Los errores se devolverán como un objeto 'PhingersError'.
Listado de errores:
PHG_ACTIVITY_RESULT_ERROR: El resultado de la actividad es incorrecto.
PHG_ACTIVITY_RESULT_MSG_ERROR: El resultado de la actividad en el msg es incorrecto.
PHG_APPLICATION_CONTEXT_ERROR: El contexto de aplicación necesario es nulo.
PHG_CANCEL_BY_USER: El usuario ha cancelado el proceso.
PHG_CANCEL_LAUNCH: Se ha hecho una cancelación general del SDK.
PHG_COMPONENT_LICENSE_ERROR: La licencia del componente no es correcta.
PHG_EMPTY_LICENSE: El String de licencia está vacío.
PHG_FETCH_DATA_ERROR: Error en la recogida del resultado.
PHG_FLOW_ERROR: Error en el proceso de flow.
PHG_INITIALIZATION_ERROR: Error de inicialización.
PHG_INTERNAL_ERROR: Error interno.
PHG_LOW_QUALITY: Baja calidad de la imagen.
PHG_MANAGER_NOT_INITIALIZED: Los managers son nulos.
PHG_OPERATION_NOT_CREATED: No hay ninguna operación en curso.
PHG_PERMISSION_DENIED: El usuario ha rechazado los permisos.
PHG_PHINGERS_AUTOFOCUS_FAILURE: Fallo del autofocus.
PHG_PHINGERS_CAMERA_FAILURE: Fallo de la cámara.
PHG_PHINGERS_CAPTURE_FAILURE: Fallo en la captura de la imagen.
PHG_PHINGERS_CONFIGURATION_FAILURE: Error de configuración.
PHG_PHINGERS_FINGERPRINT_CAPTURE_FAILURE: Fallo en la captura de huellas.
PHG_PHINGERS_FINGERPRINT_TEMPLATE_IO_ERROR: Fallo IO
PHG_PHINGERS_LICENSING_FAILURE: Error de licencia
PHG_PHINGERS_LIVENESS_FAILURE: Error en la prueba de vida
PHG_PHINGERS_NO_FINGERS_DETECTED: Error en la detección de huellas
PHG_PHINGERS_UNIQUE_USER_ID_NOT_SPECIFIED: Usuario no especificado.
PHG_TIMEOUT: Timeout en el proceso.
Recepción del resultado correcto - data
En la parte de data, dispondremos de la clase PhingersResult.
El resultado devuelve las imágenes en formato SdkImage, es posible extraer el bitmap accediendo a image.bitmap. Si se quisiera convertir a base64 se puede utilizar la función:
Base64.encodeToString(this.toByteArray(), Base64.NO_WRAP)
Los campos devueltos en el resultado son los siguientes:
rawFingerprintImage
Devuelve la imagen de la huella actual en crudo, sin modificar.
processedFingerprintImage
Devuelve la imagen de la huella procesada.
wsq
Se devuelve la captura de huella en formato WSQ.
fingerprintTemplate
Devuelve la plantilla en bruto que se genera después del proceso de extracción. Válida para el proceso de AUTHENTICATION.
nfiqMetrics
Son las métricas de la captura. Actualmente se devuelve el siguiente valor:
nfiqMetric: Es un valor entero, entre 1 y 5 (ambos inclusive), que indica la calidad de la captura de huella, siendo 1 el valor que indica la calidad más alta y 5 la peor calidad. Las huellas con este último valor suelen ser descartadas para posteriores validaciones.
fullFrameImage
Devuelve una imagen recortada centrada en la cara del usuarioen formato string Base64. Esta imagen se obtiene a partir de la bestImage. Ésta es la imagen que se deberá utilizar como imagen característica del usuario que realizó el proceso a modo de avatar.
focusQuality
Devuelve la mejor imagen extraída del proceso de autenticación en formato string Base64. Esta imagen es la imagen con el tamaño original extraída de la cámara. Válido para el proceso de liveness.
livenessConfidence
Devuelve un indicador del nivel de confianza de la captura.
Información avanzada
Este apartado amplía la información del componente.
Configuración avanzada del componente
Para lanzar el componente actual, se deberá crear un objeto PhingersConfigurationData que será la configuración del controlador del componente.
A continuación se detallan todos los campos que forman parte de esta clase.
reticleOrientation
Establece el modo de detección de huellas e indica qué dedos se van a detectar durante el proceso. Los valores permitidos son:
LEFT: Se activa la captura de los cuatro dedos de la mano izquierda.
RIGHT: Se activa la captura de los cuatro dedos de la mano izquierda.
useFlash
Activa o desactiva el flash de la cámara durante el proceso de captura de huellas. Por defecto se encuentra a true.
returnProcessedImage
Si se establece a true se devolverá en el resultado las imágenes procesadas.
returnRawImage
Si se establece a true se devolverá en el resultado las imágenes de la misma forma en que se han capturado.
useLiveness
Activa o desactiva el detector de vivacidad durante el proceso de captura de huellas. Por defecto se encuentra a true.
returnFullFrameImage
Especifica si se debe devolver la imagen completa de la cámara en la que se han detectado los dedos.
extractionTimeout
Establece un tiempo de extracción.
showTutorial
Indica si el componente activa la pantalla de tutorial. En esta vista se explica de forma intuitiva cómo se realiza la captura.
threshold
El parámetro configura un captureQualityThreshold, para definir un threshold de calidad para realizar la captura.
showSpinner
Indica si se quiere mostrar el spinner de carga.
cropWidth
Indica un ancho para realizar un recorte de la captura.
cropHeight
Indica una altura para realizar un recorte de la captura.
cropFactor
Indica la relación para el recorte de la captura.
showDiagnostic
Mostrar pantallas de diagnóstico al final del proceso
showPreviousTip
Muestra una pantalla previa al lanzamiento de la captura con información sobre el proceso a realizar y un botón para el lanzamiento.
fingerFilter
Filtro para elegir la mano entera o un dedo en concreto: SLAP, INDEX_FINGER, MIDDLE_FINGER, RING_FINGER, LITTLE_FINGER, THUMB_FINGER.
Personalización del componente
Aparte de los cambios que se pueden realizar a nivel de SDK (los cuales se explican en el documento de Personalización del SDK), este componente en concreto permite la modificación de su interfaz.
Textos
Si se desea modificar los textos de la SDK habría que incluir el siguiente fichero XML en la aplicación del cliente, y modificar el valor de cada String por el deseado.
Animaciones
Si se desea modificar las animaciones (lottie) de la SDK habría que incluir las animaciones con el mismo nombre en la carpeta res/raw/ de la aplicación.
Vistas externas
Es posible modificar completamente las pantallas del componente manteniendo su funcionalidad y navegación. Para ello deben implementarse los interfaces siguientes:
Pantalla de tip previo:
Pantalla de diagnóstico de error:
Una vez creadas las clases que implementan los interfaces, en el lanzamiento del componente se podrá añadir el parámetro "customViews" para que se utilicen en el SDK.
Last updated