Controle a Impressora do Dispositivo
Este guia explica como interagir com o hardware físico de impressão do dispositivo utilizando o PrinterRepository. Isso permite verificar a disponibilidade de papel e imprimir tanto comprovantes padrão quanto conteúdos personalizados.
Verificando o Status do Papel
Antes de tentar qualquer trabalho de impressão, a melhor prática é verificar se a impressora possui papel. Use a função checkPaper para consultar o status do hardware.
Repositório: PrinterRepository
Função: checkPaper
Exemplo de Implementação
Retorna true se houver papel disponível, false caso contrário.
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 -> {}
}
}Imprimindo um Comprovante Padrão
O SDK fornece um método integrado para gerar e imprimir um comprovante padrão utilizando dados de um objeto Transaction. Isso é útil para gerar rapidamente recibos em conformidade sem precisar desenhar o layout manualmente.
Função: printDefaultTicket
Parâmetros:
context: O contexto da aplicação Android.headerIcon: Uma imagemBitmappara imprimir no topo do comprovante (ex: o logotipo do seu estabelecimento).transaction: O objetoTransactioncontendo os detalhes do pagamento.
Exemplo de Implementação
suspend fun printReceipt(context: Context, logo: Bitmap, transaction: Transaction) {
val result = printerRepository.printDefaultTicket(
context = context,
headerIcon = logo,
transaction = transaction
)
handlePrintResult(result)
}Imprimindo Conteúdo Personalizado (Bitmaps)
Se você precisar de controle total sobre o design do comprovante (ex: adicionar cupons, códigos QR ou layouts personalizados), você pode renderizar seu conteúdo em um Bitmap e enviá-lo diretamente para a impressora.
Função: printBitmap
Parâmetros:
bitmap: O objetoBitmapa ser impresso.
Exemplo de Implementação
suspend fun printCustomDesign(myCustomBitmap: Bitmap) {
val result = printerRepository.printBitmap(
bitmap = myCustomBitmap
)
handlePrintResult(result)
}Tratando Resultados de Impressão
Ambos os métodos de impressão retornam um 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 Passos
- Configurar Pagamentos Bizum: Guias de integração para o Bizum.
- Configurar Alipay e WeChat QR: Guias para pagamentos via QR Code.
- Gerenciar Configurações do Dispositivo: Saiba como gerenciar os ajustes do dispositivo.
- Tokenizar Credenciais de Cartão: Saiba como gerenciar tokens de cartões.