更新记录
1.1.7(2021-08-30)
增加二维码转图片打印,可调整二维码大小,优化二维码扫描效果。 更新打印图片,可调整打印图片大小
1.1.6(2021-04-29)
更新读取设备数据方法
1.1.5(2021-04-26)
修复读取蓝牙设备数据异常
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 10.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。 Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
更新内容:
1、增加打网络图片及二维码功能。
蓝牙打印简介
ZJQ-BluetoothUtil 是基于原生手机蓝牙打印的插件,目前支持android蓝牙打印,支持市场上大多蓝牙小票打印机。
使用步骤:
1、插件安装到uniapp项目中。
2、在相关组件中引用本地插件。
引用方法,在组件中定义 如: const bluetoothUtil = uni.requireNativePlugin('ZJQ-BluetoothUtil');
3、在uniapp项目中,添加定时器定时读取搜索到的设备
方法1: let userTimer = setInterval(() => { bluetoothUtil.getDevices(res => { if (res.isDiscoveryComplete===1) { clearInterval(userTimer ); //搜索完成清除定时器 } else { this.binddevices = res.bindDevice; this.notbinddevices = res.notbindDevice; } }); }, 2000); //每2秒获取一次搜索到的设备
方法2(推荐使用):
1、定义全局页面事件 var globalEvent = uni.requireNativePlugin('globalEvent');
2、在onload事件中监听蓝牙事件获取搜索到的设备
globalEvent.addEventListener('DevEvent', (e)=> { console.log('DevEvent'+JSON.stringify(e)); if(e.bindDevice){ this.binddevice = e.bindDevice } if(e.notbindDevices){ this.notbinddevice = e.notbindDevices } });
4、在方法中调用相关蓝牙连接、打印API。
API说明
函数名称 | 参数 | 说明 |
---|---|---|
enableBlueTooth | 无 | 启用本机蓝牙。 |
startDiscovery | 无 | 搜索蓝牙设备,注册蓝牙广播事件。 |
stopDiacovery | 无 | 停止搜索蓝牙设备,停止蓝牙广播。 |
getDevices | 无 | 获取蓝牙设备及蓝牙搜索状态,包括搜索到已配对设备、未配对设备。返回jsonobject对象,isDiscoveryComplete是否搜索完成,蓝牙搜索完成返回:1,正在搜索返回为:0;已配对设备列表为:bindDevice,未配对设备列表为:notbindDevice |
getBindDevice | 无 | 获取最近一次搜索到已配对设备列表。参数为:bindDevice。 |
connectbindDevice | 需连接设备MAC地址:参数为字符串 | 连接蓝牙设备,传入搜索到蓝牙设备地址。 |
intPrint | 无 | 初始化打印,在开始开始调用此方法。 |
printLine | 数字:intlineNumber | 打印空行,传数数字打印多行。 |
printTabSpace | 数字:length | 打印空格 |
printText | 字符串:text | 打印字符 |
printAlignment | 数字:0、1或2 | 对齐方式:0 : 左对齐,1:居中,2:右对齐 |
printLargeText | 字符串:text | 打印大字号标题。 |
printDashLine | 无 | 打印虚线,样式:------------------------ |
printBitmap | 传入Bitmap格式图片 | 打印图片 |
printUrlBitmap | 图片URL:String | 打印网络图片 |
printUrlBitmap | 图片URL:String | printUrlBitmap(String url,int width,int height); |
printQrcode | 二维码,类型为字符串 | 打印二维码 |
printQrcodeImg | 二维码,类型为字符串, | 将二维码转换图片进行打印, printQrcodeImg(code,int width,int height); |
readdata | 读取设备信息 | 使用方法: 1、注册监听事件var globalEvent = uni.requireNativePlugin('globalEvent'); r /> 2、在onLoad事件里监听 globalEvent.addEventListener('revdataEvent', function(e) { console.log('myEvent'+JSON.stringify(e)); }); |
代码例子:
<template>
<view class="content">
<view class="text-area">
<button type="default" @click="startdiscovery">搜索蓝牙设备</button>
<button type="default" @click="canceldiscovery()">停止搜索</button>
<button type="default" @click="print()">打印</button>
<button type="default" @click="readdata">读取</button>
</view>
<view>
已配对设备
<scroll-view :scroll-y="true" style="height: 400rpx;" show-scrollbar="true">
<radio-group>
<view v-for="(item, index) in binddevice" :key="index" v-if="item.devname" style="margin: 0px 40px;">
<view style="font-size: 32rpx; color: #333; margin-top: 5px;">
<radio :value="item.devname" @tap="connectdev(item.address,item.devname,0)" />
{{ item.devname }}
</view>
<view style="font-size: 24rpx;margin-top: 3px;">设备地址: {{ item.address }}</view>
</view>
</radio-group>
</scroll-view>
未配对设备
<scroll-view :scroll-y="true" style="height: 400rpx;" show-scrollbar="true">
<radio-group>
<view v-for="(item, index) in notbinddevice" :key="index" v-if="item.devname" style="margin: 0px 40px;">
<view style="font-size: 32rpx; color: #333; margin-top: 5px;">
<radio :value="item.devname" @tap="connectdev(item.address,item.devname,0)" />
{{ item.devname }}
</view>
<view style="font-size: 24rpx;margin-top: 3px;">设备地址: {{ item.address }}</view>
</view>
</radio-group>
</scroll-view>
</view>
</view>
</template>
<script>
//引用插件
const bluetoothUtil = uni.requireNativePlugin('ZJQ-BluetoothUtil');
//定义定时器
var getDevsInterval;
//页面全局事件
var globalEvent = uni.requireNativePlugin('globalEvent');
export default {
data() {
return {
title: 'Hello',
binddevice:[],
notbinddevice:[]
}
},
onLoad() {
//定义监听设备数据事件
globalEvent.addEventListener('revdataEvent', function(e) {
console.log('ConDevEvent'+JSON.stringify(e));
});
//定义监听搜索到设备事件
globalEvent.addEventListener('DevEvent', (e)=> {
console.log('DevEvent'+JSON.stringify(e));
if(e.bindDevice){
this.binddevice = e.bindDevice
}
if(e.notbindDevices){
this.notbinddevice = e.notbindDevices
}
});
},
methods: {
//开始搜索
startdiscovery(){
bluetoothUtil.startDiscovery();
},
//取消搜索
canceldiscovery() {
bluetoothUtil.stopDiacovery();
},
//连接设备
connectdev(address,name){
bluetoothUtil.connectnotbindDevice(address,res=>{
console.log(res)
})
},
//读取设备信息
readdata(){
bluetoothUtil.readdata();
},
//打印
print(){
bluetoothUtil.intPrint(); //打印前调用初始化方法
bluetoothUtil.printLine(1); // 打印1行,传数字打印多行。
bluetoothUtil.printLine(1); //打印空行
bluetoothUtil.printTabSpace() //打印空格
bluetoothUtil.printText("打印文本")// 打印文本
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printText("打印文本")// 打印文本
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printAlignment(0); //设置对齐方式:0 : 左对齐,1:居中,2:右对齐
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printLargeText("AAA") // 打印大号字体
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printDashLine() // 打印虚线,样式:------------------------
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printQrcode('打印二维码'); //打印二维码
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printUrlBitmap('url'); // 打印url网络地址
bluetoothUtil.printLine(1);//打印空行
bluetoothUtil.printQrcodeImg('打印文本',300,300); //打印二维码(二维码转图片打印,效果较好,可设置二维码大小)
bluetoothUtil.printUrlBitmap('Url',380,380).then(res=>{
console.log(res)
}) // 打印url网络地址 ,可设置图片打印大小
}
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>