4.5 KiB
4.5 KiB
PDA 打印机测试应用
这是一个用于测试内置 PDA 终端打印机的 Android 应用,通过 android.bld.PrintManager 系统服务进行打印控制。
功能特性
连接控制
- 绑定服务:连接到系统的打印服务
- 初始化打印机:初始化打印设备
- 关闭打印机:释放打印设备
- 解绑服务:断开打印服务连接
基础打印
- 快速打印测试:一键完成初始化→打印→提交→关闭的完整流程
- printText:标准文本打印方法
- printText2:增强文本打印方法
- start():提交打印队列,开始实际出纸
样式设置
- 字体大小:调整打印文字大小
- 粗体:设置文字粗体
- 下划线:添加文字下划线
- 浓度:调整打印浓度
二维码与条形码
- 打印二维码:生成并打印 QR 码
- 打印条形码:生成并打印一维条形码
走纸控制
- 打印空行:添加空白行
- 走纸间距:设置纸张走纸距离
综合测试
- 运行完整测试:自动执行完整的功能测试流程,包含所有打印特性
使用方法
基本流程
- 绑定服务 → 连接到打印服务
- 初始化 → 初始化打印机硬件
- 设置样式(可选)→ 设置字体、粗体等
- 添加内容 → 调用 printText/printQR 等方法
- 提交打印 → 调用 start() 开始实际打印
- 关闭打印机 → 完成后释放资源
快速测试
点击 "快速打印测试" 按钮可以一键完成整个流程,打印 "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) |
设置浓度 |
注意事项
- 必须调用 start():所有打印内容添加到队列后,必须调用
start()才会实际打印出纸 - 服务绑定:需要先绑定服务并初始化打印机才能使用打印功能
- 资源释放:使用完毕后应调用
closePrinter()和unbindService()释放资源 - 错误处理:所有方法返回
Result<Unit>类型,使用fold或onSuccess/onFailure处理结果 - 系统服务:此应用依赖于设备预装的
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()