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

158 lines
4.5 KiB
Markdown

# 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>` 类型,使用 `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()
```