更新记录
0.0.1(2023-11-06) 下载此版本
允许uniapp通过 myd-pda_ybx 这个插件进行 pda 优博讯扫码枪 单扫 连扫
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.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原生插件配置”->”云端插件“列表中删除该插件重新选择
myd-pda_ybx
允许uniapp通过 myd-pda_ybx 这个插件进行 pda 优博讯扫码枪 单扫 连扫
使用示例如下:
<template>
<view class="wrap">
<view >{{scanCode}}</view>
<view style="padding: 10px;" @click="scanBarCode">摄像头扫条形码</view>
<view style="padding: 10px;" @click="startDecodeSingle">单次激光扫条形码</view>
<view style="padding: 10px;" @click="startDecodeMul">连续激光扫条形码</view>
<view style="padding: 10px;" @click="stopDecode">停止激光扫条形码</view>
</view>
</template>
<script>
var main, receiver, filter;
var _codeQueryTag = false;
export default {
components: {
},
data() {
return {
scanCode: 'scanCode',
mydPDAYBX:{},
};
},
onShow: function() {
this.initScan();
this.startScan();
},
onHide: function() {
this.stopScan();
},
destroyed: function() {
/*页面退出时一定要卸载监听,否则下次进来时会重复,造成扫一次出2个以上的结果*/
this.stopScan();
},
onLoad() {
this.init()
},
methods: {
async initMydPDAYBX(){
const mydPDAYBX = uni.requireNativePlugin('myd-pda_ybx')
this.mydPDAYBX = mydPDAYBX;
const {
/**
* 获取触发扫描出光的键值
* @return res {"code":"success","scanKey":value}
*/
getHandShankKeyCode,
/**
* 开启解码 调用该方法,扫描头开始工作。
* @return res {"code":"success","scanKey":value}
*/
startDecode,
/**
* 初始化 ScanManager
* @return
*/
initScanManager,
/**
* 设置触发扫描出光的按钮
* @param options {key:value,key2:value2}
*/
eventKeyEnable523,
/**
* 获取 ScanManager
* @return ScanManager
*/
getScanManager,
/**
* 停止解码 这将停止当前正在进行的任何数据采集。
* @return res {"code":"success"}
*/
stopDecode,
removeAllEventListeners,
/**
*单扫模式
*/
hostMode,
/**
* 关闭扫描头 的电源,扫描头将不会工作
* @return res {"code":"success"}
*/
closeScanner,
/**
*连扫模式
*/
continuousMode,
/**
* 设置间隔时间
* @param interval 连续扫码的间隔时间 单位毫秒 范围0~5000ms
*/
setIntervalTime,
addEventListener,
/**
* 打开扫描头 的电源
* @return res {"code":"success"}
*/
openScanner,
} = mydPDAYBX;
initScanManager();
},
async startDecode(){
this.mydPDAYBX.startDecode();
},
async startDecodeSingle(){
this.mydPDAYBX.hostMode();
this.mydPDAYBX.startDecode();
},
async startDecodeMul(){
this.mydPDAYBX.continuousMode();
this.mydPDAYBX.setIntervalTime(5000);
this.mydPDAYBX.startDecode();
},
async stopDecode(){
this.mydPDAYBX.stopDecode();
},
async init(){
this.initMydPDAYBX();
},
async scanBarCode(){
console.log('scanBarCode,11111111111111');
uni.$u.toast('开始扫条形码');
const success = function (res) {
console.log(`条码类型:${res.scanType}`);
console.log(`条码内容:${res.result}`);
uni.$u.toast(`条码内容:${res.result}`);
uni.showModal({
content: `条码类型:${res.scanType} ,条码内容:${res.result},barCode:${res.barCode},code:${res.code}`,
showCancel: false
});
}
const fail = function (res) {
console.log(`fail条码类型:${res.scanType}`);
console.log(`fail条码内容:${res.result}`);
}
uni.scanCode({
scanType: ['barCode'],
success,
fail,
})
},
initScan() {
main = plus.android.runtimeMainActivity(); //获取activity
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
filter = new IntentFilter();
// filter.addAction("nlscan.action.SCANNER_RESULT"); // 换你的广播动作
// filter.addAction("nlscan.intent.action.uhf.ACTION_RESULT"); // 换你的广播动作
//针对优博讯安卓PDA-i6300A添加监听,其它优博讯的型号应该一样或类似
filter.addAction("android.intent.ACTION_DECODE_DATA"); //监听扫描
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: this.onReceive,
});
},
startScan() {
main.registerReceiver(receiver, filter);
},
stopScan() {
main.unregisterReceiver(receiver);
},
onReceive: function(context, intent) {
plus.android.importClass(intent);
var code1 = intent.getStringExtra("barcode_string"); // 换你的广播标签
if(code1!=null){
this.queryCode(code1,2);
}
},
queryCode: function(code,type) {
var id = code
console.log('id:', id)
this.scanCode = id;
uni.showModal({
content: `onReceive:${id}`,
showCancel: false
});
uni.$emit('scancode', {
code: id,
type:type
})
},
}
};
</script>
<style scoped lang="scss">
</style>