Guia Detalhado de Uso
Este guia apresenta todas as opções de configuração, personalização e uso do Certiface Doc SDK no Android.
Sumário
- 📌 Visão geral
- ✅ Requisitos de compatibilidade
- ⚙️Instalação
- 🚀 Inicialização do SDK
- 📦CertifaceDocConfig
- 🔍 Execução e callbacks
- 🧾CertifaceDocResult e erros
- 🎨 Customização — CertifaceDocTheme
- 🔤 Fontes (DocCoreFontsKey)
- 🧪 Ambiente de testes
- 🛠️ Boas práticas
- 💻 Aplicativo de exemplo
- 🔗 Links
📌Visão geral
O Certiface Doc SDK oferece documentoscopia (instruções, permissões, captura, QR, uploads, resultado) em Compose, com tema configurável. A dependência publicada é br.com.certiface:manager (versão alinhada ao release).
✅Requisitos de compatibilidade
| Item | Valor |
|---|---|
| Android mínimo | API 26 |
compileSdk | 36 (referência do projeto) |
| Kotlin | 2.0.x |
| Java | 17 |
| UI | Jetpack Compose (Material 3) |
| Ambientes | HML, PRD |
⚙️Instalação
settings.gradle.kts
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven("https://raw.githubusercontent.com/oititec/certiface-doc-versions/main")
}
}build.gradle.kts (app)
dependencies {
implementation("br.com.certiface.doc:manager:1.0.0")
}🚀Inicialização do SDK
import br.com.certiface.doc.manager.main.CertifaceDocSDK
val documentManager = CertifaceDocSDK.initialize(context, config)📦CertifaceDocConfig
Criada com createSDKConfig (br.com.certiface.doc.manager.exports).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
appKey | String | Sim | Chave da aplicação. |
environment | Environment | Não (HML) | HML ou PRD. |
theme | CertifaceDocTheme? | Não | Customização; null = tema padrão. |
enableCnhDigital | Boolean | Não (false) | Fluxo CNH digital. |
enablePdfUpload | Boolean | Não (false) | Envio de PDF. |
val config = createSDKConfig(
appKey = appKey,
environment = Environment.PRD,
theme = meuTemaOpcional,
enableCnhDigital = true,
enablePdfUpload = true
)🔍Execução e callbacks
import br.com.certiface.doc.manager.exports.ResultCallback
import br.com.certiface.doc.domain.models.CertifaceDocResponse
import br.com.certiface.doc.domain.models.CertifaceDocResult
documentManager.start(
config,
object : ResultCallback<CertifaceDocResult> {
override fun onSuccess(result: CertifaceDocResponse) {
val payload = result.docResult
}
override fun onError(result: CertifaceDocResponse) {
val erro = result.errorResponse
}
}
)🧾CertifaceDocResult e erros
Variante CertifaceDocResult | Conteúdo |
|---|---|
Success | documentCode, documentData |
Error | message, code opcional |
Cancelled | Cancelamento |
CertifaceDocResponse combina docResult e errorResponse; em falhas use CertifaceDocErrorType.
🎨Customização — CertifaceDocTheme
Esta secção cobre personalização visual do SDK. A ideia é simples: você monta um CertifaceDocTheme, escolhe apenas as etapas que quer ajustar e passa esse tema na configuração do SDK. No guia rápido o tema costuma ser null até você precisar aplicar a identidade visual do seu produto.
Em termos práticos, tudo começa com CertifaceDocTheme.build { }.
| Método no tema | Escopo |
|---|---|
setInstructionsTheme | Instruções iniciais e opções de documento |
setPermissionTheme | Permissão de câmera |
setCaptureTheme | Captura frente/verso |
setLoadingDialogTheme | Loading |
setQrScreenTheme | QR Code |
setDocumentUploadTheme | Upload PDF genérico |
setCnhUploadTheme | Upload CNH digital |
setResultScreenTheme | Resultado |
setInstructionScreenTheme | Instruções complementares |
setFontsKey | DocCoreFontsKey → R.font |
setCustomScreens | Telas 100% em Composables próprios |
Há dois níveis de customização:
- Granular: você altera cores, textos, ícones e dimensões de etapas específicas.
- Completa: você substitui telas inteiras com
setCustomScreens.
🎨Entrada do tema e formatos
import br.com.certiface.doc.domain.theme.CertifaceDocTheme
import br.com.certiface.doc.designsystem.ui.builders.DocCoreCustomInstructionsBuilder
val theme = CertifaceDocTheme.build {
setInstructionsTheme(DocCoreCustomInstructionsBuilder.build { /* ... */ })
// setPermissionTheme(PermissionCustomsBuilder.build { ... })
// setCaptureTheme, setLoadingDialogTheme, setQrScreenTheme, ...
// setFontsKey(mapOf(DocCoreFontsKey to R.font....))
}
val config = createSDKConfig(
appKey = appKey,
environment = environment,
theme = theme,
enableCnhDigital = true,
enablePdfUpload = true
)- Cores:
Int(R.color) ouStringhex, conforme o método. - Medidas: bordas/raios em
Float(ouIntonde aplicável). - Elementos extra: permitidos se não quebrarem o comportamento obrigatório do SDK.
📝Instruções
Para customizar a tela inicial e as opções de documento, use setInstructionsTheme(...) dentro do CertifaceDocTheme.build { }. Esse bloco concentra os ajustes visuais dessa etapa.
Os números na figura correspondem à tabela.

Tela de Instruções
| ID | Seção | Métodos |
|---|---|---|
| (1) | Back | setInstructionBackButtonIcon() · setInstructionBackButtonIconColor() · setInstructionBackButtonBackgroundColor() · setInstructionBackButtonBorderColor() |
| (2) | Background | setInstructionBackgroundColor() · setInstructionLoadingColor() |
| (3) | Context image | setInstructionContextImage() |
| (4) | Bottom sheet | setInstructionBottomSheetColor() · setInstructionBottomSheetCornerRadius() |
| (5) | Título | setInstructionTitle() · setInstructionTitleColor() |
| (6) | Legenda | setInstructionCaption() · setInstructionCaptionColor() |
| (7) | Opção documento físico | setInstructionPhysicalDocumentOption* (imagem, cores, borda, título, descrição, seta, etc.) |
| (8) | Opção CNH digital | setInstructionDigitalDocumentOption* |
| (9) | Opção PDF | setInstructionFileDocumentOption* |
| (0) | Status bar | setInstructionStatusBarColor() · setInstructionStatusBarIsDarkIcons() |
📋Instruções complementares
Para customizar essa etapa, use setInstructionScreenTheme(...). Aqui você consegue ajustar título, legenda, ícones e textos das instruções numeradas, imagem de contexto, botão voltar, botão continuar, bottom sheet e status bar.
📷Permissão de câmera
Para customizar a tela de permissão de câmera, use setPermissionTheme(...).

Tela de Permissão
| ID | Seção | Métodos |
|---|---|---|
| (1) | Voltar | setBackButtonIcon() |
| (2) | Fundo | setBackgroundColor() |
| (3) | Ícone câmera | setCameraIcon() |
| (4) | Título | setTitle() · setTitleColor() |
| (5) | Subtítulo | setSubTitle() · setSubTitleColor() |
| (6) | Permitir | setPermissionButtonText() · setPermissionButtonColor() · setPermissionButtonTextColor() |
| (0) | Status bar | setStatusBarColor() · setStatusBarIsDarkIcons() |
⏳Diálogo de carregamento
Para customizar o loading, use setLoadingDialogTheme(...).

Tela de Loading
| ID | Seção | Métodos |
|---|---|---|
| (1) | Fundo | setBackgroundColor() |
| (2) | Progress | setCircularProgressIndicatorColor() · setCircularProgressIndicatorSize() · setCircularProgressIndicatorWidth() |
| (3) | Status bar | setStatusBarColor() · setStatusBarIsDarkIcons() |
🔳QR Code
Para customizar a etapa de leitura por QR Code, use setQrScreenTheme(...).

Tela QR Code
| ID | Seção | Métodos |
|---|---|---|
| (1) | Overlay / alvo | setQrCodeOverlayImage() · setQrCodeSquareTargetColor() |
| (2) | Voltar | setQrCodeBackButtonIcon() · setQrCodeBackButtonIconColor() · setQrCodeBackButtonBackgroundColor() · setQrCodeBackButtonBorderColor() |
| (3) | Bottom sheet | setQrCodeBottomSheetColor() · setQrCodeBottomSheetCornerRadius() |
| (4) | Título / legenda | setQrCodeTitle() · setQrCodeTitleColor() · setQrCodeCaption() · setQrCodeCaptionColor() |
| (5) | Botão arquivo | setQrCodeFileButtonText() · setQrCodeFileButtonTextColor() · setQrCodeFileButtonBackgroundColor() · setQrCodeFileButtonBorderColor() · setQrCodeFileButtonCornerRadius() |
| (0) | Status bar | setQrCodeStatusBarColor() · setQrCodeStatusBarIsDarkIcons() |
📤Upload (PDF / CNH digital)
Para customizar as telas de upload, use os métodos abaixo no tema:
setDocumentUploadTheme— PDF genéricosetCnhUploadTheme— CNH digital

Tela de Upload
| ID | Seção | Métodos (resumo) |
|---|---|---|
| (1) | Fundo / status | setUploadBackgroundColor() · setUploadStatusBarColor() · setUploadStatusBarIsDarkIcons() |
| (2) | Voltar / fechar | setUploadBackButton* · setUploadCloseButton* |
| (3) | Título / descrição | setUploadFileTitle* · setUploadFileDescription* |
| (4) | Picker | setUploadFilePicker* · setUploadAreaHeightDp() |
| (5) | Arquivo selecionado | setUploadSelectedFile* · setUploadFileName* · setUploadDeleteFileIcon* · setUploadSelectedFileSuccess* |
| (6) | Enviar | setUploadSendButton* |
Os setters dessa etapa seguem o prefixo setUpload..., sempre agrupados por área da tela.
🧾Resultado
Para customizar a tela final de sucesso ou erro, use setResultScreenTheme(...).

Tela de Resultado
| ID | Seção | Métodos |
|---|---|---|
| (1) | Sucesso | setSuccessBackgroundColor() · setSuccessIcon() · setSuccessText() · setSuccessTextColor() |
| (2) | Erro | setErrorBackgroundColor() · setErrorIcon() · setErrorText() · setErrorTextColor() |
| (3) | Retry | setRetryButtonColor() · setRetryButtonText() · setRetryButtonTextColor() |
| (4) | Status bar OK | setStatusBarSuccessColor() · setStatusBarSuccessIsDarkIcons() |
| (5) | Status bar erro | setStatusBarErrorColor() · setStatusBarErrorIsDarkIcons() |
📸Captura (frente/verso)
Para customizar a captura de frente e verso, use setCaptureTheme(...).
Os números na figura correspondem à tabela.

Tela de Captura
| ID | Seção | Métodos |
|---|---|---|
| (1) | Voltar | setBackButtonIcon() · setBackButtonColor() |
| (2) | Fechar | setCloseButtonIcon() · setCloseButtonColor() |
| (3) | Indicador de frente | setFrontIndicatorText() · setFrontIndicatorImage() · setIndicatorColor() · setIndicatorTextColor() · setIndicatorTextFont() · setSelectedIndicatorColor() |
| (4) | Indicador de verso | setBackIndicatorText() · setBackIndicatorImage() · setIndicatorColor() · setIndicatorTextColor() · setIndicatorTextFont() · setSelectedIndicatorColor() |
| (5) | Texto guia | setInstructionsGuideTextFront() · setInstructionsGuideTextBack() · setInstructionsGuideTextConfirmation() · setInstructionsGuideColor() · setInstructionsGuideFont() |
| (6) | Área de captura e revisão da imagem | setCapturePreviewBorderColorUncaptured() · setCapturePreviewBorderColorCaptured() |
| (7) | Fundo da tela | setBackgroundColor() |
| (8) | Botão de captura | setCaptureButtonIcon() · setCaptureButtonColor() · setCaptureButtonBorderColor() |
| (9) | Bottom sheet de confirmação | setBottomSheetColor() · setBottomSheetCornerRadius() |
| (10) | Mensagem principal da confirmação | setConfirmationMessageText() · setConfirmationMessageColor() · setConfirmationMessageFont() |
| (11) | Botão refazer | setRetryButtonText() · setRetryButtonColor() · setRetryButtonFont() |
| (12) | Botão de confirmação | setConfirmButtonText() · setConfirmButtonTextConfirmation() · setConfirmButtonColor() · setConfirmButtonFont() |
Observações:
- A tabela segue a numeração visível na figura.
setCaptureStatusBarColor()esetCaptureStatusBarIsDarkIcons()são públicos, mas não aparecem numerados nessa ilustração.
⚙️setCustomScreens
setCustomScreensPara substituir telas inteiras por Composables: setCustomScreens(CustomScreensBuilder.build { ... }), apenas nas etapas que quiser trocar. Para cores/textos por região, use os builders e tabelas acima.
🔤Fontes (DocCoreFontsKey)
Use setFontsKey(mapOf(DocCoreFontsKey to R.font....)) dentro de CertifaceDocTheme.build. As chaves disponíveis estão no enum DocCoreFontsKey (br.com.certiface.doc.designsystem.ui.doccore), por papel de texto em cada tela (instruções, permissão, captura, QR, upload CNH/PDF, resultado).
🧪Ambiente de testes
HML+ AppKey de homologação.- Rede estável; permissão de câmera quando o fluxo exigir.
🛠️Boas práticas
- Uma inicialização coerente com o ciclo de vida do app.
- Tratar
CancelledeonError. - Preferir builders granulares;
setCustomScreenssó para UI totalmente própria.
💻 Aplicativo de exemplo
Se você quiser ver uma integração pronta, use o repositório certiface-sdk-demo como referência de implementação do app cliente:
O demo é útil para validar configuração, fluxo básico e estrutura de integração. Ainda assim, a referência de contrato continua sendo a API pública documentada neste guia.
Links
- Guia rápido de uso (configuração mínima)
- Doc Core Android (apenas referência de migração; ver callout no início deste guia)
Updated 25 days ago
