目前网上教程与Demo介绍的都是蓝牙连接热敏打印机(pos机大小的打印机),如果想通过蓝牙连接日常所见到的打印机,进行打印,这些教程或Demo是做不到的。

目前Android的蓝牙并不支持BPP(Basic Printing Profile),所以在Android实现蓝牙打印,通过正常的手段是实现不了的。网上能够搜索的那些教程或demo我都试过了,Google Play上与打印相关的app,也都安装使用过,目前只有PrinterShare可以实现Word、PDF的打印。接下来的的内容就与这个软件有关。

由于Android本身并没有提供相关API,打印机厂商也没有提供Android的驱动,如果自己从头开始开发相关功能,会是一项非常浩大的工程。在经过一段时间的折腾与领导的不停催促后,我们决定使用PrinterShare来实现蓝牙打印功能,使用过支付宝的应该都知道,它会帮助我们安装一个快捷支付的APP,我采用的是相同的方法。我们的应用在使用打印功能时,首先判断PrinterShare是否安装,如果没有安装,就先安装该软件,如果已经安装,就调用PrinterShare的打印Activity,并且把文档的路径传递过去。

1.判断apk是否安装

public static boolean appIsInstalled(Context context, String pageName) {try {context.getPackageManager().getPackageInfo(pageName, 0);return true;} catch (NameNotFoundException e) {return false;}
}

2.安装apk

Intent intent = new Intent(Intent.ACTION_VIEW);File file = FileUtils.getAssetFileToCacheDir(activity,"xxx.apk");intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");activity.startActivity(intent);

3.把Asset下的apk拷贝到sdcard下 /Android/data/你的包名/cache 目录下

publicstatic File getAssetFileToCacheDir(Context context, String fileName) {try {File cacheDir = FileUtils.getCacheDir(context);final String cachePath = cacheDir.getAbsolutePath()+ File.separator + fileName;InputStream is = context.getAssets().open(fileName);File file = new File(cachePath);file.createNewFile();FileOutputStream fos = new FileOutputStream(file);byte[] temp = newbyte[1024];int i = 0;while ((i = is.read(temp)) > 0) {fos.write(temp, 0, i);}fos.close();is.close();return file;} catch (IOException e) {e.printStackTrace();}return null; }

4.获取sdcard中的缓存目录

public static File getCacheDir(Context context) {String APP_DIR_NAME = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/";File dir = new File(APP_DIR_NAME + context.getPackageName() + "/cache/");if (!dir.exists()) {dir.mkdirs();}return dir; }

5.调用printershare打印pdf

Intent intent = new Intent();ComponentName comp = new ComponentName("com.dynamixsoftware.printershare","com.dynamixsoftware.printershare.ActivityPrintPDF");intent = new Intent();intent.setComponent(comp);intent.setAction("android.

Android连接蓝牙打印机实现PDF文档的打印相关推荐

  1. android 蓝牙地址连接打印机,android 连接蓝牙打印机 BluetoothAdapter

    android 连接蓝牙打印机 BluetoothAdapter 源码下载地址:https://github.com/yylxy/BluetoothText.git public class Prin ...

  2. 如何破解PDF文档不能打印?

    我们经常会去网络上搜索并下载一些资料,而下载后PDF文档有时候无法打印是怎么回事呢?能不能破解后再正常打印呢? 首先我们需要判断PDF文档不能打印是被加密,而不是打印机坏了或其他原因,比如我们用极速P ...

  3. Android连接蓝牙打印机

    前言 在之前写过一篇Android操作蓝牙打印机(上),当时也是因为自己在工作中确实走了许多弯路,所以当时计划着用两篇文章详细阐述蓝牙打印的整个流程,也是对工作的一种总结,其次也可以给蓝牙打印方面感觉 ...

  4. vb 如何检测打印机是否联机_打印机提示该文档未能打印导致打印失败的原因及解决方法...

    打印机打印时,一直出现该文档未能打印的提示,如何解决这个问题?在使用打印机的时候,偶尔会出现提示该文档未能打印,打印失败的状况,这是怎么回事?下面就给大家分析下具体原因及其解决办法. 一.打印机处于脱 ...

  5. 水晶报表使用经验谈1--建立水晶报表第一步及编译最易出现错误的解决方法及报表转换成pdf文档进行打印方法...

    初用水晶报表(vs .net2003集成,版本Version=9.1.5000.0) 装好后要注册 注册号:6707437608 密码:AAP5GKS0000GDE100DS 想要在.aspx文件中使 ...

  6. mui android连接蓝牙打印机打印

    android设备连蓝牙打印机打印,代码如下:  mui.plusReady(function(){             main = plus.android.runtimeMainActivi ...

  7. java jar 打印_三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...

  8. C# 六种方案打印PDF文档

    打印PDF文档是开发人员经久不变的话题,常见的打印需求大致有以下六种: 用默认打印机打印PDF文档 用虚拟打印机打印PDF文档 指定打印机及PDF文档的打印页码范围 静默打印PDF文档 双面打印PDF ...

  9. Android加载PDF文档

    ​前言 最近项目上有一个需求,需要在Android端加载显示pdf文档,因为没有相关的经验,在刚接到需求的时候,第一想法就是打开程序员的第二大脑进行搜索,搜索结果还是蛮理想的,了解到了MuPDF,它支 ...

最新文章

  1. nginx 没有cookie_Nginx 内容缓存及常见参数配置
  2. for和foreach分析
  3. [转帖]最新FLASH 0DAY 漏洞总结分析篇
  4. linux qt 音频文件怎么打开,Qt:获取Linux中可用音频设备的列表
  5. InputStream中通过mark和reset方法重复利用缓存
  6. C++学习之路 | PTA乙级—— 1014 福尔摩斯的约会 (20分)(精简)
  7. CNN进行新闻文本分类代码实战,包含分类文本
  8. Opencv实现图像无缝拼接,Sift查找特征点,Flann进行匹配
  9. python编程实例
  10. c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
  11. 单片机AD采样的几种算法
  12. 计算机学科代表的思维,【判断题】计算思维,是指计算机、软件及计算相关学科中的科学家和工程技术人员的思维模式。计算思维又称构造思维,它以设计和构造为特征, 以计算机学科为代表。...
  13. 双绞线接法详解双绞线的标准的由来与分析
  14. 计算机无法还原,win7旗舰版系统无法创建系统还原点 无法还原怎么办
  15. Unity不规则碰撞
  16. 计算机网络的利与弊,网络的利与弊辩论会总结.doc
  17. 3天(从策划到上线传播)获客10w+| 小程序拉新活动范例
  18. 远程连接服务器突然失败
  19. 在ROS Kinetic和Gazebo 8中使用智能汽车仿真演示
  20. 【Java设计模式】Java设计模式之(十九)装饰器模式(Decorator Pattern)

热门文章

  1. 汇总整理了96个常用的JavaScript工具函数
  2. android webview 网页图片加载不出来、显示不全、进入某页面退出,h5页面滑不了,点不了等功能异常等问题集锦
  3. Android学习路线指南,先收藏了
  4. Notability文件要从iCloud下载,一直转圈解决办法
  5. 企业品牌推广做不起来的几大原因
  6. kafka消费者 confluent_kafka
  7. addslashes是用PHP,php addslashes用法详解
  8. 球球大作战显示中国服务器较差,球球大作战新版本常见使用问题的解决方案
  9. graylog日志部署与使用
  10. 非递归后序遍历二叉树总结(2种方法)