6bc653bb7442deff392065081e39641d74a92991
- 工单模板:左侧二维码+客户,右侧工单ID/标题/描述 - 物品模板:左侧二维码,右侧物品ID/名称/数量/位置/客户,底部条码+序列号 - 打印标签设置:新增标签宽度/高度/打印前回退长度设置 - QR码JSON增加type=ops_sys字段区分系统来源 - WorkOrder/Item模型增加linkedCustomers等关联数据 - 使用Canvas绘制Bitmap实现自定义打印布局
PDA 打印机测试应用
一个用于测试内置 PDA 终端打印机的 Android 应用,基于 Jetpack Compose 构建。
📱 应用截图
应用提供完整的打印机测试界面,包含:
- 实时连接状态显示
- 完整的打印功能测试
- 样式设置控制
- 二维码/条形码打印
- 走纸控制
- 一键综合测试
✨ 功能特性
🔌 连接管理
- 绑定/解绑打印服务
- 初始化/关闭打印机
- 实时状态监控
📄 打印功能
- 文本打印 (printText / printText2)
- 二维码生成与打印
- 条形码生成与打印
- 图片打印支持
🎨 样式控制
- 字体大小调整
- 粗体设置
- 下划线设置
- 打印浓度控制
📏 走纸控制
- 打印空行
- 走纸间距设置
- 标签纸支持
🧪 测试工具
- 快速打印测试
- 单项功能测试
- 完整综合测试
🚀 快速开始
环境要求
- Android Studio Hedgehog 或更高版本
- JDK 11
- Android SDK 24+
- 目标设备需预装
android.bld.PrintManager系统服务
编译安装
方法一:使用自动构建脚本(推荐)
./build_release.sh
该脚本会自动:
- 增加版本号
- 清理并编译 Release APK
- 复制 APK 到项目根目录
方法二:手动编译
./gradlew clean assembleRelease
生成的 APK 位于:
app/build/outputs/apk/release/PDA_Printer_Test_v{版本号}_release_{日期}.apk
安装到设备
adb install -r app/build/outputs/apk/release/PDA_Printer_Test_v1.1_2_release_20260624.apk
📖 使用说明
基本流程
- 启动应用 → 打开 PDA 打印机测试应用
- 绑定服务 → 点击"绑定服务"按钮连接打印服务
- 初始化 → 点击"初始化"按钮初始化打印机
- 测试打印 → 使用各项测试按钮或运行完整测试
- 关闭释放 → 完成后点击"关闭打印机"和"解绑服务"
快速测试
点击 "快速打印测试" 按钮可一键完成:
初始化 → 打印测试文本 → 提交打印 → 关闭打印机
综合测试
点击 "运行完整测试" 按钮将打印包含以下内容的测试单:
- 标题(大字体、粗体)
- 普通文本示例
- 粗体文本示例
- 下划线文本示例
- 二维码(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 主要方法
// 连接控制
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>
使用示例
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()
⚠️ 注意事项
- 必须调用 start(): 所有打印内容添加后,必须调用
start()方法才会实际出纸 - 服务依赖: 应用依赖设备预装的
android.bld.PrintManager系统服务 - 资源管理: 使用完毕后应及时释放打印机资源
- 错误处理: 所有方法返回
Result<Unit>,需要正确处理成功/失败情况
📝 版本历史
v1.1 (Build 2) - 2026-06-24
- ✨ 完整的打印机测试界面
- ✨ 所有打印功能支持
- ✨ 实时状态显示
- ✨ 综合测试功能
- 📦 AIDL 接口集成
- 👤 作者信息显示
v1.0 (Build 1)
- 🎉 初始版本
👤 作者
无闻风
📄 许可证
本项目仅供内部测试使用
🤝 技术支持
如有问题或建议,请联系开发团队。
最后更新: 2026-06-24
Languages
Kotlin
99.2%
Shell
0.8%