Android蓝牙打印小票,仿美团外卖小票打印

这个一个Android蓝牙打印小票demo,类似美团外卖小票打印

自适应排版小票格式,一行两列和三列轻松搞定,文本长短不用愁

先看一下效果图:      

    

demo里主要是使用汉印打印机进行蓝牙小票打印,它还支持WiFi打印,USB打印和串口打印,SDK对接的话去汉印官网下载相应的zip包,里面有PDF文档和代码案例,文档上功能还是比较多的,比如与蓝牙进行关联以及各种状态获取以及各种属性设置等,项目里面我放了一份PDF的文档,就在info文件夹下。

但像打印的小票排版样式与细节这块相对是比较粗糙,直接在代码里写死的样式,而大多数平台的小票排版都不太一样,这里就涉及到自定义排版,而我这里主要讲的就是小票打印的排版样式了。

我在demo中已经把排版封装到 PrintUtil,主要的信息打印,商品名字、数量和小计都做了自适应兼容,多行等展示亦不会打乱排版,只管放心使用就好。

当然,个别特殊都样式设置就看着改,基本的样式我也封装了些方法,不够再加,如是接的sdk就根据文档给的功能增加,若是按原生的写法通过字节流传输给蓝牙打印机的,也可以将指令写入封装成方法进行添加设置。

demo里面还用到了lombok注解框架,主要是用于注解数据模型的get 和 set方法,这样就不需要写那么多凌乱的get() 和 set()了。

29/4.
1 新增选择打印机功能
2 新增爱印sdk支持
3 优化打印排版格式 (这个排版格式是可以公用的,打印机基本都是可以打印byte数组)

08/5.
1 优化汉印与爱印sdk连接状态回显
2 优化打印机连接成功后弹出提示
3 新增复坤sdk支持

2021/12/15.
1 各打印机新增图片打印
2 新增汉印打印机二维码打印

2022/11/20.
1 新增连接并打印的library库:ReceiptPrint(外部调用只需将打印模板数据传进来即可,不用关注连接打印机相关逻辑)
2 新增打印模板工具类(打印模板会随着业务而改变,将其剥离开来,后续的改动不再影响library库,ReceiptPrint只专注做连接与打印)

GitHub地址:GitHub - weioule/PrintDemo: Android蓝牙打印机 热敏打印机 打印小票,自适应格式排版、模板设置 美团外卖小票打印 和 新手指引蒙层提示demo

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
如题所述,下面将用300字中文回答关于H5蓝牙打印小票的代码。 要实现H5蓝牙打印小票,需要使用Web Bluetooth API。首先,我们需要使用navigator.bluetooth.requestDevice()方法来请求用户选择一个蓝牙设备。我们可以通过传递一个对象来指定要搜索的蓝牙服务和特征。一旦用户选择了设备,我们可以通过device.gatt.connect()方法来连接设备。 连接成功后,我们可以使用device.gatt.getPrimaryService()方法来获取主服务。通过传递服务的UUID,我们可以获取与蓝牙设备通信的特征。然后,我们可以使用getService()方法来获取特征,并使用readValue()方法读取特征的值。 在获得特征的值后,我们可以使用writeValue()方法将打印指令发送给蓝牙设备。具体的打印指令可以根据打印机的规格进行编写。例如,可以使用ASCII码发送文本字符串。具体的指令可以参考打印机的开发文档。 在发送完打印指令后,我们可以使用device.gatt.disconnect()方法断开与蓝牙设备的连接。 以下是一个简单的示例代码: ```javascript async function printTicket() { try { const device = await navigator.bluetooth.requestDevice({ filters: [{ services: [ /* 蓝牙设备的服务UUID */ ], }], }); const server = await device.gatt.connect(); const service = await server.getPrimaryServices(); const characteristic = await service.getCharacteristics(); const value = await characteristic.readValue(); // 发送打印指令 const command = new Uint8Array([ /* 打印指令的字节 */ ]); await characteristic.writeValue(command); await server.disconnect(); } catch (error) { console.error("打印小票失败:", error); } } // 调用打印小票函数 printTicket(); ``` 请注意,以上代码只是一个简单示例,具体的实现和打印指令可能会有所不同。具体实现还需根据打印机的规格和开发文档进行调整。 希望以上回答能帮到您,如果需要更详细的代码实现或其它帮助,请提供更多信息以便我们更好地协助您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值