Android连接佳博58热敏打印机实例
缘由
最近公司上了新的项目,需求大概就是你出去吃饭买单的时候,收银妹纸会在平板上操作来进行收银并打印小票,这个客户端目前大多都是Android系统,那么其中就要用到Android平板连接打印机来进行通讯了。这个项目(以下简称收银平板)之前是有另外一个团队(以下简称CS)开发的,目前是要重构并升级到2.0版本。但是前几天CS反馈说是最近遇见bug,打印机和平板会莫名断开连接,其中实现的重连机制也不好使。由于即将进行2.0的开发工作,也是为了进一步熟悉当中的业务,然后跟CS要来代码,研究了一通,发现之前的1.0代码写得...可能是接手人员比较多,也有可能开发周期的问题吧。
环境
我现在的环境是AS2.0,佳博5890XIII打印机,端口是wifi连接,该款打印机也支持蓝牙和USB,GprinterSDKV2.1,如果是其他型号可以去佳博官网下载对应sdk。将拷来的代码在这个环境跑了多次,模拟了两种常见的情景:断网,断电确实出现过连接丢失的情况。首先是检查相关代码的逻辑,由于年代比较久远,接手人员较多等原因,加之注释也很稀缺,在这块写了很多flag之类的标识,判断条件之多至少令我咋舌,只有边看边猜。原来以为是重连机制部分逻辑有误,尝试修改了部分代码,经测无效。后来发现sdk中自带的用于监听打印机连接状态变更的广播会在一段时间之后歇菜。那这个是不是sdk的问题?遂找到佳博技术支持,那哥们人不错,也跟我吐槽之前的代码不知道谁写的,一大堆广播,还阻塞UI,太烂了,改不了。然后自己尝试写了一个新版的,发给我,那哥们简称JBSDK,以下就是根据新版SDK的随意写了个sample。
1.新建项目,导入jar包--->jbsdk.jar
2.在manifest注册打印服务,同时别忘了添加网络和wifi相关的权限哦~
3.在MainActivity中绑定服务,
同时将打印机连接状态变更和查询打印机实时状态的回调一起注册了
4.服务所提供的接口
打印机连接状态改变的接口分别对应“正在连接”,“断开连接”,“已连接”三种状态
查询打印机实时状态接口5.使用服务
打开连接 打印测试页 关闭连接 获取打印机连接状态 获取命令类型打开连接之后,之前的打印机状态变更的回调就派上用场了
打印机状态变更回调 实时状态查询回调还有打印标签和票据的例子就不再一一展示了,可以酌情增减。
好了基本就是这么多,有什么问题可以和我联系哒!