返回顶部
首页 > 资讯 > 移动开发 >初探Android系统打印功能
  • 888
分享到

初探Android系统打印功能

1024程序员节android 2023-10-11 12:10:54 888人浏览 泡泡鱼
摘要

在Android平台上对激光打印机和喷墨式打印机进行了连接共享和打印效果测试。并对比windows平台上的打印测试,分析其中的打印协议,现记录总结如下。 一、网络共享打印机 用户请求打印操作,会产生

Android平台上对激光打印机和喷墨式打印机进行了连接共享和打印效果测试。并对比windows平台上的打印测试,分析其中的打印协议,现记录总结如下。

一、网络共享打印机

用户请求打印操作,会产生一个打印任务。系统把这个打印job放在打印队列中,有打印服务器从打印队列中一个个取走。因为打印机是独占设备,每个进程只能一次次的访问打印节点。
打印服务把打印队列中的打job转化成打印机认识的格式,主流是Postscript格式,转化这个工作是由打印机驱动程序来完成的。即打印服务会调用具体的打印机驱动程序。

  • 如何把普通打印机变成网络打印机
  1. 需要两个硬件设备:一个是打印机,一个是作为打印机服务器的主机。若打印机本身带有网络功能,可不用主机,打印机本身就是另一形式的主机。
  2. 需要两层软件设备:一个是打印机驱动(底层用来驱动打印机工作的),一个就是打印机服务器,用来协调用户对打印机的需求,并最终调用打印机驱动进行打印工作。
  • 网络共享测试
  1. 惠普激光式打印机(HP LaserJet Pro P1606dn):使用NP330网络打印服务器,打印机usb线连接NP330,NP330网线连接路由器。

    结果:使用第三方趣打印apk,打印普通pdf正常,打印点阵pdf很慢且效果差,达不到识别标准。

  2. 联想激光式打印机(Lenovo LJ2206W): 使用Centos系统搭建的CUPS网络打印服务器,打印机usb线连接虚拟机CentOS,虚拟机网络设置成桥接模式。开放防火墙端口631,搭建完毕后局域网内平板可访问Http://192.168.3.52:631/printers/

    结果:使用第三方打印apk连接时未找到该设备,主机无法打印,缺少该设备对应的linux驱动。

二、Android系统打印功能

Android默认实现了基于CUPS打印的框架,CUPS可以提供打印协议来让用户使用打印机,提供WEB界面让用户设置和管理打印机。

开发者可使用PrintManager+PrintDocumentAdapter 接入系统打印api方式实现打印功能,使用指南请参考:https://developer.android.google.cn/training/printing/custom-docs

  • 打印处理服务PrintSpooler

系统打印通过一个系统apk[包名com.android.printspoole]实现的,源码位置:frameworks/base/packages/PrintSpooler
该apk接收来自用户app的打印请求。用户app的打印请求先被PrintManger通过PrintJob方式封装,然后通过Intent唤起PrintSpooler的PrintActivity进行预览。如果打印机设备厂商实现了Print Plugin并提供apk安装到系统,那么PrintSpooler就可以找到对应打印机驱动进行打印。

  • 默认打印服务BuiltInPrintService

AOSP系统默认集成的打印插件服务,源码位于packages/services/BuiltInPrintService。BuiltInPrintService启动后会去查找MDNS、P2P类型的打印机,如果发现了具体打印机则将该打印机的信息提交给系统,打印处理服务PrintSpooler将会显示该打印机。BuiltInPrintService还包括pdf渲染、处理ipp协议请求等基于CUPS实现的打印服务。其中默认ipp协议端口631,打印分辨率dpi默认300。

三、Android端打印机连接

  • 如何测试连接:
  1. 关于ip连接和端口使用情况,可使用ping命令和nmap工具扫描端口。
  2. Android通过NSD网络发现服务搜索并匹配附近可进行通信的设备。
  3. ping网络助手:https://www.cr173.com/soft/1334119.html
  • 连接测试实验:
  1. 小米喷墨式打印机(Mi All-in-one Inkjek Printer):平板系统打印服务能发现并能连接上IPP,默认使用IPP协议的631端口。

  2. 联想激光式打印机(Lenovo LJ2206W):使用平板默认打印机服务不能显示该打印机,通过log看出平板系统打印服务能发现但IPP请求失败。查看电脑主机连接的打印机属性默认设置的是LPD协议515端口,可设定成RAW协议的9100端口。

四、打印协议分析

分别对Android 10和Windows 10平台连接的小米喷墨打印机打印属性进行设置,对比并分析两个平台的打印协议(主要关注传输层和应用层的协议)。

  • Android端tcpdump工具:
    https://blog.csdn.net/w695050167/article/details/100083069?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-100083069-blog-126607097.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3
  • Windows端Wireshark工具:https://www.bilibili.com/read/cv15076127?from_wecom=1
协议抓包过程:
  • Android端:
  1. 使用米家喷墨打印助手APP,设置该APP打印参数,例如黑白、A4、普通纸、1份、1页、中等质量。
  2. 抓包过程:Android端使用命令抓取特定IP的网络数据包并保存pcap文件:tcpdump -v host 10.10.0.110 -w /sdcard/capture_mi.pcap
  3. 使用Wireshark工具分析pcap文件。
  4. 设置过滤器、筛选列表,以一行报文IPP Request (Create-Job)为例 ,跟踪其数据流。
  • Windows端:
  1. 在Windows 10 web浏览器上设置打印参数:彩色、A4、合适区域大小、1份,双面、600dpi
  2. 点击开始打印时,使用Wireshark工具开始捕获,打印完毕时,停止捕获。
  3. 刷选列表,http、ipp、printer等关键字,跟踪其数据流。
  4. 可保存为pcapng格式文件便于后续分析。

来源地址:https://blog.csdn.net/qq_23069607/article/details/127492226

--结束END--

本文标题: 初探Android系统打印功能

本文链接: https://lsjlt.com/news/428350.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 初探Android系统打印功能
    在Android平台上对激光打印机和喷墨式打印机进行了连接共享和打印效果测试。并对比Windows平台上的打印测试,分析其中的打印协议,现记录总结如下。 一、网络共享打印机 用户请求打印操作,会产生...
    99+
    2023-10-11
    1024程序员节 android
  • win7系统怎么添加打印机功能
    这篇文章主要介绍win7系统怎么添加打印机功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!点击开始菜单,选择控制面板,选择设备和打印机。点击添加设备。选择要添加的打印机,如果添加失败,会自动弹出,选择控制面板-管理...
    99+
    2023-06-28
  • MySQL 实现点餐系统的订单打印功能
    MySQL是一种广泛应用于Web开发的关系型数据库管理系统。在点餐系统中,订单打印功能是一个重要的环节。本文将介绍如何使用MySQL实现点餐系统的订单打印功能,并提供相应的代码示例。一、订单打印功能的实现思路订单打印功能是通过将订单数据存储...
    99+
    2023-11-01
    MySQL 点餐系统 订单打印功能
  • MySQL 实现点餐系统的订单打印功能
    MySQL是一种广泛应用于Web开发的关系型数据库管理系统。在点餐系统中,订单打印功能是一个重要的环节。本文将介绍如何使用MySQL实现点餐系统的订单打印功能,并提供相应的代码示例。一、订单打印功能的实现思路订单打印功能是通过将订单数据存储...
    99+
    2023-11-01
    MySQL 点餐系统 订单打印功能
  • Android性能测试初探
      功耗   · 功耗测试主要从以下几个方面入手进行测试   · 测试手机安装目标APK前后待机功耗无明显差异   · 常见...
    99+
    2022-06-06
    测试 Android
  • java如何实现打印机的打印功能
    要实现打印机的打印功能,可以使用Java中的打印机相关的API。以下是一个简单的示例代码:```javaimport javax.p...
    99+
    2023-09-01
    java
  • 打印机取消打印却还在打印 win7系统怎么清除打印缓存?
      在win7系统中有一个打印缓存服务,在打印的时候系统会自动将打印的文件自动缓存到系统中以文件的形式存在,以待稍后打印,有的用户发现有时取消了打印,可是打印机还是不停的么我们就来看看怎么手动清除win7系统的打印缓存吧...
    99+
    2023-06-08
    win7 打印缓存 打印机 打印 系统
  • javascript如何实现打印功能
    这篇文章主要介绍“javascript如何实现打印功能”,在日常操作中,相信很多人在javascript如何实现打印功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java...
    99+
    2024-04-02
  • vue如何实现打印功能
    vue实现打印功能的方法:1.打开终端输入“cnpm i vue-print-nb -S”命令安装依赖;2、在mian.js中引入vue-print-nb;3、在页面中设置一个button按钮实现打印功能即可。具体操作步骤:首先需要打开终端...
    99+
    2024-04-02
  • mfc怎么实现打印功能
    MFC(Microsoft Foundation Classes)是微软的一套面向对象的程序库,用于开发Windows应用程序。在M...
    99+
    2023-10-24
    mfc
  • java如何实现打印功能
    在Java中,可以使用System.out.println()方法实现打印功能。这个方法可以打印出指定的字符串或变量的值。下面是几个...
    99+
    2023-08-24
    java
  • Android进阶之路 - 系统功能
    今年开始写售货机的项目,有点像物联网 - - ~ 但具体也不太清楚; 此篇来源:在开发中需要跳转到WIFI列表,跳转之后发现无法返回当前APP了...
    99+
    2022-06-06
    系统 Android
  • 如何利用Go语言开发点餐系统的打印小票功能
    如下是一篇有关如何利用Go语言开发点餐系统的打印小票功能的文章:标题:利用Go语言开发点餐系统的打印小票功能随着社会的发展和人们对便利的需求不断增加,点餐系统成为了餐饮行业中的重要一环。而对于餐厅来说,打印小票是点餐系统中的一个关键功能。本...
    99+
    2023-11-01
    Go语言 点餐系统 打印小票
  • XP系统下打印机如何实现双面打印
    现在的打印机基本上都拥有双面打印的功能,但一般情况下都是默认打印单面的。既然拥有双面打印的功能,我们就要物尽其所。这里以WinXP系统为例,介绍操作方法。   XP系统打印机不可双面打印怎么办   1、点击屏幕左 ...
    99+
    2023-06-13
    打印机 双面打印 系统 XP
  • Silverlight4和Flex4打印功能有什么区别和联系
    这篇文章主要为大家展示了“Silverlight4和Flex4打印功能有什么区别和联系”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Silverlight4和Flex4打印功能有什么区别和联系”...
    99+
    2023-06-17
  • C#中怎么实现打印功能
    这期内容当中小编将会给大家带来有关C#中怎么实现打印功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#实现打印功能具体的操作步骤如下:创建一个PrintDialog的实例。如下:System.Wind...
    99+
    2023-06-17
  • 怎么用java实现打印功能
    要使用Java实现打印功能,可以使用Java的打印API来完成。下面是一个简单的示例代码,演示了如何使用Java打印API实现打印功...
    99+
    2023-10-24
    java
  • 电脑怎么打开打印机扫描功能
    要使用电脑的打印机扫描功能,您可以按照以下步骤操作:1. 确保您的打印机已连接到电脑并且已安装正确的驱动程序。2. 打开您想要扫描的...
    99+
    2023-09-20
    电脑
  • Win7系统如何横向打印
    Win7系统如何横向打印?有没有朋友可以在win7中横向打印?win7系统横向打印的方法相对比较简单,下面小编就将Win7系统中横向打印的方法分享给大家。在左上角有一个打印,打开它,就会有打印和定购两种选择,我们选择打印。右下方有一个取消选...
    99+
    2023-07-13
  • 怎么打开win7系统的player功能
    这篇文章主要介绍了怎么打开win7系统的player功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。打开win7系统windows media player步骤/方法:打开...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作