# PDA 打印机测试应用

一个用于测试内置 PDA 终端打印机的 Android 应用，基于 Jetpack Compose 构建。

![版本](https://img.shields.io/badge/版本-1.1-blue)
![SDK](https://img.shields.io/badge/MinSDK-24-green)
![构建](https://img.shields.io/badge/构建-成功-brightgreen)

## 📱 应用截图

应用提供完整的打印机测试界面，包含：
- 实时连接状态显示
- 完整的打印功能测试
- 样式设置控制
- 二维码/条形码打印
- 走纸控制
- 一键综合测试

## ✨ 功能特性

### 🔌 连接管理
- 绑定/解绑打印服务
- 初始化/关闭打印机
- 实时状态监控

### 📄 打印功能
- 文本打印 (printText / printText2)
- 二维码生成与打印
- 条形码生成与打印
- 图片打印支持

### 🎨 样式控制
- 字体大小调整
- 粗体设置
- 下划线设置
- 打印浓度控制

### 📏 走纸控制
- 打印空行
- 走纸间距设置
- 标签纸支持

### 🧪 测试工具
- 快速打印测试
- 单项功能测试
- 完整综合测试

## 🚀 快速开始

### 环境要求

- Android Studio Hedgehog 或更高版本
- JDK 11
- Android SDK 24+
- 目标设备需预装 `android.bld.PrintManager` 系统服务

### 编译安装

#### 方法一：使用自动构建脚本（推荐）

```bash
./build_release.sh
```

该脚本会自动：
- 增加版本号
- 清理并编译 Release APK
- 复制 APK 到项目根目录

#### 方法二：手动编译

```bash
./gradlew clean assembleRelease
```

生成的 APK 位于：
```
app/build/outputs/apk/release/PDA_Printer_Test_v{版本号}_release_{日期}.apk
```

### 安装到设备

```bash
adb install -r app/build/outputs/apk/release/PDA_Printer_Test_v1.1_2_release_20260624.apk
```

## 📖 使用说明

### 基本流程

1. **启动应用** → 打开 PDA 打印机测试应用
2. **绑定服务** → 点击"绑定服务"按钮连接打印服务
3. **初始化** → 点击"初始化"按钮初始化打印机
4. **测试打印** → 使用各项测试按钮或运行完整测试
5. **关闭释放** → 完成后点击"关闭打印机"和"解绑服务"

### 快速测试

点击 **"快速打印测试"** 按钮可一键完成：
```
初始化 → 打印测试文本 → 提交打印 → 关闭打印机
```

### 综合测试

点击 **"运行完整测试"** 按钮将打印包含以下内容的测试单：
- 标题（大字体、粗体）
- 普通文本示例
- 粗体文本示例
- 下划线文本示例
- 二维码（https://example.com）
- 条形码（123456789012）
- 分隔线

## 🏗️ 项目结构

```
ops_android/
├── app/
│   └── src/
│       └── main/
│           ├── aidl/android/bld/
│           │   └── IPrintManager.aidl          # 打印服务接口定义
│           ├── java/com/example/ops_android/
│           │   ├── MainActivity.kt             # 主界面
│           │   └── printer/
│           │       └── PrinterManager.kt       # 打印机管理器
│           └── AndroidManifest.xml
├── build_release.sh                            # 自动构建脚本
├── BUILD_INFO.md                               # 构建信息
└── README_PRINTER_TEST.md                      # 详细文档
```

## 🔧 API 参考

### PrinterManager 主要方法

```kotlin
// 连接控制
fun bindService(): Boolean
fun unbindService()
fun initPrinter(): Result<Unit>
fun closePrinter(): Result<Unit>

// 打印内容
fun printText(text: String): Result<Unit>
fun printText2(text: String): Result<Unit>
fun printQR(content: String, size: Int = 6): Result<Unit>
fun printBarcode(content: String, type: Int = 0, width: Int = 2, height: Int = 60): Result<Unit>
fun printLine(lineCount: Int = 1): Result<Unit>
fun start(): Result<Unit>  // ⚠️ 必须调用才会实际打印

// 样式设置
fun setFontSize(size: Int): Result<Unit>
fun setTextBold(bold: Boolean): Result<Unit>
fun setUnderLine(underline: Boolean): Result<Unit>
fun setConcentration(level: Int): Result<Unit>
```

### 使用示例

```kotlin
val printerManager = PrinterManager(context)

// 打印文本
printerManager.bindService()
printerManager.initPrinter()
printerManager.printText2("Hello World\n")
printerManager.start()  // ⚠️ 重要：提交打印
printerManager.closePrinter()
printerManager.unbindService()

// 打印二维码
printerManager.initPrinter()
printerManager.printQR("https://example.com", 6)
printerManager.start()
printerManager.closePrinter()
```

## ⚠️ 注意事项

1. **必须调用 start()**: 所有打印内容添加后，必须调用 `start()` 方法才会实际出纸
2. **服务依赖**: 应用依赖设备预装的 `android.bld.PrintManager` 系统服务
3. **资源管理**: 使用完毕后应及时释放打印机资源
4. **错误处理**: 所有方法返回 `Result<Unit>`，需要正确处理成功/失败情况

## 📝 版本历史

### v1.1 (Build 2) - 2026-06-24
- ✨ 完整的打印机测试界面
- ✨ 所有打印功能支持
- ✨ 实时状态显示
- ✨ 综合测试功能
- 📦 AIDL 接口集成
- 👤 作者信息显示

### v1.0 (Build 1)
- 🎉 初始版本

## 👤 作者

**无闻风**

## 📄 许可证

本项目仅供内部测试使用

## 🤝 技术支持

如有问题或建议，请联系开发团队。

---

**最后更新**: 2026-06-24
