我正在开发一个React-Native应用程序。
我已经使用Expo-Camera模块成功集成了一个 * QR码扫描仪 *。但是,我在扫描过程中遇到了一个问题。当我尝试扫描QR码时,控制台快速连续显示多个代码扫描,通常在一毫秒内扫描3到5次。我想知道为什么相机同时触发多个扫描,我正在寻找一种解决方案,将其限制在每次尝试只扫描一次。
此外,如果扫描到无效代码,我实现了一个吐司通知。问题是,该通知会出现多次,对应于扫描失败的次数。此外,当扫描失败时,设备的振动功能会多次触发,也是3到5次。
我正在寻求有关如何确保QR码扫描仪只执行一次扫描尝试的指导。
- 代码示例部分 *
const handleBarCodeScanned = async ({ typeCode, data }) => {
console.log("NEW code scanned, Type: " + typeCode + " Data: " + data + " Time scan: " + new Date());
ToastAndroid.show("scanned", ToastAndroid.SHORT)
};
return (
<View style={styles.container}>
<Camera
barcodeSettings={{
interval: 1000, // scan once per second
}}
style={styles.camera}
type={type}
onBarCodeScanned={handleBarCodeScanned}
ratio="16:9">
</Camera>
</View>
);
}
字符串
:*
- LOG NEW code scanned, Type: 256 Data: 044922 Time scan: Tue Oct 24 2023 16:34:08 GMT+0300
- LOG NEW code scanned, Type: 256 Data: 044922 Time scan: Tue Oct 24 2023 16:34:08 GMT+0300
- LOG NEW code scanned, Type: 256 Data: 044922 Time scan: Tue Oct 24 2023 16:34:08 GMT+0300
- LOG NEW code scanned, Type: 256 Data: 044922 Time scan: Tue Oct 24 2023 16:34:08 GMT+0300
- LOG NEW code scanned, Type: 256 Data: 044922 Time scan: Tue Oct 24 2023 16:34:08 GMT+0300
- LOG NEW code scanned, Type: 256 Data: 044922 Time scan: Tue Oct 24 2023 16:34:08 GMT+0300
型
关键是代码每毫秒会被扫描几次,即使使用interval
属性也无法控制
环境
expo-env-info 1.0.5 environment info:
System:
OS: Windows 10 10.0.19045
Binaries:
Node: 18.17.1 - C:\Program Files\nodejs\node.EXE
npm: 9.6.7 - C:\Program Files\nodejs\npm.CMD
npmPackages:
expo: ^49.0.13 => 49.0.13
react: 18.2.0 => 18.2.0
react-native: 0.72.6 => 0.72.6
Expo Workflow: managed
型
1条答案
按热度按时间bwntbbo31#
你可以使用state来判断是否已经扫描过某个东西。你的处理函数将包括一个if检查,看看过去是否已经扫描过某个东西,如果没有,就继续。
我现在在移动的上,但我将在几分钟内添加一个代码示例。
字符串