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程序开发
- 引入spirit.js。
- 调用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 .