Skip to main content
A UI da captura é renderizada pelo próprio FaceTec SDK. Você consegue personalizá-la passando um LivenessFacetecSDKCustomization em LivenessFacetecSDKConfig. Cada propriedade é um espelho tipado da customização correspondente do FaceTec — quando você define um campo, ele é aplicado; quando deixa null, o FaceTec usa o padrão.

Estrutura geral

import com.vcc.vendor.facetec.sdk.models.LivenessFacetecSDKConfig
import com.vcc.vendor.facetec.sdk.models.LivenessFacetecSDKCustomization
import com.vcc.vendor.facetec.sdk.LivenessFacetecSDK

val customization = LivenessFacetecSDKCustomization(
    cancelButton = /* CancelButtonCustomization */ null,
    feedback = /* FeedbackCustomization */ null,
    frame = /* FrameCustomization */ null,
    guidance = /* GuidanceCustomization */ null,
    oval = /* OvalCustomization */ null,
    overlay = /* OverlayCustomization */ null,
    resultScreen = /* ResultScreenCustomization */ null,
    initialLoadingAnimation = /* InitialLoadingAnimationCustomization */ null,
    idScan = /* IDScanCustomization */ null,
    ocrConfirmation = /* OCRConfirmationCustomization */ null,
    vocalGuidance = /* VocalGuidanceCustomization */ null,
    securityWatermarkImage = /* SecurityWatermarkImage */ null,
    // ... ver tabela abaixo
)

LivenessFacetecSDK.init(
    applicationContext = applicationContext,
    config = LivenessFacetecSDKConfig(
        customization = customization
    )
)

Sub-customizações disponíveis

PropriedadeTipoO que controla
cancelButtonCancelButtonCustomization?Imagem, posição e visibilidade do botão de cancelar
feedbackFeedbackCustomization?Cores, fonte e animação da barra de mensagens
frameFrameCustomization?Cor de fundo, borda e cantos arredondados do frame
guidanceGuidanceCustomization?Telas de “pronto” e “tente novamente” e botões
idScanIDScanCustomization?Telas de captura de documento (quando habilitado)
initialLoadingAnimationInitialLoadingAnimationCustomization?Animação inicial de carregamento
ocrConfirmationOCRConfirmationCustomization?Tela de confirmação de OCR
ovalOvalCustomization?Cores e largura do oval guia e do indicador de progresso
overlayOverlayCustomization?Cor de fundo do overlay e imagem de marca
resultScreenResultScreenCustomization?Animações e cores da tela de resultado
securityWatermarkImageSecurityWatermarkImage?Marca-d’água: FACETEC, FACETEC_ZOOM, FACETEC_POWERED_BY
vocalGuidanceVocalGuidanceCustomization?Modo (MINIMAL, FULL, NONE) e arquivos de áudio
exitAnimationSuccessCustomExitAnimationCustomization?Animação de saída em caso de sucesso
exitAnimationUnsuccessCustomExitAnimationCustomization?Animação de saída em caso de erro
exitAnimationSuccessResourceIDInt?Recurso drawable da animação de sucesso (alternativa a exitAnimationSuccessCustom)
exitAnimationUnsuccessResourceIDInt?Recurso drawable da animação de erro
enableOfficialIDPhotoBoolean?Habilita o fluxo de captura de documento oficial
overrideResultScreenSuccessMessageString?Sobrescreve a mensagem de sucesso da tela de resultado
activityThemeIdInt?ID do tema Android aplicado à Activity da captura

Exemplo: cores básicas e cancelamento no canto superior esquerdo

import android.graphics.Color
import com.vcc.vendor.facetec.sdk.models.LivenessFacetecSDKCustomization
import com.vcc.vendor.facetec.sdk.models.customization.CancelButtonCustomization
import com.vcc.vendor.facetec.sdk.models.customization.CancelButtonLocation
import com.vcc.vendor.facetec.sdk.models.customization.FrameCustomization
import com.vcc.vendor.facetec.sdk.models.customization.OvalCustomization

val customization = LivenessFacetecSDKCustomization(
    cancelButton = CancelButtonCustomization(
        location = CancelButtonLocation.TOP_LEFT,
        hideForCameraPermissions = false
    ),
    frame = FrameCustomization(
        backgroundColor = Color.WHITE,
        borderColor = Color.parseColor("#B72819"),
        borderWidth = 2,
        cornerRadius = 16
    ),
    oval = OvalCustomization(
        strokeColor = Color.parseColor("#B72819"),
        progressColor1 = Color.parseColor("#B72819"),
        progressColor2 = Color.parseColor("#e9454b")
    )
)

Boas práticas

Mudanças visuais profundas no fluxo do FaceTec precisam respeitar as diretrizes de marca da própria FaceTec — em especial, a marca-d’água de segurança (securityWatermarkImage) não deve ser ocultada sob risco de violar o contrato de uso do motor.
  • Mantenha contraste suficiente entre o oval guia e o fundo para preservar a acessibilidade.
  • Evite fontes muito pequenas em guidance.headerFont/subtextFont — o FaceTec já balanceia tamanhos para legibilidade em câmeras frontais.
  • Teste em devices com tela curta (relação ~16:9) — alguns elementos posicionados manualmente (como cancelButton.customLocation) podem sobrepor o oval.
  • Reuse o mesmo LivenessFacetecSDKCustomization entre o init e chamadas subsequentes; trocar customização exige reinicializar o SDK.

Próximos passos

Implementação

Veja como passar a customização no init

Solução de problemas

Diagnostique problemas com cores, fontes e recursos