1、案例说明
由于项目组没有合适的移动端开发工程师,在公司向我提出APP的开发任务后,选择了使用ApiCloud作为平台,原有的web应用作为服务端来进行开发。APP端主要的功能就是车辆运输完成或即将完成时,通过车上的蓝牙热敏打印机将车辆本次配送的商品相关信息打印出来由司机交给商品接收方。
2、环境
服务端:SSM+Eclipse+Tomcat+JDK1.7
移动端:ApiCloud+HTML+PosPrinter
3、ApiCloud平台 在开发控制台中为应用添加posPrinter模块
说明:ApiCloud平台中的模块相当于我们web端开发中会用到的工具类、插件等。
3-1、登录ApiCloud网站,打开用户开发控制台
3-2、打开对应应用后选择模块管理,搜索posPrinter后点击模块右上角的加号,将模块添加至应用
3-3、打开ApiCloud studio开发工具,右键选中项目后点击-编译自定义loader-后扫描生成的二维码安装的二维码,将自定义loader安装到手机中,绑定模块完成 即可进行APP蓝牙打印部分的功能开发
4、手机绑定蓝牙热敏打印机
5、APP端代码开发
HTML页面中,定义手机绑定蓝牙设备下拉框和打印按钮
<div id="pirnt2" style="">
<td>
选择打印设备<select id="QsPrinter"></select>
</td>
<button onclick="printBlutooth()" style="" >
打印
</button>
</div>
JS获取蓝牙 设备列表并显示到页面上
//获取蓝牙设备列表
//定义打印模块
var printModule = api.require('posPrinter');
//定义打印模块参数
var param = {
'status': 'bonded'
};
//status的状态分为两种 bonded为手机已绑定的蓝牙设备 优势:速度快,但是必须提前绑定打印设备
//all为搜索手机连接范围内的所有开放蓝牙设备,但是需要30″以上的等待时间 建议使用bonded
printModule.getBluetoothPrinters(param, function (ret, err) {
//alert(JSON.stringify(ret));
$.each(ret, function(i, item) {
$("#QsPrinter").append("<option value="+item.address+">"+item.name+"</option>");
});
});
//打印方法
function printBlutooth(){
//divall为待打印信息div块 <C>标签为打印格式 意为居中 其他标签请参考Api文档 https://docs.apicloud.com/Client-API/Device-Access/posPrinter#a5
var info1 = '<C>'+$("#divall").html()+'</C>';
var printModule = api.require('posPrinter');
//获取打印机Mac地址
var QsPrinter = $("#QsPrinter").val();
var param =
{
taskList:
[
{
printerAddr: QsPrinter, //蓝牙打印机Mac地址可以写死(如"98:D3:31:50:24:E8"),也可以在手机已绑定的蓝牙设备手动选择
content: info1,//打印内容
keepAlive:true,//蓝牙打印机,建议把keepAlive设为true
copyNum: 1//重复打印次数 默认1 可根据自身业务需求调整
}
]
};
//调用模块进行打印
printModule.print(param);
}