很多打印机有提供windows,linux的打印驱动,但是安卓的驱动几乎没有厂家提供,这就导致很多想通过安卓平板控制打印机连接打印的用户无法实现,而市面上面大多数打印软件也是通过蓝牙或者网络来进行连接打印,而不是我们想要的usb线进行打印
在安卓的原生板子里面,提供了打印支持,且大部分打印机厂家也针对原生打印驱动做了兼容,比如惠普啥的(可以直接连接usb先选择文件进行打印测试) ,惠普提供有打印插件,三星也有提供打印插件,如果你在平板上面安装有他们的插件,则可以直接选择文件进行打印
如果你有改造打印流程或自定义打印流程并且在自己写兼容驱动吃力的话,不妨看看下面的方法
我们通过打印插件调起打印,最终在平板上面会有一个参数设置的弹窗,也就是说,在板子内部有检测到我们的请求的app服务,这个也是内置的系统服务,如果我们不能在驱动层动手的话,不妨看看系统内置apk又是如何做到监测我们请求并处理请求的
我通过adb命令,最终查看到监测我们请求是由一个内置名叫 PrintSpooler.apk 的一个实现的
一般来说,做这些特殊的需求,板子都是可以定制的,我们也可以获取到最高的权限, 这样子我们就可以通过使用系统源码及PrintSpooler.apk的代码来编译一个我们自己需要的打印服务
在sdk的代码里面有很多没有开放出来的代码,因为官方认为它们并不稳定或者其他原因等等,导致很多系统层的调用我们是无法使用的,但是如果我们自己编译出源码供我们所用,我们就可以使用系统层的服务调用很多我们之前无法调用的方法或者类(这些方法只限我们特殊的机器,正常的手机用户不建议这样弄,会出各种各样的问题)
所用使用上面系统源码编译出来的sdk jar 和 PrintSpooler.apk的代码方式,我们就可以不通过驱动层去直接改造打印整个流程或者自定义我们的一些打印需求,比如界面,参数设置等等 ( 如果在技术层面能够通过驱动层去实现的话,建议从驱动层实现,因为速度会更快,也会更可控)
下面我会上传printSpooler的源码,至于sdk的源码再编译,可以通过去下载源码到linux系统下面去自己编译,或者如果是购买的第三方厂家的板子,可以找他们要,一般来说都会提供