Facetec

O SDK permite personalizar a interface da Facetec. Através do FacetecTheme, é possível ajustar cores, fontes, textos e até mesmo os layouts. Esta documentação guiará você pelas opções de customização, apresentando exemplos detalhados para facilitar a implementação.

Passo a Passo de Configuração

Para aplicar uma customização, você define o FacetecTheme usando o FacetecTheme.Builder, passando as propriedades que deseja personalizar. Em seguida, aplica o tema no FacetecProvider e adiciona esse provider ao HubManager.

Exemplo de Configuração do Tema Facetec

Veja como definir um tema básico, incluindo cores para botões e fontes para textos:

val facetecProvider = FacetecProvider(getFacetecThemeBuilder(this))
hubManager.addProvider(facetecProvider)

Criamos a função getFacetecThemeBuilder, que é responsável por retornar o FacetecTheme configurado com cores personalizadas e fontes. Para a configuração, você pode utilizar tanto R.color e R.font quanto referências diretas por string ou integer, para máxima flexibilidade.

Exemplo Completo de Tema

fun getFacetecThemeBuilder(context: Context): FacetecTheme {
    return FacetecTheme.Builder()
        // Customização de cores das instruções
        .guidanceBackgroundColors("#73997d") // Hexadecimal como String
        .guidanceForegroundColor("#3b3bd4")

        // Customização das cores de instruções "ready"
        .guidanceReadyScreenHeaderTextColor("#5e3766") // Hexadecimal
        .guidanceReadyScreenOvalFillColor(ContextCompat.getColor(context, R.color.purple_500)) // Usando ID de cor

        // Personalizando botões
        .guidanceButtonBackgroundNormalColor("#15abad")
        .guidanceButtonTextNormalColor("#fefefe")

        // Customização das fontes
        .setFacetecFontsMap(getFacetecFonts()) // Map de fontes
        .build()
}

Customização de Cores

Para personalizar as cores, você pode utilizar strings hexadecimais (#FF5733) ou ContextCompat.getColor para obter as cores dos recursos do seu aplicativo. Dessa forma, é possível garantir a consistência com a identidade visual do app.

Exemplos de uso de cores:

.guidanceReadyScreenOvalFillColor("#7c1bd1") // Usando hexadecimal como String
.guidanceReadyScreenTextBackgroundColor(ContextCompat.getColor(context, R.color.black)) // Usando ID de cor

Tabela de Referência: Cores

ParâmetroDescriçãoFormato Aceito
guidanceBackgroundColorsCor de fundo da tela de orientaçãoHexadecimal (#FFFFFF) ou ColorInt
guidanceForegroundColorCor do texto das orientaçõesHexadecimal (#FFFFFF) ou ColorInt
guidanceButtonBackgroundNormalColorCor de fundo dos botões normaisHexadecimal (#FFFFFF) ou ColorInt
guidanceButtonTextNormalColorCor do texto dos botões normaisHexadecimal (#FFFFFF) ou ColorInt
resultScreenBackgroundColorsCor de fundo da tela de resultadosHexadecimal (#FFFFFF) ou ColorInt
resultScreenActivityIndicatorColorCor do indicador de atividade na tela de resultadosHexadecimal (#FFFFFF) ou ColorInt
feedbackBackgroundColorsCor de fundo das mensagens de feedbackHexadecimal (#FFFFFF) ou ColorInt

Customização de Fontes

O FacetecTheme permite personalizar as fontes em diferentes áreas da interface. Para isso, você define um HashMap com as chaves FacetecFontsKey e o valor correspondente da fonte, podendo usar tanto R.font para referências de recursos de fonte quanto o caminho completo da fonte no assets como String.

Exemplo de configuração de fontes:

fun getFacetecFonts(): HashMap<FacetecFontsKey, *> {
    return hashMapOf(
        FacetecFontsKey.GUIDANCE_CUSTOMIZATION_HEADER_FONT to R.font.sixty,
        FacetecFontsKey.GUIDANCE_CUSTOMIZATION_SUBTEXT_FONT to "fonts/sixty.ttf", // Usando path no assets
        FacetecFontsKey.RESULT_SCREEN_CUSTOMIZATION_MESSAGE_FONT to R.font.sixty,
        FacetecFontsKey.FEEDBACK_CUSTOMIZATION_TEXT_FONT to "fonts/sixty.ttf"
    )
}

Tabela de Referência: Fontes

Chave (FacetecFontsKey)DescriçãoExemplo
GUIDANCE_CUSTOMIZATION_HEADER_FONTFonte para o cabeçalho das telas de orientaçãoR.font.nome_da_fonte ou "caminho.ttf"
GUIDANCE_CUSTOMIZATION_SUBTEXT_FONTFonte para o subtítulo das telas de orientaçãoR.font.nome_da_fonte ou "caminho.ttf"
GUIDANCE_CUSTOMIZATION_READY_SCREEN_HEADER_FONTFonte para o cabeçalho da tela "Ready"R.font.nome_da_fonte ou "caminho.ttf"
GUIDANCE_CUSTOMIZATION_READY_SCREEN_SUBTEXT_FONTFonte para o subtítulo da tela "Ready"R.font.nome_da_fonte ou "caminho.ttf"
GUIDANCE_CUSTOMIZATION_RETRY_SCREEN_HEADER_FONTFonte para o cabeçalho da tela "Retry"R.font.nome_da_fonte ou "caminho.ttf"
GUIDANCE_CUSTOMIZATION_RETRY_SCREEN_SUBTEXT_FONTFonte para o subtítulo da tela "Retry"R.font.nome_da_fonte ou "caminho.ttf"
RESULT_SCREEN_CUSTOMIZATION_MESSAGE_FONTFonte para as mensagens na tela de resultadoR.font.nome_da_fonte ou "caminho.ttf"
GUIDANCE_CUSTOMIZATION_BUTTON_FONTFonte para o texto dos botõesR.font.nome_da_fonte ou "caminho.ttf"
FEEDBACK_CUSTOMIZATION_TEXT_FONTFonte para o texto de feedback durante o processoR.font.nome_da_fonte ou "caminho.ttf"
INSTRUCTIONS_TITLE_FONTFonte para o título da tela de instruçõesR.font.nome_da_fonte ou "caminho.ttf"
INSTRUCTIONS_CAPTION_FONTFonte para o subtítulo da tela de instruçõesR.font.nome_da_fonte ou "caminho.ttf"
INSTRUCTIONS_DOCUMENT_TYPES_INSTRUCTIONS_FONTFonte para o texto do tipo de documentoR.font.nome_da_fonte ou "caminho.ttf"
INSTRUCTIONS_DOCUMENT_TIPS_INSTRUCTIONS_FONTFonte para o texto das dicas de instruçãoR.font.nome_da_fonte ou "caminho.ttf"
INSTRUCTIONS_BUTTON_FONTFonte para o botão da tela de instruçõesR.font.nome_da_fonte ou "caminho.ttf"

Customização da tela de instruções

Para personalizar a tela de instruções, utilize o InstructionCustomsBuilder como parâmetro no FacetecTheme. Abaixo, você encontra alguns exemplos de como ajustar os elementos visuais e textos.

PropriedadeDescriçãoExemplo de Valor
setBackButtonImg (1)Define a imagem do botão de voltarR.drawable
setBackButtonColor (1)Define a cor do botão de voltar"#01012e" ou R.color
setBackgroundColor (2)Define a cor de fundo da tela"#170ec4"
setContextImage (2)Define a imagem de contexto na telaR.drawable
setTitleColor (3)Define a cor do título"#a83290" ou R.color
setTitleText (3)Define o título da tela de instruções"titulo exemplo customizado"
setDocumentTypesInstructionIcon (4)Define o ícone para o tipo de documentoR.drawable
setDocumentTypesInstructionIconBorderColor (4)Define a cor da borda do ícone do tipo de documento"#ff0000" ou R.color
setDocumentTypesInstructionIconBackgroundColor (4)Define a cor de fundo do ícone de tipo de documento"#cc6f16" ou R.color
setDocumentTipsInstructionIcon (5)Define o ícone para as dicas de instrução do documentoR.drawable
setDocumentTipsInstructionIconBackgroundColor (5)Define a cor de fundo do ícone das dicas"#012e0a" ou R.color
setDocumentTipsInstructionIconBorderColor (5)Define a cor da borda do ícone das dicas"#00ff00" ou R.color
setBottomSheetColor (6)Define a cor do fundo da barra inferior"#3e32a8" ou R.color
setBottomSheetCornerRadius (6)Define o raio de canto da barra inferior15.0f
setCaptionColor (7)Define a cor do subtítulo"#a86b32" ou R.color
setCaptionText (7)Define o subtítulo da tela de instruções"subtitulo exemplo customizado"
setDocumentTypesInstructionTextColor (8)Define a cor do texto de instrução do tipo de documento"#a8927d" ou R.color
setDocumentTypesInstructionText (8)Define o texto de instrução para o tipo de documento"descricao do primeiro campo"
setDocumentTipsInstructionText (9)Define o texto de dica de instrução para o documento"descricao do segundo campo"
setDocumentTipsInstructionTextColor (9)Define a cor do texto das dicas de instrução do documento"#16cc3a" ou R.color
setContinueButtonText (10)Define o texto do botão de continuar"Continuar button"
setContinueButtonColor (10)Define a cor de fundo do botão de continuar"#2e030a" ou R.color
setContinueButtonTextColor (10)Define a cor do texto do botão de continuar"#0000ff" ou R.color

Customizando Textos e Mensagens

Você pode definir textos personalizados em diferentes áreas do Facetec utilizando um HashMap com as chaves FacetecTextKey e o texto que deseja exibir.

Exemplo de configuração de mensagens:

fun getFacetecTexts(): HashMap<FacetecTextKey, String> {
    return hashMapOf(
        FacetecTextKey.READY_HEADER_1 to "Prepare-se para a verificação",
        FacetecTextKey.RESULT_SUCCESS_MESSAGE to "Verificação concluída com sucesso!"
    )
}

Exemplo de Personalização com Fontes e Cores

Aqui está um exemplo mais avançado, utilizando diversas opções de customização:

fun getFacetecThemeBuilder(context: Context): FacetecTheme {
    return FacetecTheme.Builder()
        // Configuração de cores gerais
        .guidanceBackgroundColors("#f0f4f8")
        .guidanceForegroundColor("#1648CD")

        // Botões
        .guidanceButtonBackgroundNormalColor("#4CAF50")
        .guidanceButtonTextNormalColor("#FFFFFF")
        .guidanceButtonBackgroundHighlightColor("#81C784")

        // Tela de resultado
        .resultScreenBackgroundColors("#3E2723")
        .resultScreenActivityIndicatorColor("#FF5722")
        .resultScreenUploadProgressFillColor("#D32F2F")

        // Customização de fontes
        .setFacetecFontsMap(getFacetecFonts()) // Configuração das fontes
        .build()
}

Exemplo de Customização de Textos

Nesta seção, vamos explorar detalhadamente como personalizar os textos da Facetec para refletir a linguagem e o tom desejados pelo seu aplicativo. A seguir, você verá tabelas e imagens ilustrativas que mostram onde cada texto personalizado aparece na interface, ajudando a entender o impacto de cada configuração visualmente.

Exemplo Visual de Personalização dos Textos

Abaixo, explore como as mensagens personalizadas aparecem visualmente no Facetec e identifique facilmente as propriedades específicas de cada tela.


Ready Screen

IdentificadorExemplos para uso de texto
(1) READY_HEADER_1Prepare-se para seu
(2) READY_HEADER_2reconhecimento facial.
(3) READY_MESSAGE_1Posicione o seu rosto na moldura, aproxime-se
(4) READY_MESSAGE_2e toque em começar.
(5) READY_BUTTONComeçar

Feedback

IdentificadorExemplos para uso de texto
FEEDBACK_CENTER_FACECentralize Seu Rosto
FEEDBACK_FACE_NOT_FOUNDEnquadre o Seu Rosto
FEEDBACK_FACE_NOT_LOOKING_STRAIGHT_AHEADOlhe Para Frente
FEEDBACK_FACE_NOT_UPRIGHTMantenha a Cabeça Reta
FEEDBACK_HOLD_STEADYSegure Firme
FEEDBACK_MOVE_PHONE_AWAYAfaste-se
FEEDBACK_MOVE_PHONE_CLOSERAproxime-se
FEEDBACK_MOVE_PHONE_TO_EYE_LEVELTelefone ao Nível dos Olhos
FEEDBACK_USE_EVEN_LIGHTINGIlumine Seu Rosto Uniformemente
FEEDBACK_FRAME_YOUR_FACEEncaixe Seu Rosto no Espaço Oval
FEEDBACK_LOOK_STRAIGHT_IN_OVALOlhe Para Frente
FEEDBACK_HOLD_STEADY_1Aguente Firme: 1
FEEDBACK_HOLD_STEADY_2Aguente Firme: 2
FEEDBACK_HOLD_STEADY_3Aguente Firme: 3
FEEDBACK_REMOVE_DARK_GLASSESTire Seus Óculos de Sol
FEEDBACK_NEUTRAL_EXPRESSIONFique Neutro, Não Sorria
FEEDBACK_EYES_STRAIGHT_AHEADOlhe Para Frente
FEEDBACK_CONDITIONS_TOO_BRIGHTAmbiente Muito Iluminado
FEEDBACK_BRIGHTEN_YOUR_ENVIRONMENTAmbiente Muito Escuro

Result Screen

IdentificadorExemplos para uso de texto
RESULT_UPLOAD_MESSAGEEnviando...
RESULT_SUCCESS_MESSAGESucesso

Retry Screen

IdentificadorExemplos para uso de texto
(1) RETRY_HEADERVamos tentar novamente?
(2) RETRY_SUBHEADERSiga o exemplo de foto ideal abaixo:
(3) RETRY_MESSAGE_SMILEExpressão Neutra, Sem Sorrir.
(3) RETRY_MESSAGE_LIGHTINGEvite reflexos e iluminação extrema.
(3) RETRY_MESSAGE_CONTRASTLimpe Sua Câmera.
(4) RETRY_YOUR_PICTURESua foto.
(5) RETRY_IDEAL_PICTUREFoto ideal.
(6) RETRY_BUTTONTentar novamente.