Android Pos 打印机支持库(适合市场常见打印机使用)

这篇具有很好参考价值的文章主要介绍了Android Pos 打印机支持库(适合市场常见打印机使用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PrintSupport(专注于 收据 与 标签 的打印工具)

概述

① 集成多个品牌打印机的SDK:GPrinter(佳博),Epson(爱普森),Bixolon(必胜龙),
② 已调试支持的打印机品牌:GPrinter(佳博),Epson(爱普森),Bixolon(必胜龙),XPrinter(芯烨),Element(元素)
③ 支持局域网,USB,蓝牙通讯(具体情况取决于打印机以及使用的SDK策略)
④ 开发者只需要关心打印的数据,无需关心打印的过程,减轻各SDK的对接成本
⑤ 需要打印时自动建立连接,外打印完成自动销毁链接,减少通道占用率,稳定可靠
⑥ 内置任务定时器,定时轮询任务队列,保证每个任务都被执行,防止任务丢失
⑥ 只支持Esc(收据)Tsc(标签) 两种指令;其他如针式,A4打印不在对接范围内所以不考虑对接
⑦ 由于打印机有限,需要使用的朋友可以直接拉取源码进行调试
⑧ SDK选择优先级建议:GPrinter > Epson > Bixolon > StarX
⑨ 使用 图像 打印时效果更佳:DrawingSupport

获取使用

1. Add it in your root build.gradle at the end of repositories:

dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
  }
}

2. Add the dependency:

implementation 'com.github.Yiwei099:PrintSupport:$releaseVersion'

详情

1. GPrinter SDK(佳博)

指路:佳博打印机官网
详细测试用例请看 GPrinterActivity.kt
调试状态:Esc✅,Tsc✅,局域网✅,USB✅,蓝牙✖️,Esc图像✅,Esc指令✅,Tsc图像✅,Tsc指令✖️
实测此SDK可通讯大多数品牌的打印机;如:GPrinter(佳博),XPrinter(芯烨),Epson(爱普森),Bixolon(必胜龙),Element(元素)

a. 创建
//局域网通讯
val key = "192.168.100.150"
val printer = EscNetGPrinter(context, netKey) //打印Esc
val printer = TscNetGPrinter(context,netKey) //打印Tsc

//USB通讯(SerialNumber为可选)
val usbKey = "vendorId+productId+SerialNumber"
val printer = EscUsbGPrinter(context,vendorId,productId,serialNumber) //打印Esc
val printer = TscUsbGPrinter(context,vendorId,productId,serialNumber) //打印Tsc
b. 打印
//以图片的形式打印
val mission = GraphicMission(bitmapArray)

//以SDK指令形式打印
val mission = CommandMission(escCommand)

//调用addMission即可
printer.addMission(mission)
c. 销毁(必要时)
printer.onDestroy()

2. Epson SDK(爱普森)

指路:Epson 打印机官网
详细测试用例请看 EpsonPrinterActivity.kt
调试状态:Esc✅,Tsc✖️,局域网✅,USB✅,蓝牙✖️,Esc图像✅,Esc指令✅(部分),Tsc图像✅,Tsc指令✖️
实测只能与自己品牌的打印机通讯

a. 创建
//通讯方式:局域网/USB/蓝牙
val interface = Net/Usb/BlueTooth

//通讯地址:局域网IP/USB地址/蓝牙地址
val target = "192.168.0.1"

//创建打印机,必要时可指定Epson打印机的型号
val printer = EpsonPrinter(context,interface,target)
b. 打印
//以图片的形式打印
val mission = GraphicMission(bitmapArray)

//以SDK指令形式打印
val mission = EpsonMission(
                mutableListOf<BaseEpsonMissionParam>().apply {
                    add(CommandMissionParam(getOpenBoxCommandByByteArray()))
                }
              )

//调用addMission即可
printer.addMission(mission)
c. 销毁(必要时)
printer.onDestroy()
d. 检索打印机
//检索参数(局域网/蓝牙/USB),(打印机/扫码枪/输入设备)
val option = FilterOption()
//监听结果(返回单个设备)
val listener = DiscoveryListener()

//开始检索
Discovery.start(mContext,option,listener)

//结束检索
Discovery.stop()

3.Bixolon(必胜龙标签)

指路:Bixolon 打印机官网
详细测试用例请看 BixolonPrinterActivity.kt
调试状态:Tsc✅,Esc✖️,局域网✅,USB✖️,蓝牙✖️,Esc图像✖️,Esc指令✖️,Tsc图像✅,Tsc指令✖️

a. 初始化JNI
//建议在 Application 初始化时调用
BixolonUtils.getInstance().initLibrary()
b. 创建
//局域网通讯
val key = "192.168.100.155"
val printer = BixolonNetLabelPrinter(mContext)

c. 打印
//以图片的形式打印
val mission = GraphicMission(bitmapArray)
printer.addMission(mission)
d. 销毁(必要时)
printer.onDestroy()
e. 检索 Net 打印机
//任意存在或不存在的IP地址
val ip = "192.168.3.12"

//创建任意必胜龙打印机
val printer = BixolonNetLabelPrinter(mContext,ip).apply{
    setOnFindPrinterCallBack {
        it.forEach {content->
            //返回的结果,结构为:macAddress + address + port
        }
    }
}

//开始检索
printer.startFindPrinter()

4.打开钱箱

开钱箱的Byte指令从佳博SDK中获得,不一定适用所有打印机,若该指令无效请使用自己已测试通过的指令数组再使用本库发送

//佳博打印机开钱箱
printer.addMission(GPrinterMission(GPrinterMission.getOpenBoxCommand()))

//其它打印机开钱箱:如 Epson
printer.addMission(
    EpsonMission(
        mutableListOf<BaseEpsonMissionParam>().apply {
            add(CommandMissionParam(getOpenBoxCommandByByteArray()))
        }
    )
)

//佳博SDK开钱箱Byte指令
private fun getOpenBoxCommandByByteArray(): ByteArray {
    return SDKUtils.convertVectorByteToBytes(GPrinterMission.getOpenBoxCommand())
}
                

常见问题

1. 使用 Bixolon(必胜龙)标签打印机SDK 时崩溃

检查是否已经初始化该 SDK 的 JNI

//建议在 Application 初始化时调用
BixolonUtils.getInstance().initLibrary()

2. 高版本 Android 系统中使用 USB 通讯模式发起打印时打印机没有反馈

① 检查是否已经对当前 USB 设备授权;若没有授权,建议在 Activity 中的生命周期中使用广播接收器,在 USB 设备接入时发起权限申请(即使是 USB 接触不良,自动断开/接入 也能自动发起)
② 佳博SDK内也会自动帮我们申请,但只有在发起连接时才会,不发起打印就不会发起连接,也就无法申请权限,可能会造成漏打
③ 有的设备系统可以设置 USB 白名单,无需授权即可访问 USB 设备文章来源地址https://www.toymoban.com/news/detail-839144.html

override fun onUsbAttached(intent: Intent) {
    intent.getParcelableExtra<UsbDevice>(UsbManager.EXTRA_DEVICE)?.let {usbDevice->
        val b = usbManager.hasPermission(usbDevice)
        val usbKey = "${usbDevice.vendorId}-${usbDevice.productId}"
        if (!b){
            val mPermissionIntent = PendingIntent.getBroadcast(this,0,Intent(UsbBroadcastReceiver.ACTION_USB_PERMISSION),0)
            usbManager.requestPermission(it, mPermissionIntent)
            //授权后无需再进行任何操作,打印机内部会定时轮询自动执行打印
        }
}

Print support by android(不定期更新)

到了这里,关于Android Pos 打印机支持库(适合市场常见打印机使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Delphi 开发手持机(android)打印机通用开发流程(举一反三)

       目录 一、场景说明 二、厂家应提供的SDK文件 三、操作步骤: 1. 导出Delphi需要且能使用的接口文件: 2. 创建FMX Delphi项目,将上一步生成的接口文件(V510.Interfaces.pas)引入: 3. 将jarsdk.jar 包加入到 libs中:  4. Delphi中调用: 四、完整源代码下载 五、总结: 一、场景说明

    2024年02月11日
    浏览(47)
  • appemit 支持chrome edge谷歌微软浏览器佳博Gprinter 标签打印机 TSCLIB.DLL 函数库使用说明

    支持谷歌 firefox edge 360 qq sogou等各种浏览器,在线使用 佳博Gprinter 标签打印机 直接js操作 TSCLIB.DLL 函数库使用说明 请在使用TSCLIB.DLL 前,安装条形码打印机驱动程序。 1. openport(a) 说明: 指定计算机端的输出端口 参数: a: 单机打印时,请指定打印机驱动程序名称,例如: TSC TDP

    2024年02月04日
    浏览(52)
  • 惠普打印机---共享打印机安装 --连接

    输入 win+R ,再输入共享打印机的连接的IP 2.进入 连接 界面 3.右击打印机 ,点击连接 ,就可以添加打印机设备 方法二、 添加打印机

    2024年02月03日
    浏览(115)
  • Windows11连接共享打印机失败,提示以下错误:Windows 无法连接到打印机。请检查打打印机名并重试。如果这是网络打印机,请确保打印机已打开

    1.在确定打印机所在的主机是开机状态且局域网内其他电脑连接打印机正常情况下; 2.检查所需安装打印机的电脑打印服务运行状态; 2.1 按住Win+R键输入 services.msc 点击确 定后,打开服务; 2.2 Print Spooler、DCOM Server Process Launcher、RPC Endpoint Mapper,将其运行状态设置为自动启动

    2024年02月04日
    浏览(220)
  • 老毛子、华硕固件USB连接打印机,普通打印机变无线打印机

    本次作为打印机服务器的是Newifi Mini,1千兆wan口,2百兆lan口,1USB2.0接口,打印机型号为canon ip1180,年代非常久远,不过墨盒可以反复加墨,算下来打印费用很便宜,无奈不支持无线打印,于是利用路由器的usb口使其变成无线打印机。 由于打印机离主机位置较远,且布线不方

    2024年02月08日
    浏览(134)
  • 安装pdf打印机无法找到安装打印机的核心驱动

    安装pdf打印机无法找到安装打印机的核心驱动,出现这种情况下。可以利用以下方法解决 * C:WindowsSystem32DriverStore* 这个文件夹。在 FileRepository 文件夹上面,点击右键“管理员取得所有权”命令,这个时候会跳出一个命令行窗口不停的执行取得权限操作,耐心等待几十秒钟等

    2024年02月11日
    浏览(55)
  • mac Canon打印机连接教程(附打印机驱动下载)

    网上大多是windows版驱动和安装教程,mac链接相对参考材料较少,记录于此方便节省大家时间。本篇以Canon iR C3025打印机为例,流程大同小异。

    2024年02月12日
    浏览(72)
  • win10、11共享打印机报错无法连接到打印机

    大多数是windows更新补丁导致的,只需运行相应版本的的bat文件就可以解决。 使用方法:将下载好的压缩包解压,并运行bat文件。只要打了2021年10月补丁的电脑都需要运行,不管是服务端还是客户端。比如服务端是xp(xp不存在有2021年10月的补丁),那么就只需要客户端运行即

    2024年02月13日
    浏览(65)
  • 在局域网下是如何共享打印机让大家共用一台打印机

    打印机共享如何设置?这是在工作中经常遇到的问题。由于公司购买的打印机不带网络打印功能,但又想能让办公室里的所有人员都能共用这一台打印机。那么把打印机设置成共享就能很好解决这一问题。下面大家一起来看看在局域网下是如何共享打印机的。 在带有打印机的

    2024年02月06日
    浏览(73)
  • windows无法连接到打印机?三个方法连接打印机(Win10系统)

    在日常办公中,我们经常会用到打印机。一般情况下,打印机要与电脑连接才可以使用。有很多用户反馈, windows无法连接到打印机,这是怎么回事呢? 请看文章是如何解决打印机无法连接到计算机的问题! 操作环境: 演示机型:华硕X8AE43In-SL 系统版本:Windows 10 有时遇到:

    2024年02月04日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包