android插件实现打印机,Android USB调用打印机(针式打印机)
1.在AndroidManifest.xml中配置权限
复制代码
在调用的activity中加入
复制代码
如图在这里输入图片标题
2.在onCreate调用
PrinterUtil.init(Activity)
复制代码
3.打印文字接口
PrinterUtil.printText(String)
复制代码
4.打印实现类
public class PrinterUtil {
private static UsbManager usbManager;
/**
* 满足的设备
*/
private static UsbDevice myUsbDevice;
/**
* usb接口
*/
private static UsbInterface usbInterface;
/**
* 块输出端点
*/
private static UsbEndpoint epBulkOut;
private static UsbEndpoint epBulkIn;
/**
* 控制端点
*/
private static UsbEndpoint epControl;
/**
* 中断端点
*/
private static UsbEndpoint epIntEndpointOut;
private static UsbEndpoint epIntEndpointIn;
/**
* 连接
*/
private static UsbDeviceConnection myDeviceConnection;
/**
* 初始化打印机(获取usb打印设备,连接打印机,获取USB连接权限)
* @param activity
*/
public static void init(Activity activity){
//1)创建usbManager
usbManager = (UsbManager)activity.getSystemService(Context.USB_SERVICE);
enumeraterDevices(activity);
getDeviceInterface();
assignEndpoint();
}
/**
* 枚举设备
*/
private static void enumeraterDevices(Activity activity){
HashMap deviceList = usbManager.getDeviceList();
Iterator deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
UsbDevice device = deviceIterator.next();
//每个打印机的vendorId和productId都不同,需要自行替换
if (device.getVendorId() == 4070 && device.getProductId() == 33054) {
myUsbDevice = device; // 获取USBDevice
PendingIntent pi = PendingIntent.getBroadcast(activity, 0,
new Intent(ACTION_USB_PERMISSION), 0);
usbManager.requestPermission(myUsbDevice, pi);
}
}
}
/**
* 获取设备的接口
*/
private static void getDeviceInterface() {
if(myUsbDevice!=null){
Log.i(TAG,"interfaceCounts : "+myUsbDevice.getInterfaceCount());
usbInterface = myUsbDevice.getInterface(0);
System.out.println("成功获得设备接口:" + usbInterface.getId());
}
}
/**
* 分配端点,IN | OUT,即输入输出;可以通过判断
*/
private static void assignEndpoint() {
if(usbInterface!=null){
for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
UsbEndpoint ep = usbInterface.getEndpoint(i);
switch (ep.getType()){
case UsbConstants.USB_ENDPOINT_XFER_BULK://块
if(UsbConstants.USB_DIR_OUT==ep.getDirection()){//输出
epBulkOut = ep;
System.out.println("Find the BulkEndpointOut," + "index:" + i + "," + "使用端点号:"+ epBulkOut.getEndpointNumber());
}else{
epBulkIn = ep;
System.out .println("Find the BulkEndpointIn:" + "index:" + i+ "," + "使用端点号:"+ epBulkIn.getEndpointNumber());
}
break;
case UsbConstants.USB_ENDPOINT_XFER_CONTROL://控制
epControl = ep;
System.out.println("find the ControlEndPoint:" + "index:" + i+ "," + epControl.getEndpointNumber());
break;
case UsbConstants.USB_ENDPOINT_XFER_INT://中断
if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {//输出
epIntEndpointOut = ep;
System.out.println("find the InterruptEndpointOut:" + "index:" + i + "," + epIntEndpointOut.getEndpointNumber());
}
if (ep.getDirection() == UsbConstants.USB_DIR_IN) {
epIntEndpointIn = ep;
System.out.println("find the InterruptEndpointIn:" + "index:" + i + ","+ epIntEndpointIn.getEndpointNumber());
}
break;
default:
break;
}
}
}
}
private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
/**
* 连接设备
*/
private static void openDevice() {
if(usbInterface!=null){//接口是否为null
// 在open前判断是否有连接权限;对于连接权限可以静态分配,也可以动态分配权限
UsbDeviceConnection conn = null;
if(usbManager.hasPermission(myUsbDevice)){
//有权限,那么打开
conn = usbManager.openDevice(myUsbDevice);
}
if(null==conn){
System.out.print("不能连接到设备");
return;
}
//打开设备
if(conn.claimInterface(usbInterface,true)){
myDeviceConnection = conn;
if (myDeviceConnection != null)// 到此你的android设备已经连上zigbee设备
System.out.println("open设备成功!");
final String mySerial = myDeviceConnection.getSerial();
System.out.println("设备serial number:" + mySerial);
} else {
System.out.println("无法打开连接通道。");
conn.close();
}
}
}
/**
* 打印文字
* @param activity
* @param txt
*/
public static void printText(Activity activity,final String txt){
openDevice();
new Thread(new Runnable() {
@Override
public void run() {
try {
//每个打印机的编码格式不一样,根据打印机的编码自行修改
byte[] buffer = txt.getBytes("GBK");
myDeviceConnection.bulkTransfer(epBulkOut,buffer,buffer.length,0);
} catch (Exception e) {
}
}
}).start();
}
复制代码
}
如果觉得我的文章对你有帮助,请点个赞,谢谢
android插件实现打印机,Android USB调用打印机(针式打印机)相关推荐
- react怎么连接打印机_electron+react调用打印机进行打印
原创文章,转载请注明出处 首先主进程获取打印机列表传递给渲染进程 其次渲染进程展示打印机列表,并选择打印机 选择完打印机后,执行打印,或多个打印 获取打印机列表(渲染进程) try { ipcRend ...
- android 插件化 方案,Android应用开发之Android 插件化,qihoo360插件方案配置教程
本文将带你了解Android应用开发Android 插件化,qihoo360插件方案配置教程,希望本文对大家学Android有所帮助. Android 插件化,qihoo360插件方案 目录 Andr ...
- Android插件丢失怎么办,Android studio推荐插件以及升级后插件丢失问题解决
1.android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备 ...
- 带网络接口的打印机和USB接口打印机的共享区别
共享打印机在办公中使用最为常见,它允许多人共用一台打印机,以节省成本. 通常打印机有两种连接电脑的方式,一种是的USB接口,另一种是网线接口的. USB接口打印机共享时,需要一台电脑主机,打印机与电脑 ...
- php调用 打印机,web端调用打印机方案总结(示例代码)
背景 新零售业务开始以来,一些线下商品上架售卖的同时,要明确售卖价格,前期人工人肉写标签贴上商品售卖价,容易 产生疏忽,导致所标售卖价与收银所收价格不统一,造成顾客疑惑(据说还因为被投诉,上了新闻-_ ...
- firefox android 插件,Firefox for Android将很快迎来更多扩展插件
与桌面版本相比,移动版浏览器的功能相当受限.即便如此,Firefox for Android 用户仍希望 Mozilla 能够满足其对于附加组件的丰富需求. 当 Mozilla 试图从头开始构建全新的 ...
- python 打印机控制_python调用打印机
业务环境 windows+python 业务流程 读取网络地址 下载文件 打印本地文件 关键扩展 pywin32 关键软件 福昕pdf(静默打印关键,把福昕pdf编辑器变成pdf默认打开程序,wps也 ...
- java 打印机无法使用_java调用打印机问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public static void main(String[] args) { File file = new File("D:/test.t ...
- android studio(1)---探索Android Studio
探索 Android Studio Android Studio 是基于 IntelliJ IDEA 的官方 Android 应用开发集成开发环境 (IDE). 除了 IntelliJ 强大的代码编辑 ...
最新文章
- 【CentOS 7LNMP架构33】,nginx负载均衡#180109
- Java高阶部分知识点汇总(二)-封装与隐藏详讲
- 这五个网站可以让你免费学习编程,快收藏!
- VTK:3DArray用法实战
- 细节之中自有天地,整洁成就卓越代码
- java提取图片中的文字,深入分析
- 浪潮5280m4管理口ip_TPLink云路由器如何更改LAN口IP地址 TPLink云路由器更改LAN口IP地址方法【介绍】...
- opencv ubuntu 汉字_ubuntu下没有中文输入法的解决办法
- 窗体点击,空白处隐藏(stopPropagation)
- 《人工智能:一种现代方法(AIMA)》绪论 智能Agent 思维导图
- android中bmob云存储,Android中的Bmob移动后端云服务器功能
- 三维触控测试软件,解读苹果3D touch三维触控技术
- uhs3内存卡有哪些_高速内存卡是什么 3款热门高速内存卡推荐
- 自动化立体仓库使用流程!海格里斯自动化立体库流程:入库——出库——拣选
- android平台从froyo 2.2开始支持jni单步调试了
- Python_Task09:文件与文件系统
- MUR20060CT-ASEMI快恢复模块200A 600V
- 计算机类期刊 SCI 、EI 收录,核心期刊目录
- 动画(effects)素材dlc导入问题
- 银行的性质、经营原则和存在的经济学原理
热门文章
- 微信小程序生成(painter)海报
- 解锁ChatGPT超高级玩法,展示动态图片,纯干货分享!
- 软件测试周刊(第61期):内心强大的人都有三个共性「不和他人作比较」「不对他人有期待」「不批判他人」
- VisionPro软件笔记
- 较早版本OAI ENB启动问题解决
- win10设置pin一直转圈_Win10 自带手机投屏功能,80% 的人居然都不知道
- php 保留2位整数 补白,php图片处理类 缩放有补白效果
- 计算机原理说课教案,《计算机系统及工作原理说课稿》
- 第5章第17节:案例:使两张幻灯片中的图片进行平滑切换 [PowerPoint精美幻灯片实战教程]
- (4.2.40)阿里开源路由框架ARouter的源码分析