> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-sdk/caf-sdk-pt-br/android/standalone-modules/deprecated-sdks/passivefaceliveness-deprecated.md).

# PassiveFaceLiveness (Obsoleto)

## **Tamanho do SDK** <a href="#duz1qg6x87dw" id="duz1qg6x87dw"></a>

Um máximo de cerca de 3,5 MB, que pode diminuir por causa de [estes elementos](https://github.com/combateafraude/public-docs/blob/docs-sdks/android/reduce-sdks-size.md).

## **Analytics** <a href="#id-6ngt97t85464" id="id-6ngt97t85464"></a>

Nossos SDKs, por padrão [coletam informações](https://github.com/combateafraude/public-docs/blob/docs-sdks/analytics.md) 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** <a href="#i8w0m0ioe9fp" id="i8w0m0ioe9fp"></a>

| Permissão    | Motivo                            | Obrigatório |
| ------------ | --------------------------------- | ----------- |
| **`CAMERA`** | Para capturar a selfie do usuário | Sim         |

## **Instanciando o SDK** <a href="#d6tsn0954bw8" id="d6tsn0954bw8"></a>

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

```java
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** <a href="#hpxvk7ade4ev" id="hpxvk7ade4ev"></a>

| Parâmetro                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Obrigatório                                                                                                                                                                                                                                                                                                                         |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/standalone-modules/deprecated-sdks/broken-reference/README.md"><strong><code>String mobileToken</code></strong></a></p><p>Token de uso associado à sua conta CAF.</p>                                                                                                                                                                                                                                                                                                                                                                                                          | Sim                                                                                                                                                                                                                                                                                                                                 |
| <p><strong><code>.setPersonId(String personId)</code></strong></p><p>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.</p>                                                                                                                                                                                                                                                                                                                                                                                                                               | Não, usado para [analytics](https://github.com/combateafraude/public-docs/blob/docs-sdks/analytics.md)                                                                                                                                                                                                                              |
| <p><strong><code>.setAnalyticsSettings(boolean useAnalytics)</code></strong></p><p>Ativa/desativa a coleta de dados para <a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/analytics.md">analytics</a>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                 | Não, o padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/configurations/sensor-configuration.md#_boueycgvu379"><strong><code>.setStabilitySensorSettings(@Nullable SensorStabilitySettings sensorStabilitySettings)</code></strong></a></p><p>Altera as configurações padrão do sensor de estabilidade. Passe null se você não quiser usar este sensor.</p>                                                                                                                                                                                                                                                                             | Não. O tempo padrão é 1500 ms e o limiar padrão é 0,7 m/s².                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setLuminositySensorSettings(@Nullable SensorLuminositySettings sensorLuminositySettings)</code></strong></p><p>Altera as configurações padrão do sensor de luminosidade. Passe null se você não quiser usar este sensor.</p>                                                                                                                                                                                                                                                                                                                                                                                                                  | Não. O limiar padrão é 3 lx                                                                                                                                                                                                                                                                                                         |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/configurations/sensor-configuration.md#_2pasz415da8s"><strong><code>.setOrientationSensorSettings(@Nullable SensorOrientationSettings sensorOrientationSettings)</code></strong></a></p><p>Altera as configurações padrão do sensor de orientação. Passe null se você não quiser usar este sensor.</p>                                                                                                                                                                                                                                                                         | Não. O limiar padrão é 3 m/s².                                                                                                                                                                                                                                                                                                      |
| <p><strong><code>.setCaptureSettings(@Nullable CaptureSettings captureSettings)</code></strong></p><p>Define as configurações de captura. O método aceita instâncias das classes ImageCapture e VideoCapture.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                               | Não. O padrão é **`ImageCapture`**                                                                                                                                                                                                                                                                                                  |
| <p><strong><code>.setShowButtonTime(int showButtonTime)</code></strong></p><p>Altera o tempo de espera até que o botão de captura manual seja exibido.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Não. O padrão é 15000 (milissegundos)                                                                                                                                                                                                                                                                                               |
| <p><strong><code>.setLayout(@Nullable @LayoutRes Integer layoutId)</code></strong></p><p>Substitui o layout padrão do SDK. Crie um arquivo na pasta layout do seu projeto, copie <a href="https://gist.github.com/MiguelXCruz/0791e125bbbcc94c081f5d3149a12655">este modelo</a> e faça as alterações desejadas.</p>                                                                                                                                                                                                                                                                                                                                             | Não. O padrão é [este](https://gist.github.com/murilofank/53f3c530476597ba75401085350a210a)                                                                                                                                                                                                                                         |
| <p><strong><code>.setMask(MaskType type)</code></strong></p><p>Define o tipo de máscara usado nas capturas. Existem dois tipos:</p><ul><li><strong><code>MaskType.DEFAULT</code></strong>, com o padrão pontilhado sobre o contorno do rosto;</li><li><strong><code>MaskType.NONE</code></strong>, que remove completamente a máscara.</li></ul>                                                                                                                                                                                                                                                                                                                | Não. O padrão é **`MaskType.DEFAULT`**                                                                                                                                                                                                                                                                                              |
| <p><strong><code>.setMask(@DrawableRes Integer greenMask, @DrawableRes Integer whiteMask, @DrawableRes Integer redMask)</code></strong></p><p>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.</p>                                                                                                                                                                                                                                                                                       | <p>Não. Os padrões de máscara são:</p><p><a href="https://gist.github.com/murilofank/c774f56b18975ed6d0929c035b7589b3">Normal</a></p><p><a href="https://gist.github.com/murilofank/be48a6e2812da48bc9d442bf49be0f37">Sucesso</a></p><p><a href="https://gist.github.com/murilofank/e5a6081e4b3baf65345a820dffd63406">Falha</a></p> |
| <p><strong><code>.setStyle(@StyleRes int styleResourceId)</code></strong></p><p>Substitui o estilo padrão do SDK. No arquivo styles.xml do seu projeto, copie este <a href="https://gist.github.com/murilofank/3ac0f921435466fd4e0b04d683597a38">modelo</a> e edite-o.</p>                                                                                                                                                                                                                                                                                                                                                                                      | Não. O padrão é [que](https://gist.github.com/murilofank/3ac0f921435466fd4e0b04d683597a38).                                                                                                                                                                                                                                         |
| <p><strong><code>.setNetworkSettings(int requestTimeout)</code></strong></p><p>Define o intervalo de timeout para as requisições do SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Não. O padrão é 60 (segundos)                                                                                                                                                                                                                                                                                                       |
| <p><strong><code>.setProxySettings(@Nullable ProxySettings proxySettings)</code></strong></p><p>Define as configurações de proxy, conforme explicado <a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/configurations/proxy-configuration.md">aqui</a>.</p>                                                                                                                                                                                                                                                                                                                                                                         | Não. O padrão é **`null`**                                                                                                                                                                                                                                                                                                          |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/configurations/preview-configuration.md"><strong><code>.setPreviewSettings(@NonNull PreviewSettings previewSettings)</code></strong></a></p><p>Habilita/desabilita e permite a configuração da visualização da captura realizada, solicitando a confirmação do usuário para prosseguir.</p>                                                                                                                                                                                                                                                                                    | Não. O padrão é desativado                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setCurrentStepDoneDelay(boolean showDelay, int delay)</code></strong></p><p>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.</p>                                                                                                                                                                                                                                                                                                                                                                                                 | Não. O padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setMessageSettings(MessageSettings messageSettings)</code></strong></p><p>Permite personalizar as mensagens exibidas no balão de "status" durante o processo de captura e análise.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Não.                                                                                                                                                                                                                                                                                                                                |
| <p><strong><code>.setPersonCPF(String personCPF)</code></strong></p><p>Vincula uma tentativa de prova de vida a um CPF.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Não, o padrão é **`null`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setPersonName(String personName)</code></strong></p><p>Vincula uma tentativa de prova de vida a um nome.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Não, o padrão é **`null`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.enableSwitchCameraButton(boolean enable)</code></strong></p><p>Ativa/desativa o botão para o usuário alternar entre a câmera frontal e a traseira.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Não, o padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.enableGoogleServices(boolean enable)</code></strong></p><p>Permite ativar/desativar recursos do SDK que consomem GoogleServices; não recomendamos desativar os serviços devido à perda de segurança.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                      | Não, o padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setUseEmulator(boolean use)</code></strong></p><p>Permite o uso de emuladores quando <strong><code>true</code></strong>. Quando <strong><code>true</code></strong>, 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.</p>                                                                                                                                                                                                                                                                                                                          | Não, o padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseRoot(boolean use)</code></strong></p><p>Permite o uso de dispositivos com root quando <strong><code>true</code></strong>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Não, o padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseDeveloperMode(boolean use)</code></strong></p><p>Permite o uso do modo desenvolvedor quando <strong><code>true</code></strong>. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                                                                                                                                                                                                                                               | Não, o padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseAdb(boolean use)</code></strong></p><p>Ativa o modo de depuração Android Debug Bridge (ADB) quando <strong><code>true</code></strong>. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                                                                                                                                                                                                                                        | Não, o padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setUseDebug(boolean use)</code></strong></p><p>Permite usar o app em modo de depuração quando <strong><code>true</code></strong>. Não é recomendado ativar esta opção; use-a apenas para fins de teste.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                   | Não, o padrão é **`false`**                                                                                                                                                                                                                                                                                                         |
| <p><strong><code>.setResolutionSettings(Resolution resolution)</code></strong></p><p>Permite definir a resolução de captura. O método espera como parâmetro uma <strong><code>Resolution</code></strong> que possui as seguintes opções:</p><ul><li><strong><code>qHD</code></strong>: <em>540x960</em></li><li><strong><code>HD</code></strong>: <em>720x1280</em></li><li><strong><code>FULL\_HD</code></strong>: <em>1080x1920</em></li><li><strong><code>QUAD\_HD</code></strong>: <em>1440x2560</em></li><li><strong><code>ULTRA\_HD</code></strong>: <em>2160x3840</em></li></ul>                                                                         | Não. O padrão é **`Resolution.ULTRA_HD`**                                                                                                                                                                                                                                                                                           |
| <p><strong><code>.setGetImageUrlExpireTime (String expireTime)</code></strong></p><p>Define por quanto tempo a URL da imagem ficará no servidor até expirar. Espere receber um intervalo de tempo entre "30m" e "30d".</p><p>Exemplos:</p><ul><li><strong><code>setGetImageUrlExpireTime("30m")</code></strong>: Para definir apenas minutos</li><li><strong><code>setGetImageUrlExpireTime("24h")</code></strong>: Para definir apenas hora(s)</li><li><strong><code>setGetImageUrlExpireTime("1h 10m")</code></strong>: Para definir hora(s) e minuto(s)</li><li><strong><code>setGetImageUrlExpireTime("10d")</code></strong>: Para definir dia(s)</li></ul> | Não. O padrão é **`3h`**                                                                                                                                                                                                                                                                                                            |
| <p><strong><code>.setAudioSettings(boolean use)</code></strong></p><p>Ativa/desativa a reprodução dos áudios do SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Não. O padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setAudioSettings(Integer audioResId)</code></strong></p><p>Permite personalizar o áudio usado pelo SDK.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Não. O padrão é **`"Registro Facial"`**                                                                                                                                                                                                                                                                                             |
| <p><strong><code>.enableBrightnessIncrease(boolean enable)</code></strong></p><p>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.</p>                                                                                                                                                                                                                                                                                                                                                              | Não. O padrão é **`true`**                                                                                                                                                                                                                                                                                                          |
| <p><strong><code>.setEyesClosedSettings(boolean enable, double threshold)</code></strong></p><p>Permite personalizar as configurações de validação de olhos abertos do SDK. O método espera um parâmetro <strong><code>enable</code></strong> para ativar ou desativar a validação, e <strong><code>threshold</code></strong>, um valor entre 0,0 e 1,0</p>                                                                                                                                                                                                                                                                                                     | Não. O padrão é **`true`** e **`0.5`**                                                                                                                                                                                                                                                                                              |
| <p><strong><code>.setStage(CafStage stage)</code></strong></p><p>Permite escolher o ambiente em que o SDK será executado (produção, beta). O método recebe como parâmetro um enum <strong><code>CafStage</code></strong> para selecionar o ambiente:</p>                                                                                                                                                                                                                                                                                                                                                                                                        | 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.                                                                                                                                                                                                                                                  |

{% hint style="warning" %}
Cada ambiente (beta e produção) exige seu próprio mobileToken específico, gerado na plataforma Trust do respectivo ambiente.
{% endhint %}

### **MessageSettings** <a href="#ava18wpenxrf" id="ava18wpenxrf"></a>

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                                                         |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| <p><strong><code>.setFaceNotFoundMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o algoritmo não reconhece um rosto.</p>                                   | "Não encontramos nenhum rosto"                                       |
| <p><strong><code>.setFaceNotFittedMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o rosto não se encaixa corretamente na máscara.</p>                      | "Encaixe seu rosto"                                                  |
| <p><strong><code>.setFaceTooFarMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o rosto do usuário está muito distante.</p>                                 | "Aproxime o rosto"                                                   |
| <p><strong><code>.setFaceTooCloseMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o rosto do usuário está muito próximo da câmera.</p>                      | "Afaste o rosto"                                                     |
| <p><strong><code>.setMultipleFaceDetectedMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando mais de um rosto é detectado.</p>                                 | "Mais de um rosto detectado"                                         |
| <p><strong><code>.setHoldItMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o usuário está na posição correta para a captura.</p>                           | "Segure assim"                                                       |
| <p><strong><code>.setVerifyingLivenessMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida durante a verificação de prova de vida.</p>                                 | "Verificando selfie…"                                                |
| <p><strong><code>.setInvalidFaceMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando a verificação de prova de vida rejeita a selfie.</p>                       | "Não conseguimos capturar seu rosto. Tente novamente."               |
| <p><strong><code>.setEyesClosedMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando ambos os olhos estão fechados.</p>                                          | "Não use óculos escuros e mantenha os olhos abertos"                 |
| <p><strong><code>.setNotCenterXMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o rosto está inclinado no eixo X (para cima ou para baixo).</p>             | "Centralize seu rosto na vertical"                                   |
| <p><strong><code>.setNotCenterYMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o rosto está inclinado no eixo X (lado esquerdo ou direito).</p>            | "Centralize seu rosto na horizontal"                                 |
| <p><strong><code>.setNotCenterZMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o rosto está inclinado no eixo Z (rosto rotacionado).</p>                   | "Ajuste seu rosto à máscara"                                         |
| <p><strong><code>.setWaitMessage(boolean show, @Nullable Integer message)</code></strong></p><p>Mensagem exibida quando você inicia a câmera.</p>                                                     | "Aguarde..."                                                         |
| <p><strong><code>.setSensorLuminosityMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o limiar de luminosidade está abaixo do esperado.</p>                 | "Ambiente muito escuro"                                              |
| <p><strong><code>.setSensorOrientationMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o limiar de orientação está abaixo do esperado.</p>                  | "Celular não está na vertical"                                       |
| <p><strong><code>.setSensorStabilityMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando o limiar de orientação está abaixo do esperado.</p>                    | "Mantenha o celular parado"                                          |
| <p><strong><code>.setCaptureProcessingErrorMessage(@NonNull @StringRes Integer message)</code></strong></p><p>Mensagem exibida quando há um problema de processamento ou erro na resposta da API.</p> | "Ops, tivemos um problema ao processar sua imagem. Tente novamente." |

**Exemplo**

```java
MessageSettings messageSettings = new MessageSetings()
.setFaceNotFoundMessage(R.string.exempleFacenoajatFound)
.setFaceTooFarMessage(R.string.exempleFaceTooFar);
```

### **Validações de segurança** <a href="#e1ds1ilttmda" id="e1ds1ilttmda"></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:

```java
PassiveFaceLiveness.Builder("mobileToken")
    .setUseEmulator(true)
    .setUseRoot(true)
    .setUseDeveloperMode(true)
    .setUseAdb(true)
    .setUseDebug(true)
    .build();
```

{% hint style="warning" %}
Desativar as validações de segurança é recomendado apenas para **fins de teste**. Para publicar seu aplicativo em produção, recomendamos usar as configurações padrão.
{% endhint %}

## **Iniciando a Activity** <a href="#qfmdf2c9p8m5" id="qfmdf2c9p8m5"></a>

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

```java
Intent mIntent = new Intent(context, PassiveFaceLivenessActivity.class);
mIntent.putExtra(PassiveFaceLiveness.PARAMETER_NAME, mPassiveFaceLiveness);
startActivityForResult(mIntent, REQUEST_CODE);
```

## Obtendo o resultado <a href="#vgd5k2bko54z" id="vgd5k2bko54z"></a>

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`**:

```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE){
        if (resultCode == RESULT_OK && data != null) {
            PassiveFaceLivenessResult mPassiveFaceLivenessResult = (PassiveFaceLivenessResult) data.getSerializableExtra(PassiveFaceLivenessResult.PARAMETER_NAME);
            // verifique mPassiveFaceLivenessResult.getSDKFailure() para descobrir qual foi o motivo da finalização do SDK
        } else {
            // o usuário fechou a activity
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}
```

### **PassiveFaceLivenessResult** <a href="#oe64jctsdd1q" id="oe64jctsdd1q"></a>

| Parâmetro                                                                                                                                                                                                                                                                                                                                                                                                                            | Permite null                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |
| <p><strong><code>String capturePath</code></strong></p><p>Caminho completo da imagem ou do vídeo no dispositivo do usuário.</p>                                                                                                                                                                                                                                                                                                      | Sim, em caso de erro                                                                             |
| <p><strong><code>String imagePath</code></strong></p><p>Caminho completo da imagem no dispositivo do usuário.</p>                                                                                                                                                                                                                                                                                                                    | Sim, em caso de erro                                                                             |
| <p><strong><code>String imageUrl</code></strong></p><p>URL da selfie no servidor da CAF.</p>                                                                                                                                                                                                                                                                                                                                         | Sim, em caso de erro                                                                             |
| <p><strong><code>String signedResponse</code></strong></p><p>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.</p> | Sim, em caso de erro ou indisponibilidade do servidor                                            |
| <p><strong><code>String trackingId</code></strong></p><p>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.</p>                                                                                                                                                                             | Sim, se o usuário definir **`useAnalytics = false`** ou as chamadas de analytics não funcionarem |
| <p><a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/sdks-response.md"><strong><code>SDKFailure sdkFailure</code></strong></a></p><p>Objeto que informa o motivo do encerramento do SDK. Para mais informações, veja <a href="https://github.com/combateafraude/public-docs/blob/docs-sdks/android/sdks-response.md">aqui</a></p>                                                                        | Sim, em caso de sucesso                                                                          |
| <p><strong><code>lensFacing: Int</code></strong></p><p>Define o lado da câmera que foi usado. Use <strong><code>PassiveFaceLivenessResult.LENS\_FACING\_FRONT</code></strong> ou <strong><code>PassiveFaceLivenessResult.LENS\_FACING\_FRONT</code></strong> para validar.</p>                                                                                                                                                       | Não                                                                                              |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-sdk/caf-sdk-pt-br/android/standalone-modules/deprecated-sdks/passivefaceliveness-deprecated.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
