前言
在上节中我们已经了解了DT2
打印机自带的字体只能打印字母
和数字
,无法打印中文
。若需要打印中文的话,需要给DT2
打印机下载亚洲字体
,然后也介绍了如何下载字体到打印机,如何通过软件给标签纸布局,如何将打印信息生成命令行
,以及了解了基本的打印命令知识。有需要了解的话,可参看以下文章:
Android实现科诚(Godex)DT2打印机打印(一)
今天就来介绍下在Android
环境下,如何利用代码实现DT2打印机
打印。
今天涉及的知识有:
-
Android
实现DT2
打印机打印前提 -
Android
实现DT2
打印jar
包依赖 - 封装类
GodexHelper
方法介绍 -
GodexHelper
在Activity
中使用 - 需要注意的问题
- 效果图和项目结构图
-
GodexHelper
源码
先来波效果图
一. Android
实现DT2
打印机打印前提
要代码实现DT2
打印机打印,则DT2
打印机需要下载好亚洲字体
,因为DT2
打印机自带字体只能打印字母
和数字
,无法打印中文
,具体如何下载和处理,大家可以参考以下文章:
Android实现科诚(Godex)DT2打印机打印(一)
ok, 假设DT2
打印机已经下载好字体,设置字形标识符
为AZ3
。
二.Android
实现DT2
打印jar
包依赖
为了便于在Android
实现DT2
打印机打印,需要用到EZioAD.jar
包。大家可以在DT2打印机连接jar包和操作命令中下载该jar
包。然后将jar
包拷贝到 项目/app/libs/
文件夹下,最后将该jar
包Add as Library...
三. 封装类GodexHelper
方法介绍
jar
包引用成功后,我将打印机连接
,打印
,关闭
等操作封装到了一个帮助类——GodexHelper
中,为的是便于使用。下面就来介绍下GodexHelper
的几个主要方法。
/**对象初始化**/
public GodexHelper(Context context)
/***
* usb方式连接打印机
*
* return true:连接成功 fasle:连接失败
*/
public boolean connectPrinter()
/***
* 打印机是否正在打印
*
* @return true:打印机正在打印 false:打印机不在打印状态
*/
public boolean isPrinting()
/***
* 打印信息
*
* @param posX 打印起点x坐标
* @param posY 打印起点y坐标
* @param obj 要打印的信息
* @param bold 打印的信息是否加粗。仅在 printType=GodexHelper.TEXT_TYPE
* 即打印文字时生效。
* true:打印文字加粗
* false:打印文字不加粗
*
* @param printType 打印类型
*/
public void printInfo(int posX,int posY,Object obj,boolean bold,int printType)
/**关闭打印机**/
public void closePrinter()
当然,GodexHelper
中还有其他方法,具体的大家看源码吧,这里就不细说了。
四. GodexHelper
在Activity
中使用
下面看看 GodexHelper
在Activity
中使用代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private TextView mTv;
private Button mBtn1;
private Button mBtn2;
private Button mBtn3;
private Button mBtn4;
private Button mBtn5;
private Button mBtn6;
private GodexHelper mGodexHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogUtil.setDebug(true);
initView();
initData();
setListener();
}
private void initView() {
mTv = findViewById(R.id.tv);
mBtn1 = findViewById(R.id.btn1);
mBtn2 = findViewById(R.id.btn2);
mBtn3 = findViewById(R.id.btn3);
mBtn4 = findViewById(R.id.btn4);
mBtn5 = findViewById(R.id.btn5);
mBtn6 = findViewById(R.id.btn6);
}
private void initData() {
mGodexHelper=new GodexHelper(MainActivity.this);
}
private void setListener() {
mBtn1.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn3.setOnClickListener(this);
mBtn4.setOnClickListener(this);
mBtn5.setOnClickListener(this);
mBtn6.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1://连接打印机
if(mGodexHelper.connectPrinter()){
ToastUtil.shortShow("====打印机连接成功====");
}else{
ToastUtil.shortShow("====打印机连接失败====");
}
break;
case R.id.btn2://打印机是否正在打印
if(mGodexHelper.isPrinting()){
ToastUtil.shortShow("====打印机正在打印====");
}else{
ToastUtil.shortShow("====打印机处在非打印状态====");
}
break;
case R.id.btn3://打印文字
mGodexHelper.printInfo(30,20,"我是中国人",false,GodexHelper.TEXT_TYPE);
break;
case R.id.btn4://打印图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_delete2, null);
mGodexHelper.printInfo(30,20,bitmap,false,GodexHelper.IMAGE_TYPE);
break;
case R.id.btn5://打印二维码
mGodexHelper.printInfo(30,20,"我是中国人",false,GodexHelper.QRCODE_TYPE);
break;
case R.id.btn6://关闭打印机
mGodexHelper.closePrinter();
ToastUtil.shortShow("====打印机关闭====");
break;
default:
break;
}
}
}
五. 需要注意的问题
需要注意的是GodexHelper
打印二维码的方法,打印出的二维码识别上存在写问题,就是识别比较困难,当然,我们可以在GodexHelper
中对该方法的参数进行调节,具体各参数意义大家可以看 DT2打印机连接jar包和操作命令 中说明书的详细解释。
对于这个问题,我们也可以使用Zxing
库生成一个二维码bitmap
,然后利用GodexHelper
打印图片的方法来打印二维码。
GodexHelper
打印图片的方法如果是用来打印其他图片(如照片之类的),可能显示效果不是很好,会打印出来"一片黑",我们也可以通过调节该方法的参数做微调,但是GodexHelper
打印图片的方法用来打印二维码
图片是完全没问题的,很清晰。
六.效果图和项目结构图
七. GodexHelper
源码
下面给出 GodexHelper
源码: