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
- Configuração do AndroidManifest
- 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")
}Configuração do AndroidManifest
O app integrador deve declarar no AndroidManifest.xml do módulo app as entradas abaixo, antes do bloco <application>:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<application
...>
...
</application>
</manifest>| Declaração | Motivo |
|---|---|
uses-feature + android.hardware.camera (required="false") | Indica uso de câmera sem tornar o app incompatível com dispositivos que não possuem hardware de câmera. |
android.permission.CAMERA | Obrigatória para captura de documento físico e leitura de QR Code (CNH digital). |
android.permission.INTERNET | Necessária para comunicação com a API Certiface. Declare explicitamente no app integrador por garantia. |
O SDK trata a solicitação de permissão de câmera em runtime na tela dedicada do fluxo. A permissão de internet não exige prompt ao usuário — basta a declaração no manifest.
Se o seu app já declara
INTERNETouCAMERA, não é necessário duplicar; o merge de manifests do Android unifica as entradas.
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 |
|
(2) | Background |
|
(3) | Context image |
|
(4) | Bottom sheet |
|
(5) | Título |
|
(6) | Legenda |
|
(7) | Opção documento físico |
|
(8) | Opção CNH digital |
|
(9) | Opção PDF |
|
(0) | Status bar |
|
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 |
|
(2) | Fundo |
|
(3) | Ícone câmera |
|
(4) | Título |
|
(5) | Subtítulo |
|
(6) | Permitir |
|
(0) | Status bar |
|
Diálogo de carregamento
Para customizar o loading, use setLoadingDialogTheme(...).

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

Tela QR Code
ID | Seção | Métodos |
|---|---|---|
(1) | Overlay / alvo |
|
(2) | Voltar |
|
(3) | Bottom sheet |
|
(4) | Título / legenda |
|
(5) | Botão arquivo |
|
(0) | Status bar |
|
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 |
|
(2) | Voltar / fechar |
|
(3) | Título / descrição |
|
(4) | Picker |
|
(5) | Arquivo selecionado |
|
(6) | Enviar |
|
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 |
|
(2) | Erro |
|
(3) | Retry |
|
(4) | Status bar OK |
|
(5) | Status bar erro |
|
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 |
|
(2) | Fechar |
|
(3) | Indicador de frente |
|
(4) | Indicador de verso |
|
(5) | Texto guia |
|
(6) | Área de captura e revisão da imagem |
|
(7) | Fundo da tela |
|
(8) | Botão de captura |
|
(9) | Bottom sheet de confirmação |
|
(10) | Mensagem principal da confirmação |
|
(11) | Botão refazer |
|
(12) | Botão de confirmação |
|
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)
