前言

由于自己工作原因,涉及到热敏打印机开发,因此自己写了一套热敏打印机SDK,目前暂时只支持蓝牙打印
我生成了jar包的形式,方便大家使用。里面代码的实现原理现在暂无时间去讲解,主要以如何使用为主。
SDK
源码地址
链接:https://github.com/875831461/ThomasPrinter

注意事项
目前只适配了蓝牙打印机,58型号80型号的均可以打印
已完成功能
扫描蓝牙
打印一行,打印一行两列,打印图片,打印条形码,二维码(需要打印机支持),倒置打印等。。
未完成功能
标签打印

效果图

步骤

如何导入jar包我就不说了。权限

 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

当然了,如果你操作的API大于26,你还需要动态请求此权限,否则你会找不到蓝牙设备

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if((checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) ){String[] permission = new String[]{Manifest.permission.ACCESS_FINE_LOCATION};requestPermissions(permission, 11);}}

代码

使用此方式可以注册监听/解绑监听打印机的所有状态

 ThomasPrinterManage.getInstance().registerOnThomasPrinterChangeListener()ThomasPrinterManage.getInstance().unregisterOnThomasPrinterChangeListener()

连接打印机

1.这种可以在打印机掉线时,如果打印机再次开机会自动连接,但是有时候会有问题

ThomasPrinterManage.getInstance().connectBluetoothDevice(this,address);

2.推荐使用这种方式连接打印机

ThomasPrinterManage.getInstance().connectBluetoothDevice(address);

发送数据

        Vector<Byte> data = new Vector<>();ThermalPrinter thermalPrinter = new ThermalPrinter();thermalPrinter.setCommand(data);thermalPrinter.initPrint();// according to your paper sizethermalPrinter.setPageSizeEighty();//thermalPrinter.setPageSizeFiftyEight();thermalPrinter.setWhiteOnBlack();thermalPrinter.setAlignment(Alignment.CENTER);thermalPrinter.setFontSize(FontSize.LARGER);thermalPrinter.setText(getTextByte("White On Black"));thermalPrinter.cancelWhiteOnBlack();thermalPrinter.printAndFeedLine();thermalPrinter.putText(getTextByte("content"), FontSize.NORMAL, Alignment.CENTER,false);thermalPrinter.printAndFeedLine();thermalPrinter.putText(getTextByte("content"), FontSize.NORMAL, Alignment.RIGHT,true);thermalPrinter.printAndFeedLine();thermalPrinter.putText(getTextByte("content"), FontSize.BIG, Alignment.RIGHT,false);thermalPrinter.printAndFeedLine();thermalPrinter.putText(getTextByte("content"), FontSize.LARGER, Alignment.LEFT,false);thermalPrinter.printAndFeedLine();thermalPrinter.setUnderline(true);thermalPrinter.setText(getTextByte("content"));thermalPrinter.setUnderline(false);thermalPrinter.printAndFeedLine();thermalPrinter.putTextColumn(getTextByte("column one"), getTextByte("column two"),FontSize.NORMAL);thermalPrinter.putTextColumn(getTextByte("column one"), getTextByte("column two"),FontSize.NORMAL);thermalPrinter.putTextColumn(getTextByte("column one"), getTextByte("column two"),FontSize.BIG);thermalPrinter.putTextColumn(getTextByte("column one"), getTextByte("column two"),FontSize.NORMAL);// not useful for XML imagesBitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.smart);thermalPrinter.putBitmap(bitmap);thermalPrinter.printBarCode("12345684",Alignment.CENTER,3,80);// this need printer supportthermalPrinter.printQrCode(Alignment.CENTER,3,48,"thomas printer");thermalPrinter.setCutPaper();// if you connect more than one devices you can use this methodThomasPrinterManage.getInstance().writeSendDataAllDevice(data);

Android 热敏打印机开发(蓝牙)相关推荐

  1. Android Studio开发——蓝牙聊天功能

    Android Studio开发--蓝牙聊天功能 蓝牙工作流程 功能要求 实现要点 声明蓝牙权限 添加程序运行的状态描述文本及配色代码 布局文件 蓝牙会话的服务组件ChatService Activi ...

  2. Android Studio开发蓝牙应用(二)

    Android Studio开发蓝牙应用(二) 实现的功能 与蓝牙模块HC-06交换信息 过程 新建Empty Activity 创建布局 activity_btread_and_write.xml ...

  3. Android Studio开发蓝牙应用(一)

    Android Studio开发蓝牙应用(一) 环境 window 11 安卓12 HC-06蓝牙模块 创建空project 选择Empty Activity,后点击Next 可修改项目名,自定义,后 ...

  4. 1:Android Studio开发蓝牙上位机--环境搭建

    下载软件 点击进入官网下载软件: 点击这里进入官网 安装完 File–>Setting 勾选常用安卓版本: 电脑安装ADB环境 下载ADB文件,将其添加至环境变量中. 进入开发者模式 小米手机点 ...

  5. delphi android 蓝牙,Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

    [实例简介] 2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签"朱建强" 7.请下载,杀毒 ...

  6. Android Studio开发(六)短距离无线通信——蓝牙通信

    Android Studio开发(六)短距离无线通信--蓝牙通信 Android Studio开发(六)蓝牙通信 一.任务需求 二.短距离无线通信技术(Short-Distance Wirleless ...

  7. Android 移动开发 近场通信 蓝牙通信

    Android 近场通信 蓝牙通信 一.近场通信介绍 1.三种主要近场通信技术的特点 2.比较 3.近场通信技术的未来发展 二.蓝牙通信 1.核心 2.布局 3.功能 其他配置 最终显示 一.近场通信 ...

  8. Android开发——蓝牙通信实现

    Android开发--蓝牙通信实现 项目需求 项目主要代码及功能实现 AndroidManifest.xml res/values/string.xml activity_main.xml ChatS ...

  9. Android Studio开发之蓝牙通信

    安卓开发-蓝牙通信 功能需求:在微信程序的第一子项中完成"蓝牙聊天功能" 开发步骤: 配置文件注册 设计界面布局 编写用于蓝牙会话的服务组件ChatService 分别建立供主Ac ...

最新文章

  1. element表格多列排序_Excel表格在工作中的经典用法,建议收藏!
  2. Java用户账号和密码登录
  3. 一个应届产品狗的产品日记【第二部:学做产品】
  4. Flink – JobManager.submitJob
  5. 实现html5音乐的自动播放,html5中audio实现播放列表和自动播放
  6. string函数知识点总结
  7. 图解HashMap和HashSet的内部工作机制
  8. cmake install_在vscode中使用cmake-format(windows端)
  9. c语言枚举法求满射函数,实变函数论讲义
  10. c++利用初始化列表在类内部和类外部定义构造函数的区别
  11. uboot驱动模型(DM)分析(一)
  12. 手游:cocos2d-x3.0 移植 wp8 开发 各种 “蛋疼”问题的汇总
  13. 新英格兰10机39节点matlab建模,ieee10机39节点系统数据
  14. 数据归一化和常用的归一化方法
  15. python计算三角形的周长和面积
  16. Java剑开天门(二)
  17. web漏洞之文件上传漏洞
  18. ORB-SLAM3 单目惯导ros-system-track
  19. oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符 OCIEnvCreate 失败, 返回代码为-1,但错误消息文本不可用...
  20. An end-to-end heterogeneous graph representation learning-based framework for drug–target interactio

热门文章

  1. Nordic蓝牙nRF52840入门学习:Hello Word
  2. Python调用百度API进行人脸对比
  3. 惩戒教育也是“爱的艺术”[图]
  4. 罗辑思维CEO脱不花:工作和成长,这是我的121条具体建议
  5. STM32 TIM2重映射
  6. Darwin-XNU 内核架构浅析
  7. Python与兰顿蚂蚁
  8. 听周华健专辑《少年》有感(一)-献给曾经的自己
  9. Oracle 备份恢复概念
  10. windows的文件共享