# 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` 类型,使用 `fold` 或 `onSuccess`/`onFailure` 处理结果 5. **系统服务**:此应用依赖于设备预装的 `android.bld.PrintManager` 系统服务,普通 Android 设备无此服务 ## 编译要求 - Android SDK 24+ - Kotlin - Jetpack Compose - AIDL 支持(已在 build.gradle.kts 中启用) ## 测试环境 此应用专为内置 PDA 打印机的定制 Android 设备设计,需要设备厂商在 `/system/framework/` 下预装 `android.bld.PrintManager` 服务。 ## 状态显示 应用顶部的状态卡片会实时显示: - 连接状态(绿色:已连接,红色:未连接) - 操作结果 - 错误信息 ## 示例代码 ### 基础使用 ```kotlin val printerManager = PrinterManager(context) // 绑定服务 printerManager.bindService() // 打印 printerManager.initPrinter() printerManager.printText2("Hello World\n") printerManager.start() printerManager.closePrinter() // 解绑 printerManager.unbindService() ``` ### 样式控制 ```kotlin printerManager.setFontSize(32) printerManager.setTextBold(true) printerManager.printText2("标题\n") printerManager.setTextBold(false) printerManager.printText2("内容\n") printerManager.start() ``` ### 打印二维码 ```kotlin printerManager.initPrinter() printerManager.printQR("https://example.com", 6) printerManager.start() printerManager.closePrinter() ```