Expo CameraView 无法扫描条形码

问题描述 投票:0回答:1

从expoBarcodeScanner切换到expo CameraView时,扫码功能停止工作。 CameraView 正确打开,确实授予了权限,但在尝试扫描任何代码时,没有任何反应,handleBarCodeScanned 未命中。

相机视图模式:

<Modal
    visible={modalVisible}
    transparent={false}
    animationType="slide"
  >
    <View style={styles.modalContainer}>
      <CameraView
        style={{ width:'100%', height:'100%' }}
        barcodeScannerEnabled
        onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}
        barcodeScannerSettings={{
          barcodeTypes: ["ean13"],
        }}
      />
      <TouchableOpacity style={styles.closeButton} onPress={() => setModalVisible(false)}>
        <Text style={styles.closeButtonText}>Close Scanner</Text>
      </TouchableOpacity>
    </View>
  </Modal>

处理:

const handleBarCodeScanned = ({ type, data }) => {
console.log('hitted');
setScanned(true);
setModalVisible(false);
Alert.alert(`Bar code type ${type} -> ${data}`);

};

以及具有权限的工作部分:

const openScanner = async () => {
console.log(cameraPermission?.status);

if (cameraPermission?.status !== PermissionStatus.GRANTED) {
  const { granted } = await requestCameraPermission();
  if (!granted) {
    Alert.alert('Camera permission is required to use the barcode scanner.');
    return;
  }
}

setScanned(false);
setModalVisible(true);

};

react-native expo
1个回答
0
投票

这实际上是一个错字。 之前:

onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}

之后:

onBarcodeScanned={scanned ? undefined : handleBarcodeScanned}
© www.soinside.com 2019 - 2024. All rights reserved.