Files
ops_android/README_PRINTER_TEST.md
T
2026-06-24 18:50:26 +08:00

4.5 KiB

PDA 打印机测试应用

这是一个用于测试内置 PDA 终端打印机的 Android 应用,通过 android.bld.PrintManager 系统服务进行打印控制。

功能特性

连接控制

  • 绑定服务:连接到系统的打印服务
  • 初始化打印机:初始化打印设备
  • 关闭打印机:释放打印设备
  • 解绑服务:断开打印服务连接

基础打印

  • 快速打印测试:一键完成初始化→打印→提交→关闭的完整流程
  • printText:标准文本打印方法
  • printText2:增强文本打印方法
  • start():提交打印队列,开始实际出纸

样式设置

  • 字体大小:调整打印文字大小
  • 粗体:设置文字粗体
  • 下划线:添加文字下划线
  • 浓度:调整打印浓度

二维码与条形码

  • 打印二维码:生成并打印 QR 码
  • 打印条形码:生成并打印一维条形码

走纸控制

  • 打印空行:添加空白行
  • 走纸间距:设置纸张走纸距离

综合测试

  • 运行完整测试:自动执行完整的功能测试流程,包含所有打印特性

使用方法

基本流程

  1. 绑定服务 → 连接到打印服务
  2. 初始化 → 初始化打印机硬件
  3. 设置样式(可选)→ 设置字体、粗体等
  4. 添加内容 → 调用 printText/printQR 等方法
  5. 提交打印 → 调用 start() 开始实际打印
  6. 关闭打印机 → 完成后释放资源

快速测试

点击 "快速打印测试" 按钮可以一键完成整个流程,打印 "Hello Printer!" 测试文本。

完整测试

点击 "运行完整测试" 按钮将执行包含以下内容的完整测试:

  • 标题(大字体、粗体)
  • 普通文本
  • 粗体文本
  • 下划线文本
  • 二维码
  • 条形码
  • 分隔线

代码结构

app/src/main/
├── aidl/android/bld/
│   └── IPrintManager.aidl          # AIDL 接口定义
├── java/com/example/ops_android/
│   ├── MainActivity.kt              # 主界面和测试 UI
│   └── printer/
│       └── PrinterManager.kt       # 打印机封装类

AIDL 接口

系统服务 android.bld.PrintManager 提供的主要方法:

方法 说明
initPrinter() 初始化打印机
closePrinter() 关闭打印机
printText(text) 打印文本
printText2(text) 打印文本(增强版)
printQR(content, size) 打印二维码
printBarcode(content, type, width, height) 打印条形码
printLine(count) 打印空行
start() 重要:提交打印,开始出纸
setFontSize(size) 设置字体大小
setTextBold(bold) 设置粗体
setUnderLine(underline) 设置下划线
setConcentration(level) 设置浓度

注意事项

  1. 必须调用 start():所有打印内容添加到队列后,必须调用 start() 才会实际打印出纸
  2. 服务绑定:需要先绑定服务并初始化打印机才能使用打印功能
  3. 资源释放:使用完毕后应调用 closePrinter()unbindService() 释放资源
  4. 错误处理:所有方法返回 Result<Unit> 类型,使用 foldonSuccess/onFailure 处理结果
  5. 系统服务:此应用依赖于设备预装的 android.bld.PrintManager 系统服务,普通 Android 设备无此服务

编译要求

  • Android SDK 24+
  • Kotlin
  • Jetpack Compose
  • AIDL 支持(已在 build.gradle.kts 中启用)

测试环境

此应用专为内置 PDA 打印机的定制 Android 设备设计,需要设备厂商在 /system/framework/ 下预装 android.bld.PrintManager 服务。

状态显示

应用顶部的状态卡片会实时显示:

  • 连接状态(绿色:已连接,红色:未连接)
  • 操作结果
  • 错误信息

示例代码

基础使用

val printerManager = PrinterManager(context)

// 绑定服务
printerManager.bindService()

// 打印
printerManager.initPrinter()
printerManager.printText2("Hello World\n")
printerManager.start()
printerManager.closePrinter()

// 解绑
printerManager.unbindService()

样式控制

printerManager.setFontSize(32)
printerManager.setTextBold(true)
printerManager.printText2("标题\n")
printerManager.setTextBold(false)
printerManager.printText2("内容\n")
printerManager.start()

打印二维码

printerManager.initPrinter()
printerManager.printQR("https://example.com", 6)
printerManager.start()
printerManager.closePrinter()