Saltar al contenido principal
MÓDULO NATIVO

Captura de Documento

Esta documentación provee una guía detallada para desarrolladores sobre cómo integrar e implementar el componente Composable DicioCameraDocument en aplicaciones Android utilizando Jetpack Compose.
Regresar
ANDROIDJETPACK COMPOSEv2.2.0

Compatibilidad y Requisitos

Lenguaje
Kotlin / Java
OS Min
Android 7+
API / Target
API 24+
IDE
Jellyfish+

1. Configuración del Proyecto

Configura las dependencias del proyecto agregando la librería en tus archivos de Gradle y el catálogo de versiones.

libs.versions.toml

[versions]
dicioDocument = "2.2.0"

[libraries]
dicio-documentcapturesdk = { group = "io.bitbucket.juarezsdco", name = "documentcapturesdk", version.ref = "dicioDocument" }

build.gradle

dependencies {
implementation(libs.dicio.documentcapturesdk)
}

2. Integración y Uso

El SDK se integra como un componente @Composable. Simplemente llama a la función DicioCameraDocument dentro de tu jerarquía de Compose. El componente manejará internamente la carga y validación de la licencia antes de mostrar la cámara.

Composable.kt

@Composable
fun DicioCameraDocument(
styledScreen: dicioDocumentStyled = dicioDocumentStyled(),
callback: DicioCaptureCallback,
applicationID: String,
token: String,
urlBase: String
)

Parámetros del Composable

  • styledScreen: (Opcional) Objeto dicioDocumentStyled para personalizar la apariencia de la pantalla.
  • callback: Implementación de DicioCaptureCallback para manejar los eventos del SDK.
  • applicationID: (Requerido) El ID de la aplicación proporcionado para validar la licencia.
  • token: (Requerido) El token de autenticación (Bearer Token) para autorizar las solicitudes.
  • urlBase: (Requerido) La URL base del servidor donde se validará el token y la licencia.

Personalización (Programática)​

La personalización de la interfaz se realiza pasando un objeto dicioDocumentStyled al componente. Clase dicioDocumentStyled

PropiedadTipoDescripciónValor por Defecto
titleInt (StringRes)ID del recurso de texto para el título.R.string.dicio_dc_title
subtitleInt (StringRes)ID del recurso de texto para el subtítulo.R.string.dicio_dc_subtitle
backgroundColorColorColor de fondo de la pantalla de captura.Color(0xFF000000) (Negro)
titleColorColorColor del texto del título.Color.White
subtitleColorColorColor del texto del subtítulo.Color.White
buttonCaptureColorColorColor del botón de captura.Color.White
buttonCancelColorColor Color del ícono para cerrar o cancelar.Color.White

Implementación de Callbacks​

Deberás implementar la interfaz DicioCaptureCallback para recibir las respuestas del SDK.

MétodoDescripciónParámetros
DicioCaptureOnSuccessInvocado cuando la captura de imagen es exitosa.image: Imagen capturada en formato String (Base64).
DicioCaptureOnFailureInvocado si ocurre un error durante el proceso.errorMessage: Mensaje de error en String (JSON).
DicioCaptureOnCancelInvocado si el usuario cancela la captura.cancelMessage: Motivo de la cancelación.
DicioCaptureOnInfoCameraProvee información sobre el estado de la cámara.message: Mensaje de información en String (JSON).

3. Ejemplo Completo de Uso

El siguiente ejemplo muestra cómo integrar DicioCameraDocument, pasar los parámetros de validación y manejar el resultado.

DocumentCaptureScreen.kt

@Composable
fun DocumentCaptureScreen(
appId: String,
userToken: String,
apiBaseUrl: String
) {
var capturedImageBase64 by remember { mutableStateOf<String?>(null) }

if (capturedImageBase64 == null) {
DicioCameraDocument(
applicationID = appId,
token = userToken,
urlBase = apiBaseUrl,
callback = object : DicioCaptureCallback {
override fun DicioCaptureOnSuccess(image: String) {
capturedImageBase64 = image
}
override fun DicioCaptureOnFailure(errorMessage: String) {
println("Capture error: " + errorMessage)
}
override fun DicioCaptureOnCancel(cancelMessage: String) {
println("Capture canceled: " + cancelMessage)
}
override fun DicioCaptureOnInfoCamera(message: String) {
println("Camera Info: " + message)
}
}
)
} else {
CapturedPhotoResult(
base64Image = capturedImageBase64,
onRetake = { capturedImageBase64 = null }
)
}
}

Manejo de Errores y Códigos de Respuesta​

Los mensajes se entregan como texto con formato JSON utilizando las llaves "Code" y "Message".

Errores de Licencia y Conectividad Estos errores ocurren antes de mostrar la cámara. El SDK presentará un mensaje en pantalla y notificará mediante DicioCaptureOnFailure.

Código de errorDescripción
NO_INTERNETNo hay conexión a internet para validar la licencia.
APPLICATION_ID_EMPTYEl parámetro applicationID está vacío.
BASE_URL_EMPTYEl parámetro urlBase está vacío.
TOKEN_EMPTYEl parámetro token está vacío.
TOKEN_NOT_VALIDEl token proporcionado es inválido o expiró.
SERVER_ERROR_NOT_LICENCELa respuesta del servidor no incluía una licencia válida.
JSON_PARSE_ERRORError procesando la respuesta del servidor.
SERVER_ERRORError general al comunicarse con el servidor.

Errores de Cámara

Código de errorDescripción
ERROR_PERMISSIONEl usuario denegó los permisos de cámara.
ERROR_CAMERAError general al iniciar o enlazar la cámara.
ERROR_TAKING_PHOTOError durante la captura de foto (devuelto por CameraX).
ERROR_IMAGE_FORMATEl formato de la foto de la cámara no es JPEG.

Mensajes de Información de Cámara

Código de informaciónDescripción
CAMERA_STARTEDLa cámara ha iniciado y está lista para capturar.
CAMERA_TAKE_PHOTOLa foto ha sido tomada y está siendo procesada.