You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo 51中expo-camera无法扫描二维码问题求助

Expo 51 Android端expo-camera无法扫描二维码的解决方法

针对你在Expo 51 Android项目中使用expo-camera组件无法扫描条码/二维码的问题,以下是几个可行的排查和解决步骤:

1. 显式启用条码扫描功能

在Expo 51的CameraView中,部分Android设备需要显式开启barcodeScannerEnabled属性才能激活扫描逻辑,即使已设置onBarCodeScanned回调。修改你的CameraView组件:

<CameraView
    barcodeScannerEnabled={true} // 添加该属性显式开启扫描
    barcodeScannerSettings={{
        barcodeTypes: [
            'aztec',
            'ean13',
            'ean8',
            'qr',
            'pdf417',
            'upc_e',
            'datamatrix',
            'code39',
            'code93',
            'itf14',
            'codabar',
            'code128',
            'upc_a',
        ],
    }}
    onBarCodeScanned={scanned ? undefined : handleBarCodeScanned}
    style={StyleSheet.absoluteFillObject}
/>

2. 确认权限配置完整性

在项目的app.json或app.config.js中显式声明相机权限,避免Expo构建时的权限遗漏:

{
  "expo": {
    "android": {
      "permissions": ["CAMERA"]
    }
  }
}

3. 验证回调函数触发状态

在handleBarCodeScanned中添加日志输出,确认扫描回调是否被触发:

const handleBarCodeScanned = ({ data, type }) => {
    console.log('扫描到条码信息:', type, data); // 打印日志验证触发情况
    if (data) {
        setScanned(true);
        setResult(data);
    }
};

如果日志无输出,说明扫描逻辑未被激活,需检查CameraView初始化或设备相机兼容性。

4. 锁定依赖版本匹配Expo SDK

确保expo-camera版本与Expo 51完全兼容,修改依赖配置为:

"expo-camera": "~15.0.14"

使用~符号可避免安装不兼容的小版本更新。

5. 清理缓存并重新构建

Expo版本升级后可能存在缓存问题,执行以下命令清理并重新构建项目:

npx expo prebuild --clean
npx expo run:android

6. 测试设备兼容性

部分Android设备的相机硬件可能与Expo 51的相机模块存在兼容性差异,可尝试在不同设备或模拟器上测试,确认是否为设备特定问题。

内容的提问来源于stack exchange,提问作者gchariton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:53:16