For the complete documentation index, see llms.txt. This page is also available as Markdown.

PassiveFaceLiveness (Obsoleto)

Câmera inteligente que captura uma selfie confiável do seu usuário usando inteligência artificial, capaz de detectar e reprovar fotos instantâneas e gravações. Ideal para o seu onboarding.

Tamanho do SDK

Um máximo de cerca de 3,5 MB, que pode diminuir por causa de estes elementos.

Analytics

Nossos SDKs, por padrão coletam informações sobre o usuário e o ambiente de execução para mapear melhor os fraudadores e entender seus comportamentos. Recomendamos manter essa coleta ativa, pois a única finalidade desses dados é reduzir fraudes, mas, se desejar, você pode desativá-la em .setAnalyticsSettings(boolean useAnalytics) parâmetro.

Permissões em tempo de execução

Permissão
Motivo
Obrigatório

CAMERA

Para capturar a selfie do usuário

Sim

Instanciando o SDK

Primeiro, crie um objeto do tipo PassiveFaceLiveness. Este objeto serve para configurar todas as regras de negócio do SDK:

PassiveFaceLiveness mPassiveFaceLiveness = new PassiveFaceLiveness.Builder(String mobileToken)
    // veja a tabela abaixo
    .build();

Todos os parâmetros anotados com @Nullable podem receber null como valor, o que é útil se você quiser definir apenas um dos parâmetros de um único método.

Método do Builder

Parâmetro
Obrigatório

Token de uso associado à sua conta CAF.

Sim

.setPersonId(String personId)

Identificador do usuário com a finalidade de identificar perfis fraudulentos e auxiliar na identificação dos logs de Analytics em casos de erros e bugs.

Não, usado para analytics

.setAnalyticsSettings(boolean useAnalytics)

Ativa/desativa a coleta de dados para analytics.

Não, o padrão é true

Altera as configurações padrão do sensor de estabilidade. Passe null se você não quiser usar este sensor.

Não. O tempo padrão é 1500 ms e o limiar padrão é 0,7 m/s².

.setLuminositySensorSettings(@Nullable SensorLuminositySettings sensorLuminositySettings)

Altera as configurações padrão do sensor de luminosidade. Passe null se você não quiser usar este sensor.

Não. O limiar padrão é 3 lx

Altera as configurações padrão do sensor de orientação. Passe null se você não quiser usar este sensor.

Não. O limiar padrão é 3 m/s².

.setCaptureSettings(@Nullable CaptureSettings captureSettings)

Define as configurações de captura. O método aceita instâncias das classes ImageCapture e VideoCapture.

Não. O padrão é ImageCapture

.setShowButtonTime(int showButtonTime)

Altera o tempo de espera até que o botão de captura manual seja exibido.

Não. O padrão é 15000 (milissegundos)

.setLayout(@Nullable @LayoutRes Integer layoutId)

Substitui o layout padrão do SDK. Crie um arquivo na pasta layout do seu projeto, copie este modelo e faça as alterações desejadas.

Não. O padrão é este

.setMask(MaskType type)

Define o tipo de máscara usado nas capturas. Existem dois tipos:

  • MaskType.DEFAULT, com o padrão pontilhado sobre o contorno do rosto;

  • MaskType.NONE, que remove completamente a máscara.

Não. O padrão é MaskType.DEFAULT

.setMask(@DrawableRes Integer greenMask, @DrawableRes Integer whiteMask, @DrawableRes Integer redMask)

Altera as máscaras de captura do rosto: SUCCESS, NORMAL e FAIL, nessa ordem. Se você usar esta opção, utilize máscaras com a mesma área de detecção do rosto; essa região é muito importante para o algoritmo capturar.

Não. Os padrões de máscara são:

.setStyle(@StyleRes int styleResourceId)

Substitui o estilo padrão do SDK. No arquivo styles.xml do seu projeto, copie este modelo e edite-o.

Não. O padrão é que.

.setNetworkSettings(int requestTimeout)

Define o intervalo de timeout para as requisições do SDK.

Não. O padrão é 60 (segundos)

.setProxySettings(@Nullable ProxySettings proxySettings)

Define as configurações de proxy, conforme explicado aqui.

Não. O padrão é null

Habilita/desabilita e permite a configuração da visualização da captura realizada, solicitando a confirmação do usuário para prosseguir.

Não. O padrão é desativado

.setCurrentStepDoneDelay(boolean showDelay, int delay)

Atrasa a activity após a conclusão de cada etapa. Este método pode ser usado para exibir uma mensagem de sucesso na própria tela após a captura, por exemplo.

Não. O padrão é false

.setMessageSettings(MessageSettings messageSettings)

Permite personalizar as mensagens exibidas no balão de "status" durante o processo de captura e análise.

Não.

.setPersonCPF(String personCPF)

Vincula uma tentativa de prova de vida a um CPF.

Não, o padrão é null

.setPersonName(String personName)

Vincula uma tentativa de prova de vida a um nome.

Não, o padrão é null

.enableSwitchCameraButton(boolean enable)

Ativa/desativa o botão para o usuário alternar entre a câmera frontal e a traseira.

Não, o padrão é true

.enableGoogleServices(boolean enable)

Permite ativar/desativar recursos do SDK que consomem GoogleServices; não recomendamos desativar os serviços devido à perda de segurança.

Não, o padrão é true

.setUseEmulator(boolean use)

Permite o uso de emuladores quando true. Quando true, o modo ADB também é ativado para que o emulador funcione corretamente. Não é recomendado ativar esta opção; use-a apenas para fins de teste.

Não, o padrão é false

.setUseRoot(boolean use)

Permite o uso de dispositivos com root quando true.

Não, o padrão é false

.setUseDeveloperMode(boolean use)

Permite o uso do modo desenvolvedor quando true. Não é recomendado ativar esta opção; use-a apenas para fins de teste.

Não, o padrão é false

.setUseAdb(boolean use)

Ativa o modo de depuração Android Debug Bridge (ADB) quando true. Não é recomendado ativar esta opção; use-a apenas para fins de teste.

Não, o padrão é false

.setUseDebug(boolean use)

Permite usar o app em modo de depuração quando true. Não é recomendado ativar esta opção; use-a apenas para fins de teste.

Não, o padrão é false

.setResolutionSettings(Resolution resolution)

Permite definir a resolução de captura. O método espera como parâmetro uma Resolution que possui as seguintes opções:

  • qHD: 540x960

  • HD: 720x1280

  • FULL_HD: 1080x1920

  • QUAD_HD: 1440x2560

  • ULTRA_HD: 2160x3840

Não. O padrão é Resolution.ULTRA_HD

.setGetImageUrlExpireTime (String expireTime)

Define por quanto tempo a URL da imagem ficará no servidor até expirar. Espere receber um intervalo de tempo entre "30m" e "30d".

Exemplos:

  • setGetImageUrlExpireTime("30m"): Para definir apenas minutos

  • setGetImageUrlExpireTime("24h"): Para definir apenas hora(s)

  • setGetImageUrlExpireTime("1h 10m"): Para definir hora(s) e minuto(s)

  • setGetImageUrlExpireTime("10d"): Para definir dia(s)

Não. O padrão é 3h

.setAudioSettings(boolean use)

Ativa/desativa a reprodução dos áudios do SDK.

Não. O padrão é true

.setAudioSettings(Integer audioResId)

Permite personalizar o áudio usado pelo SDK.

Não. O padrão é "Registro Facial"

.enableBrightnessIncrease(boolean enable)

Ativa/desativa o aumento de brilho do dispositivo ao abrir o SDK. Esse recurso aumenta a segurança da prova de vida ao refletir capturas de tela e também ajuda na melhor detecção e na qualidade da captura.

Não. O padrão é true

.setEyesClosedSettings(boolean enable, double threshold)

Permite personalizar as configurações de validação de olhos abertos do SDK. O método espera um parâmetro enable para ativar ou desativar a validação, e threshold, um valor entre 0,0 e 1,0

Não. O padrão é true e 0.5

.setStage(CafStage stage)

Permite escolher o ambiente em que o SDK será executado (produção, beta). O método recebe como parâmetro um enum CafStage para selecionar o ambiente:

Não. O padrão é CafStage.PROD

Enum

Descrição

CafStage.PROD

Usará o ambiente de produção da Trust Platform para registrar as execuções do SDK.

CafStage.BETA

Usará o ambiente de beta da Trust Platform para registrar as execuções do SDK.

MessageSettings

Para usá-lo, basta instanciar um MessageSettings objeto e usar os métodos conforme necessário para personalizar as mensagens.

Método
Valor padrão

.setFaceNotFoundMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o algoritmo não reconhece um rosto.

"Não encontramos nenhum rosto"

.setFaceNotFittedMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o rosto não se encaixa corretamente na máscara.

"Encaixe seu rosto"

.setFaceTooFarMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o rosto do usuário está muito distante.

"Aproxime o rosto"

.setFaceTooCloseMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o rosto do usuário está muito próximo da câmera.

"Afaste o rosto"

.setMultipleFaceDetectedMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando mais de um rosto é detectado.

"Mais de um rosto detectado"

.setHoldItMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o usuário está na posição correta para a captura.

"Segure assim"

.setVerifyingLivenessMessage(@NonNull @StringRes Integer message)

Mensagem exibida durante a verificação de prova de vida.

"Verificando selfie…"

.setInvalidFaceMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando a verificação de prova de vida rejeita a selfie.

"Não conseguimos capturar seu rosto. Tente novamente."

.setEyesClosedMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando ambos os olhos estão fechados.

"Não use óculos escuros e mantenha os olhos abertos"

.setNotCenterXMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o rosto está inclinado no eixo X (para cima ou para baixo).

"Centralize seu rosto na vertical"

.setNotCenterYMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o rosto está inclinado no eixo X (lado esquerdo ou direito).

"Centralize seu rosto na horizontal"

.setNotCenterZMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o rosto está inclinado no eixo Z (rosto rotacionado).

"Ajuste seu rosto à máscara"

.setWaitMessage(boolean show, @Nullable Integer message)

Mensagem exibida quando você inicia a câmera.

"Aguarde..."

.setSensorLuminosityMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o limiar de luminosidade está abaixo do esperado.

"Ambiente muito escuro"

.setSensorOrientationMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o limiar de orientação está abaixo do esperado.

"Celular não está na vertical"

.setSensorStabilityMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando o limiar de orientação está abaixo do esperado.

"Mantenha o celular parado"

.setCaptureProcessingErrorMessage(@NonNull @StringRes Integer message)

Mensagem exibida quando há um problema de processamento ou erro na resposta da API.

"Ops, tivemos um problema ao processar sua imagem. Tente novamente."

Exemplo

Validações de segurança

Estamos constantemente tomando ações para tornar o produto cada vez mais seguro, mitigando uma série de ataques observados no processo de captura e, consequentemente, reduzindo ao máximo possível as fraudes de identidade. O SDK possui alguns bloqueios que podem impedir sua execução em determinados contextos. Para desativá-los, você pode usar os métodos conforme mostrado no exemplo abaixo:

Iniciando a Activity

Depois de criar o PassiveFaceLiveness, inicie o PassiveFaceLivenessActivity passando esse objeto como parâmetro via extra intent:

Obtendo o resultado

Para obter o PassiveFaceLivenessResult objeto, que contém as capturas realizadas pelo SDK, sobrescreva o onActivityResult método na mesma activity em que você iniciou o PassiveFaceLivenessActivity:

PassiveFaceLivenessResult

Parâmetro
Permite null

String capturePath

Caminho completo da imagem ou do vídeo no dispositivo do usuário.

Sim, em caso de erro

String imagePath

Caminho completo da imagem no dispositivo do usuário.

Sim, em caso de erro

String imageUrl

URL da selfie no servidor da CAF.

Sim, em caso de erro

String signedResponse

Resposta assinada do servidor da CAF confirmando que a selfie capturada possui um rosto real (não é uma foto ou vídeo). Use este parâmetro se você quiser uma camada extra de segurança, verificando se a assinatura da resposta não foi quebrada ou interceptada durante a requisição. Se estiver quebrada, há uma forte indicação de interceptação da requisição.

Sim, em caso de erro ou indisponibilidade do servidor

String trackingId

Identificador desta execução em nossos servidores. Se possível, salve este campo e envie-o para a nossa API. Assim teremos mais dados sobre como o usuário se comportou durante a execução.

Sim, se o usuário definir useAnalytics = false ou as chamadas de analytics não funcionarem

Objeto que informa o motivo do encerramento do SDK. Para mais informações, veja aqui

Sim, em caso de sucesso

lensFacing: Int

Define o lado da câmera que foi usado. Use PassiveFaceLivenessResult.LENS_FACING_FRONT ou PassiveFaceLivenessResult.LENS_FACING_FRONT para validar.

Não

Atualizado