Android 热敏打印机开发(蓝牙)
前言
由于自己工作原因,涉及到热敏打印机开发,因此自己写了一套热敏打印机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 热敏打印机开发(蓝牙)相关推荐
- Android Studio开发——蓝牙聊天功能
Android Studio开发--蓝牙聊天功能 蓝牙工作流程 功能要求 实现要点 声明蓝牙权限 添加程序运行的状态描述文本及配色代码 布局文件 蓝牙会话的服务组件ChatService Activi ...
- Android Studio开发蓝牙应用(二)
Android Studio开发蓝牙应用(二) 实现的功能 与蓝牙模块HC-06交换信息 过程 新建Empty Activity 创建布局 activity_btread_and_write.xml ...
- Android Studio开发蓝牙应用(一)
Android Studio开发蓝牙应用(一) 环境 window 11 安卓12 HC-06蓝牙模块 创建空project 选择Empty Activity,后点击Next 可修改项目名,自定义,后 ...
- 1:Android Studio开发蓝牙上位机--环境搭建
下载软件 点击进入官网下载软件: 点击这里进入官网 安装完 File–>Setting 勾选常用安卓版本: 电脑安装ADB环境 下载ADB文件,将其添加至环境变量中. 进入开发者模式 小米手机点 ...
- delphi android 蓝牙,Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)
[实例简介] 2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签"朱建强" 7.请下载,杀毒 ...
- Android Studio开发(六)短距离无线通信——蓝牙通信
Android Studio开发(六)短距离无线通信--蓝牙通信 Android Studio开发(六)蓝牙通信 一.任务需求 二.短距离无线通信技术(Short-Distance Wirleless ...
- Android 移动开发 近场通信 蓝牙通信
Android 近场通信 蓝牙通信 一.近场通信介绍 1.三种主要近场通信技术的特点 2.比较 3.近场通信技术的未来发展 二.蓝牙通信 1.核心 2.布局 3.功能 其他配置 最终显示 一.近场通信 ...
- Android开发——蓝牙通信实现
Android开发--蓝牙通信实现 项目需求 项目主要代码及功能实现 AndroidManifest.xml res/values/string.xml activity_main.xml ChatS ...
- Android Studio开发之蓝牙通信
安卓开发-蓝牙通信 功能需求:在微信程序的第一子项中完成"蓝牙聊天功能" 开发步骤: 配置文件注册 设计界面布局 编写用于蓝牙会话的服务组件ChatService 分别建立供主Ac ...
最新文章
- element表格多列排序_Excel表格在工作中的经典用法,建议收藏!
- Java用户账号和密码登录
- 一个应届产品狗的产品日记【第二部:学做产品】
- Flink – JobManager.submitJob
- 实现html5音乐的自动播放,html5中audio实现播放列表和自动播放
- string函数知识点总结
- 图解HashMap和HashSet的内部工作机制
- cmake install_在vscode中使用cmake-format(windows端)
- c语言枚举法求满射函数,实变函数论讲义
- c++利用初始化列表在类内部和类外部定义构造函数的区别
- uboot驱动模型(DM)分析(一)
- 手游:cocos2d-x3.0 移植 wp8 开发 各种 “蛋疼”问题的汇总
- 新英格兰10机39节点matlab建模,ieee10机39节点系统数据
- 数据归一化和常用的归一化方法
- python计算三角形的周长和面积
- Java剑开天门(二)
- web漏洞之文件上传漏洞
- ORB-SLAM3 单目惯导ros-system-track
- oracle提示 ORA-12154: TNS: 无法解析指定的连接标识符 OCIEnvCreate 失败, 返回代码为-1,但错误消息文本不可用...
- An end-to-end heterogeneous graph representation learning-based framework for drug–target interactio