# 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()
```
