uni-app 条形码扫描准确度不高
uni-app 条形码扫描准确度不高
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC版本号 | Win10 |
| HBuilderX | 正式 |
| HBuilderX版本 | 3.1.12 |
| 手机系统 | Android |
| 手机版本号 | Android 7.1.1 |
| 手机厂商 | vivo |
| 手机机型 | vivo Y79A |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
async sacnOrder(){
uni.scanCode({
scanType: ['barCode'],
success:(async(res) => {
console.log('条码类型:'+res.scanType);
console.log('条码内容:'+res.result);
this.orderNo = res.result;
res = await this.$myRequest({
url:'/***/tmsApp/queryOrder',
data:{
orderNo:this.orderNo
},
method:'GET'
})
var item = res.data.data.receiptDTO;
if(item == undefined){
uni.showToast({
title:'未查询到此送货单',
icon:"none"
})
return
}
var flag = 0;
let swipeList = this.swipeList;
if(swipeList !==undefined && swipeList.length > 0 ){
swipeList.forEach(item1 =>{
if(item1.id == item.id ){
flag = 1;
}
})
}
if(flag == 1){
uni.showToast({
title:'此送货单已扫描',
icon:"none"
})
return
}
let key = "options";
let value = [
{
text: '删除',
style: {
backgroundColor: 'rgb(255,58,49)'
}
}
];
item[key] = value;
let date = new Date();
let dateNew = this.dateFormat("YYYYmmddHHMM", date)
console.log('扫描一维码,时间查看'+JSON.stringify(dateNew));
item["inCarStartDate"] = dateNew;
this.swipeList.push(item);
var trayN = parseInt(this.trayAllNum);
this.orderAllNum = this.swipeList.length;
this.trayAllNum = trayN+parseInt(item.tray);
console.log("result:"+JSON.stringify(swipeList, null, 2));
}),
})
},
操作步骤:
- 制作条形码
- APP端扫描
预期结果:
与制作的条形码号码一致
实际结果:
偶尔一致,偶尔出现随机八位数
bug描述:
扫描条形码的时候 有时候是对的,有时候扫出来是个随机的八位数,我看了下 日志打印出来的条码类型一直在变,但我扫的都是同一个单码.希望开发者大佬们看看有没有什么办法提高下准确度。谢谢
更多关于uni-app 条形码扫描准确度不高的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 条形码扫描准确度不高的实战教程也可以访问 https://www.itying.com/category-93-b0.html
从您的描述和代码分析,条形码扫描准确度问题可能源于以下几个方面:
-
环境光线和角度影响:条形码扫描对光线条件敏感,建议在光线充足、无反光的环境下进行,保持手机与条形码平行,距离适中(10-20厘米)。
-
设备硬件限制:vivo Y79A作为中端机型,摄像头性能和自动对焦能力可能较弱,建议测试其他高端机型对比效果。
-
扫描参数优化:当前代码仅指定了
barCode类型,可尝试扩展支持的格式:scanType: ['barCode', 'qrCode', 'datamatrix']虽然您只扫描条形码,但放宽类型限制有时能提高识别容错率。
-
图像预处理缺失:uni.scanCode依赖系统原生识别能力,若条形码打印质量不佳(如模糊、褪色),建议先通过canvas对图像进行锐化或对比度增强处理。
-
识别日志分析:您提到扫描类型频繁变化,这通常说明系统在尝试多种解码算法。建议在success回调中增加重试机制:
if (res.scanType !== 'barCode') { // 可设置最多3次重试扫描 }

