USB打印开发
最近对接了一些硬件设备,其中需要通过USB通讯去打印,通过学习自己实现了一下
先看看google官方文档
https://developer.android.google.cn/guide/topics/connectivity/usb/host.html
USB打印中的常量注解请查阅一下博客
https://www.jianshu.com/p/09571a236feb
USB通讯主要看的还是业务逻辑
1.注册USB广播,获取到设备上连接的所有USB设备,采用集合的思想管理
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
2.如果设备有权限就直接连接,如果没有需要主动申请权限
usbManager.requestPermission(myUsbDevice, permissionIntent);
3.分配端点,获取到UsbEndpoint对象
UsbEndpoint ep = usbInterface.getEndpoint(i);
4.连接设备,连接是需要判断社保是否具备权限
UsbDeviceConnection conn = usbManager.openDevice(myUsbDevice);
if(null==conn){
Toast.makeText(this,“不能连接到设备”,Toast.LENGTH_SHORT).show();
return;
}
//打开设备
if(conn.claimInterface(usbInterface,true)){
myDeviceConnection = conn;
// 到此你的android设备已经连上zigbee设备
System.out.println(“result–>open设备成功!”);
} else {
System.out.println(“result–>无法打开连接通道。”);
Toast.makeText(this,“无法打开连接通道。”,Toast.LENGTH_SHORT).show();
conn.close();
}
5.发送数据
public void sendMessageToPoint(byte[] buffer) {
int i = myDeviceConnection.bulkTransfer(epBulkOut, buffer, buffer.length, 0);
System.out.println("result-->:::"+i);
if( i>= 0){
//0 或者正数表示成功
System.out.println("发送成功");
} else {
System.out.println("发送失败");
}
}
话不多说最后上写代码,这个资源文件中只是几个button按钮,这里不贴出来了:
package com.example.mydemo;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.usb.UsbConstants;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbEndpoint;
import android.hardware.usb.UsbInterface;
import android.hardware.usb.UsbManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
import java.util.Iterator;
public