Captura de impressões digitais - Phingers
Introdução
A captura de impressão digital é realizada por meio do Componente Phingers.
Este componente é responsável por capturar as impressões digitais do usuário (impressões digitais) e extrair os templates biométricos associados. Seus principais processos são:
Gerenciamento interno da câmera e das permissões.
Diferentes modos de extração: mão completa (quatro dedos sem o polegar), polegar ou dedos individuais.
Detecção de vivacidade integrada.
Assistência guiada durante o processo de captura.
Geração de templates biométricos, imagens e métricas de qualidade.
Na seção Lançamento simplificado são descritos os passos necessários para a integração básica do SDK. Nesta página é adicionada a informação específica para o uso deste componente.
Dependência
A dependência específica do componente é:
implementation "com.facephi.androidsdk:phingers_tf_component:$version"Controladores disponíveis
Controlador
Descrição
PhingersTFController
Controlador principal de captura de impressões digitais
FPhingersTFController
Controlador principal de captura de impressões digitais para integrações de flow
Lançamento simplificado
Uma vez iniciado o SDK e criada uma nova operação, o componente de captura de impressões digitais pode ser acionado usando seu controlador.
Inicialização da captura:
Configuração básica
Para lançar o componente, é necessário criar um objeto PhingersConfigurationData, que define a configuração do processo de captura.
A configuração básica necessária é a seguinte:
Orientação da captura
Define a mão a ser capturada:
CaptureOrientation.LEFTCaptureOrientation.RIGHT
Filtros de dedos
Permite definir quais dedos são capturados durante o processo:
FingerFilter.SLAPFingerFilter.ALL_4_FINGERS_ONE_BY_ONEFingerFilter.ALL_5_FINGERS_ONE_BY_ONEFingerFilter.INDEX_FINGERFingerFilter.MIDDLE_FINGERFingerFilter.RING_FINGERFingerFilter.LITTLE_FINGERFingerFilter.THUMB_FINGER
Opções de TemplateType:
NIST_TEMPLATEISO_TEMPLATENIST_T5_TEMPLATE
Recebimento do resultado
O lançamento do componente retorna um resultado no formato SdkResult, que pode corresponder a uma execução bem-sucedida ou a um erro.
Recebimento de erros
Os erros são retornados como um objeto PhingersError.
Lista de erros
PHG_ACTIVITY_RESULT_ERROR: O resultado da atividade está incorreto.
PHG_ACTIVITY_RESULT_MSG_ERROR: A mensagem do resultado da atividade está incorreta.
PHG_APPLICATION_CONTEXT_ERROR: O contexto da aplicação é nulo.
PHG_CANCEL_BY_USER: O usuário cancelou o processo.
PHG_CANCEL_LAUNCH: Cancelamento geral do SDK.
PHG_COMPONENT_LICENSE_ERROR: A licença do componente não está correta.
PHG_EMPTY_LICENSE: A string de licença está vazia.
PHG_FETCH_DATA_ERROR: Erro na coleta do resultado.
FLOW_ERROR: Erro no processo de flow.
PHG_INITIALIZATION_ERROR: Erro de inicialização.
PHG_INTERNAL_ERROR: Erro interno.
PHG_LOW_QUALITY: Baixa qualidade da imagem.
PHG_MANAGER_NOT_INITIALIZED: Os managers são nulos ou não estão inicializados.
PHG_NO_DATA_ERROR: Nenhum dado da captura foi recebido.
PHG_OPERATION_NOT_CREATED: Não há nenhuma operação em andamento.
PHG_PERMISSION_DENIED: O usuário recusou as permissões.
PHG_AUTOFOCUS_FAILURE: Falha no autofocus.
PHG_CAMERA_FAILURE: Falha na câmera.
PHG_CAPTURE_FAILURE: Falha na captura.
PHG_CONFIGURATION_FAILURE: Erro de configuração.
PHG_FINGERPRINT_CAPTURE_FAILURE: Falha na captura de impressões digitais.
PHG_FINGERPRINT_TEMPLATE_IO_ERROR: Falha de IO do template.
PHG_LICENSING_FAILURE: Erro de licença.
PHG_LIVENESS_FAILURE: Erro no teste de vida.
PHG_NO_FINGERS_DETECTED: Nenhuma impressão digital foi detectada.
PHG_UNIQUE_USER_ID_NOT_SPECIFIED: Usuário não especificado.
PHG_TIMEOUT: Timeout no processo.
PHG_FLOW_VIDEO_RECORDING_ERROR: Erro na gravação de vídeo do flow.
PHG_FLOW_TRACKING_ERROR: Erro de tracking no flow.
PHG_TRACKING_STEP_ERROR: Erro na etapa de tracking.
Recepção do resultado correto - data
Em caso de sucesso, o campo data contém um objeto PhingersResult.
As imagens são retornadas como SdkImage. É possível obter o Bitmap por meio de image.bitmap. Para converter uma imagem em Base64, pode-se utilizar:
Campos retornados
fingers: Lista de
FingerResponse(uma entrada por dedo capturado)slapImages: Lista de
SlapResponse(capturas slap quando aplicável)livenessScore: Média da pontuação de vivacidade (nullable)
recording: Metadados da gravação local opcional quando
videoRecordingEnabled=truee o widget gera um arquivo MP4. Pode sernull.
FingerResponse
position: Índice de posição do dedo
wsq: Imagem WSQ (
ByteArray)displayImage: Imagem de exibição (
ByteArray, PNG)minutiaesNumber: Número de minutiae detectadas
quality: Pontuação de qualidade
nistQuality: Pontuação de qualidade NIST
nist2Quality: Pontuação de qualidade NIST2
template: Template de impressão digital (
ByteArray)proprietaryQuality: Qualidade proprietária do fornecedor
templateType: Identificador do tipo de template
imageWidth: Largura da imagem em pixels
imageHeight: Altura da imagem em pixels
SlapResponse
position: Índice da posição do slap
image: Imagem slap (
ByteArray)
VideoRecordingResult
path: Caminho completo do arquivo de vídeo gerado.
fileName: Nome do arquivo de vídeo.
mimeType: Tipo MIME do arquivo. Por padrão
video/mp4.sizeBytes: Tamanho do arquivo em bytes, quando o widget informa.
durationMs: Duração do vídeo em milissegundos, quando o widget informa.
Informações avançadas
Configuração avançada do componente
O objeto PhingersConfigurationData permite personalizar o comportamento do componente.
Parâmetros disponíveis
reticleOrientation
Define o modo de detecção de impressões digitais e indica quais dedos serão detectados durante o processo. Os valores permitidos são:
LEFT: A captura é ativada da mão esquerda.
RIGHT: A captura é ativada da mão direita.
fingerFilter
Filtro para escolher a mão inteira ou um dedo específico: SLAP, INDEX_FINGER, MIDDLE_FINGER, RING_FINGER, LITTLE_FINGER, THUMB_FINGER.
templateType
Define o formato do template a ser gerado (variantes NIST/ISO).
useLiveness
Ativa ou desativa o detector de vivacidade durante o processo de captura de impressões digitais. Por padrão ele está em true.
extractionTimeout
Define um tempo de extração.
showPreviousTip
Mostra uma tela anterior ao lançamento da captura com informações sobre o processo a ser realizado e um botão para o lançamento.
showTutorial
Indica se o componente ativa a tela de tutorial. Nessa visualização é explicado de forma intuitiva como a captura é realizada.
showDiagnostic
Exibir telas de diagnóstico ao final do processo.
threshold
O parâmetro configura um captureQualityThreshold, para definir um threshold de qualidade para realizar a captura. O SDK limita esse valor ao intervalo 0.0-1.0.
showEllipses
Mostra as elipses durante a captura.
cropWidth
Indica uma largura para realizar um recorte da captura.
cropHeight
Indica uma altura para realizar um recorte da captura.
vibrationEnabled
Ativa a vibração. Por padrão true.
enableFlash
Ativa ou desativa o flash da câmera durante o processo de captura de impressões digitais. Por padrão ele está em true.
reticle
Identificador opcional do retículo. Por padrão "R_S".
showPreviousFingerSelector
Mostra o seletor de dedos antes da captura.
fingerSelectorHandOrientation
Define qual(is) mão(s) são exibidas no seletor (LEFT, RIGHT, BOTH).
fingerSelectorOptions
Define a lista de filtros que são exibidos no seletor. Se estiver vazia, o SDK usa: ALL_4_FINGERS_ONE_BY_ONE, SLAP, INDEX_FINGER.
licenseKey
Chave de licença opcional que é passada ao widget Phingers TF quando são usadas ativação ou licenciamento específico.
product
Produto opcional associado à ativação ou ao licenciamento do widget.
operationId
Identificador opcional de operação que é enviado ao widget para rastreabilidade e associação da captura.
videoRecordingEnabled
Ativa a gravação local opcional durante a captura de impressões digitais. Por padrão false.
videoRecordingDirectoryPath
Diretório de destino opcional para o arquivo de vídeo gerado.
videoRecordingFileName
Nome de arquivo opcional para a gravação gerada.
videoRecordingQuality
Qualidade da gravação local. Os valores permitidos são LOW, MEDIUM e HIGH. Por padrão MEDIUM.
Personalização do componente
Além das alterações que podem ser feitas no nível do SDK (as quais são explicadas no documento de Personalização do SDK), este componente em específico permite a modificação de sua interface.
Textos
Os textos podem ser personalizados adicionando um arquivo XML de recursos na aplicação cliente e sobrescrevendo os valores padrão.
Animações
As animações do componente são Lottie (JSON).
Para substituí-las, adicione os arquivos com o mesmo nome na pasta res/raw/ da aplicação:
Se não forem incluídas animações personalizadas, as animações padrão serão usadas.
Atualizado