Personalização
Saiba como personalizar nosso SDK e deixá-lo com a aparência do seu app.
Criação de layout personalizado
Para criar um novo layout, recomendamos que você use o modelos padrão dos SDKs e faça as alterações desejadas.
Passo a passo
Declare a dependência de
CameraViewno arquivo gradle no nível do app.
// Biblioteca principal do CameraX usando a implementação camera2
implementation "androidx.camera:camera-view:1.3.4"2. Crie um arquivo de layout no diretório de layout do seu projeto usando o modelo CAF.
3. Crie suas views e parametrize a visibilidade e os métodos de chamada do ViewModel de cada SDK correspondente de acordo com as tabelas a seguir. Exemplo:
<layout>
...
<androidx.camera.view.PreviewView
android:id="@id/cameraImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="@{viewModel.cameraVisibility ? View.VISIBLE : View.GONE}"
/>
...
</layout>Variáveis e métodos usados no layout
Todos os métodos e variáveis descritos abaixo são acessados pela classe SDKViewModel.
Métodos
takePhoto()
Responsável por iniciar a captura de imagem no modo MANUAL
Void
DocumentDetector, PassiveFaceLiveness
close()
Responsável por fechar o SDK.
Void
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
switchCamera()
Responsável por inverter a câmera.
Void
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
Variáveis de estado
O layout usado no SDK é composto por várias variáveis de estado; essas variáveis são responsáveis por identificar o estado em que o SDK se encontra a cada momento de sua execução:
loadingStatus
Indica o estado de "carregando"
Booleano
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
readyToCaptureStatus
Indica que o SDK está pronto para capturar, após realizar todas as validações de sensores, enquadramento, rosto etc.
Booleano
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
stepDoneSuccessfullyStatus
Indica que a etapa de captura terminou com sucesso
Booleano
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
validationFailureStatus
Indica se há alguma falha nas verificações de sensor, qualidade, enquadramento, distância do rosto etc.
Booleano
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
validationFailureId
Indica que tipo de erro ocorreu. Veja a tabela abaixo
ValidationFailure
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
captureModeStatus
Indica o modo de captura ativado. Pode variar entre AUTOMATIC e MANUAL
CaptureMode
DocumentDetector, PassiveFaceLiveness
maskStatus
Indica o status da máscara. Pode variar de NORMAL, SUCCESS a ERROR
Mask
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
maskLayout
Responsável por retornar o ID do recurso Drawable usado para definir a máscara.
Inteiro
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
previousStepName
Nome da etapa anterior que foi executada. Caso contrário, o valor será nulo. Exemplo: verso do documento de identidade.
String
DocumentDetector v7.x ou inferior
Variáveis de visibilidade
popUpVisibility
Indica a visibilidade do pop-up de inicialização da etapa
Booleano
DocumentDetector
manualCaptureButtonVisibility
Indica a visibilidade do botão de captura manual
Booleano
DocumentDetector, PassiveFaceLiveness
switchCameraButtonVisibility
Indica a visibilidade do botão de inverter a câmera
Booleano
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
statusVisibility
Responsável pela visibilidade da mensagem de status do SDK.
Booleano
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
statusMessage
Retorna a mensagem de status. Personalize com MessageSettings
String
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
feedbackStatusMessage
Retorna a mensagem de status. Personalize com MessageSettings
String
DocumentDetector
cameraVisibility
Responsável pela visibilidade da câmera.
Booleano
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
maskVisibility
Indica a visibilidade da máscara.
Booleano
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
switchButtonVisibility
Responsável pela visibilidade do botão de girar a câmera.
Esta variável foi descontinuada; recomendamos usar a variável switchCameraButtonVisibility.
Booleano
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
serverRequesting
Responsável pela visibilidade do carregamento exibido pelo SDK.
Esta variável foi descontinuada; recomendamos usar a variável loadingStatus.
Booleano
DocumentDetector v7.x ou inferior, PassiveFaceLiveness, FaceAuthenticator
buttonVisibility
Define a visibilidade do botão de captura manual.
Esta variável foi descontinuada; use manualCaptureButtonVisibility.
Booleano
DocumentDetector v7.x ou inferior, PassiveFaceLiveness
ValidationFailure
Cada SDK contém vários erros de validação que podem ocorrer durante a execução. A maioria deles gera o estado de "máscara de erro" e impede que a captura seja realizada:
SENSOR_LUMINOSITY_FAILURE
Sensor de luminosidade. O ambiente está muito escuro
DocumentDetector, PassiveFaceLiveness
SENSOR_ORIENTATION_FAILURE
Sensor de orientação. O dispositivo não está na posição correta
DocumentDetector, PassiveFaceLiveness
SENSOR_STABILITY_FAILURE
Sensor de estabilidade. O dispositivo está em movimento
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
FRAMING_FAILURE
Enquadramento de documento ou rosto
DocumentDetector, PassiveFaceLiveness, FaceAuthenticator
EYES_CLOSED_FAILURE
Foi identificado um rosto com os olhos fechados
PassiveFaceLiveness, FaceAuthenticator
FACE_NOT_FOUND
Nenhum rosto foi encontrado
PassiveFaceLiveness, FaceAuthenticator
FACE_TOO_FAR
Rosto muito distante.
PassiveFaceLiveness, FaceAuthenticator
FACE_TOO_CLOSE
Rosto muito próximo.
PassiveFaceLiveness, FaceAuthenticator
ANGULATION_X_FAILURE
Ângulo incorreto do rosto no eixo X.
PassiveFaceLiveness
ANGULATION_Y_FAILURE
Ângulo incorreto do rosto no eixo Y.
PassiveFaceLiveness
ANGULATION_Z_FAILURE
Ângulo incorreto do rosto no eixo Z.
PassiveFaceLiveness
MULTIPLE_FACES_FAILURE
Vários rostos detectados.
PassiveFaceLiveness, FaceAuthenticator
QUALITY_FAILURE
A qualidade da captura do documento é muito baixa.
DocumentDetector
LIVENESS_FAILURE
Erro na prova de vida. É uma provável tentativa de fraude
PassiveFaceLiveness, FaceAuthenticator
TYPIFICATION_FAILURE
O tipo do documento ou o lado do documento não era esperado.
DocumentDetector
PASSPORT_COUNTRY_CODE_FAILURE
O código do país do passaporte (ou código emissor) não é permitido.
DocumentDetector
Usando layout no Builder
Após criar os arquivos desejados, crie um objeto do tipo DocumentDetector. Esse objeto serve para configurar todas as suas regras de negócio para o SDK, incluindo os atributos de personalização da interface:
Método do Builder
.setLayout(@LayoutRes Integer layoutId)
Substitui o layout padrão do SDK. Crie um arquivo na pasta de layout do seu projeto, copie o modelo de layout padrão correspondente ao SDK que você está integrando e faça as alterações desejadas.
Não. Aqui é o padrão para cada SDK.
Versões mais recentes
.setStyle(@StyleRes int styleResourceId)
Substitui o estilo padrão do SDK. No arquivo styles.xml do seu projeto, copie o modelo padrão e edite-o.
Não. Aqui é o padrão para cada SDK.
Versões mais recentes
.setMask(@DrawableRes Integer greenMask, @DrawableRes Integer whiteMask, @DrawableRes Integer redMask)
Substitui as máscaras para captura de um documento ou rosto: SUCCESS, NORMAL e FAIL, nessa ordem. Se você usar essa opção, utilize máscaras com a mesma área de detecção do documento e do rosto, pois essa região é muito importante para o algoritmo de captura.
Não. Aqui é o padrão para cada SDK.
DocumentDetector v7.x ou inferior
.setMask(MaskType type)
Define qual grupo de máscaras predefinidas no produto será usado pelo SDK:
MaskType.DEFAULT, com o padrão pontilhado no formato do documento ou rosto;MaskType.DETAILED, que exibe uma ilustração do documento solicitado - CNH ou RG - junto com a máscara pontilhada (apenas em DocumentDetector);MaskType.NONE, que remove totalmente a máscara.
Não. As máscaras padrão são usadas.
DocumentDetector v7.x ou inferior
Usando os métodos
Diferentes usos do método .setMask()
Criação de estilo personalizado
Para criar um novo estilo, recomendamos que você use o mesmo modelo que usamos; assim, será mais fácil fazer personalizações.
Personalização das máscaras
Para personalizar as máscaras, primeiro crie um recurso drawable no seu projeto. Você pode personalizar whiteMask, greenMask e redMask da forma que quiser. Nós fornecemos máscaras genéricas de documento e rosto que você pode usar como referência. Veja a setMask definição do método e exemplos em DocumentDetector.Builder. E veja também exemplos de integração de máscara personalizada.
Modelos padrão
Activity (setLayout)
Estilos (setStyle)
Máscara (setMask)
Activity (setLayout)
Estilo (setStyle)
Activity (setLayout)
Estilo (setStyle)
Máscara (setMask)
Activity (setLayout)
Estilo (setStyle)
Máscara (setMask)
Atualizado

