Expo BarCodeScanner扫描同一条形码返回不同值的问题咨询
Expo BarCodeScanner扫描同一条码返回不同data值的问题
我使用Expo BarCodeScanner扫描条形码时,每次返回的data值都不相同。我认为条形码应对应唯一固定的编号,请问这是正常情况还是我的实现存在问题?
补充说明:我没有实体条形码,是通过电脑屏幕进行扫描的,这会不会是问题的诱因?
我的代码实现如下:
const handleBarCodeScanned = ({ type, data }) => { try { console.log(type); //this returns 1024 console.log(data); //this value is different every time setData(data); setScanned(true); alert(`Bar code with type ${type} and data ${data} has been scanned!`); } catch (error) { alert(`we did not recognize the barcode.Please try again`); console.error("Unable to parse string: ", error); } }; <BarCodeScanner onBarCodeScanned={scanned ? undefined : handleBarCodeScanned} barCodeTypes={[BarCodeScanner.Constants.BarCodeType.code93]} style={[StyleSheet.absoluteFillObject, styles.minicontainer]} /> {scanned && <Button title={"Tap to Scan Again"} onPress={Rescan} />} </View>
问题解答
- 这种情况不正常,正常扫描同一有效条码应该返回固定的data值。
- 你的代码实现本身没有明显逻辑问题,核心问题大概率出在屏幕扫描的干扰上:
- 电脑屏幕的刷新率、摩尔纹、亮度不均,会导致相机捕捉的条码图像出现变形、噪点,扫描器无法准确识别条码内容,每次解析出错误的随机值。
- 屏幕显示的条码可能本身清晰度不足,或者缩放比例不合适,进一步加剧识别误差。
- 验证与解决建议:
- 优先使用实体Code93条码打印出来扫描测试,确认是否返回固定值。
- 如果必须用屏幕扫描,尽量调整屏幕亮度到适中,让条码完整占满相机取景框,避免倾斜,同时减少环境光对屏幕的反射干扰。
内容的提问来源于stack exchange,提问作者lui
相关产品推荐
相关产品推荐

