Controlar la impresora del dispositivo
Esta guía explica cómo interactuar con el hardware físico de impresión del dispositivo utilizando el PrinterRepository. Esto permite verificar la disponibilidad de papel e imprimir tanto recibos estándar como contenidos personalizados.
Comprobar el estado del papel
Antes de intentar cualquier tarea de impresión, la mejor práctica es verificar que la impresora tiene papel. Utiliza la función checkPaper para consultar el estado del hardware.
Repositorio: PrinterRepository
Función: checkPaper
Ejemplo de implementación
Devuelve true si hay papel disponible, false en caso contrario.
suspend fun verifyPaperAvailability() {
val result = printerRepository.checkPaper()
when (result) {
is RepositoryResult.Success -> {
val hasPaper = result.data
if (hasPaper) {
println("✅ Printer is ready.")
} else {
println("⚠️ Printer is out of paper.")
}
}
is RepositoryResult.ConnectionError -> println("❌ Connection Error")
is RepositoryResult.ProtocolError -> println("❌ Error: ${result.type}")
else -> {}
}
}Imprimir un ticket estándar
El SDK proporciona un método integrado para generar e imprimir un recibo estándar utilizando datos de un objeto Transaction. Esto es útil para generar rápidamente recibos conformes sin tener que diseñar el diseño manualmente.
Función: printDefaultTicket
Parámetros:
context: El contexto de la aplicación Android.headerIcon: Una imagenBitmappara imprimir en la parte superior del recibo (p. ej., el logotipo de tu comercio).transaction: El objetoTransactionque contiene los detalles del pago.
Ejemplo de implementación
suspend fun printReceipt(context: Context, logo: Bitmap, transaction: Transaction) {
val result = printerRepository.printDefaultTicket(
context = context,
headerIcon = logo,
transaction = transaction
)
handlePrintResult(result)
}Imprimir contenido personalizado (Bitmaps)
Si necesitas un control total sobre el diseño del recibo (p. ej., añadir cupones, códigos QR o diseños personalizados), puedes renderizar tu contenido en un Bitmap y enviarlo directamente a la impresora.
Función: printBitmap
Parámetros:
bitmap: El objetoBitmapa imprimir.
Ejemplo de implementación
suspend fun printCustomDesign(myCustomBitmap: Bitmap) {
val result = printerRepository.printBitmap(
bitmap = myCustomBitmap
)
handlePrintResult(result)
}Gestión de resultados de impresión
Ambos métodos de impresión devuelven un RepositoryResult<Boolean>.
fun handlePrintResult(result: RepositoryResult<Boolean>) {
when (result) {
is RepositoryResult.Success -> {
if (result.data) {
println("✅ Print job completed successfully.")
} else {
println("❌ Print job failed.")
}
}
is RepositoryResult.ConnectionError -> println("❌ Connection Error")
is RepositoryResult.ProtocolError -> println("❌ Protocol Error: ${result.type}")
else -> {}
}
}Próximos pasos
- Configurar Pagos Bizum: Guías de integración para Bizum.
- Configurar Alipay y WeChat QR: Guías para pagos mediante códigos QR.
- Gestionar Ajustes del Dispositivo: Aprende a gestionar los ajustes del dispositivo.
- Tokenizar Credenciales de Tarjeta: Aprende a gestionar tokens.