SpiritMobile Android SDK 使用手册

SpiritMobile Android SDK 请通过如下链接下载

同时, 我们在gitee上提供了开源的Native demo程序H5 demo程序

Android Native SDK


配置AndroidStudio

获取SDK并解压, 拷贝spirit-release.arr到android项目的libs目录下, 如: 项目目录/app/libs。

在build.gradle 中添加:

android {
  ...
    repositories {
        flatDir {dirs 'libs'}
    }
  ...
}

dependencies {
...
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation (name:'spirit-release', ext:'aar')
...
}

添加许可证

在项目的 AndroidManifest.xml 的 appliction 节中添加:

<meta-data android:name="cn.printspirit.LICENSE_ID" android:value="your sdk license id" />

SDK LICENSE_ID需要在本网站申请, 详细操作见如何获取SDK LICENSE_ID

编写打印代码

典型代码如下:

import com.printspirit.spirit.Printer;
...

//设置可用的打印机机型号,如果不设置,只能使用系统支持的打印机。
Printer.addPrinter("bluetooth id", new Printer.PrnOpt(203,  76f,  0,  Printer.INS_SET.CPCL));

//设置标签模板服务URL, 如果不设置为本网站
Printer.setUrl("http://192.168.1.1/api/load-template?id=");

final AsyncTask<Integer,Integer,Integer> th=new AsyncTask<Integer, Integer, Integer>() {
    String errmsg;
        
    @Override
    protected Integer doInBackground(Integer...params) {
        try {
            /* get printer instance */
            Printer prn=Printer.getInstance();
            if (prn.open(MainActivity.this, false)) {
                //打印标签,也可以执行其他打印动作。
                Map<String, Object> vars=new HashMap<String, Object>();
                vars.put("var1", "value1");
                vars.put("var2", "value1");
                prn.printLabel("label-id", vars);
                //关闭设备
                prn.close();
            } else {
                errmsg = "请先连接打印机";
                Intent intent = new Intent(MainActivity.this, ConnectActivity.class);
                startActivity(intent);
            }
        } catch (SpiritException e) {
            errmsg = e.getMessage();
        }
        return 0;
    }

    @Override
    protected void onPostExecute(Integer result) {
        showToast(errmsg);
    }
};
...

连接打印机 Printer#open()

打印前,必须使用Printer#open()方法打开打印设备,SDK会自动尝试连接打印, 如果遇到首次使用(未配置打印机)、打印机关机等情况, open()方法会返回false, 这时可以通过Intent启动com.printspirit.spirit.ConnectActivity蓝牙打印机连接界面,搜索、选择、连接打印机。: 有的手机需要提前打开蓝牙设备并配对打印机。

目前平台支持的打印机包括:BTP-P33, BTP-P36, QY-386等, SDK将通过打印机的蓝牙标识,自动判断打印类型,包括:指令集,分辨率DPI, 有效宽度,内置字体等参数。 如果你的打印机打印机不再上述范围,但指令集为ZPL/CPLC,可以通过addPorinter API, 手动设置打印机参数。

注意:Printer#open, Printer#PrintLabel等功能有网络操作,不能在UI线程中运行。

打印标签

prn.printLabel(tpid, vars) 完成标签打印。

该函数的第一个参数为模板ID, 即在本网站编辑、保存模板后生成的ID, 比如:3310aadd-086a-42b7-a591-7265f7ec00e8, SDK将自动从网站下载模板定义。 第二个参数为模板变量, 将用变量自动替换模板中形如{{.var1}}的位置。

打印其他内容。

也可以不使用模板打印方式, 直接调用原始命令打印。

H5/JS SDK

为了方便使用H5/JS开发移动应用,SpiritMobile 提供了在webview中注入SPIRIT对象的功能。可以使用javascript API通过控制打印机javascript, 其API和桌面平台基本相同,方便程序移植API功能想见

android程序修改

目前H5混合开发较为流行,Adroid开发者手中一般都有自己比较完善的webview封装,因此我们仅仅提供和打印精灵相关的程序,由开发者自行集成到自己的APP中。只需要在初始化WebView时,加入如下三行代码即可。

...
import com.printspirit.spirit.JsInterface;
...
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview.addJavascriptInterface(new JsInterface(mWebview), "_SPIRIT");

其中: mWebview是Webview实例。

在gitee网站上有完整的例子

注意:封装APP时,需要采用和Native开发相同方式的方式设置许可证。

js程序开发

  1. 引入spirit.js。
  2. 调用API完成打印。

JAVA API


Printer Printer.getInstance();

获取打印机实例。

Printer prn=Printer.getInstance();

Printer.getInstance() 返回了打印机的实例,后面的操作均基于此实例, 本手册记为 Printer#method(), 主要和调用静态方法的区别。

boolean Printer.addPrinter();

boolean Printer#open(boolean usecache, String fontname);

Printer.clearCache()

清除模板cache, 在模板修改后,调用改方法清除cache .


留言

登录