uni-app中uni.scanCode扫码功能出现黑屏问题

uni-app中uni.scanCode扫码功能出现黑屏问题

操作步骤:

  • 连续多次扫码

预期结果:

  • 正常扫码

实际结果:

  • 相机死机黑屏

bug描述:

  • 使用uni.scanCode连续多次扫码之后,部分安卓手机相机直接黑屏,退出程序无用,只能重启手机。

| 开发环境           | 版本号 | 项目创建方式 |
|------------------|------|-----------|
| PC开发环境操作系统 | Windows |       |
| PC开发环境操作系统版本号 | 10 |       |
| 手机系统           | Android |       |
| 手机系统版本号     | Android 10 |       |
| 手机厂商           | 一加 |       |
| 手机机型           | 6 |       |
| 页面类型           | vue |       |
| HBuilderX类型      | 正式 |       |
| HBuilderX版本号    | 3.1.22 |       |
| 打包方式           | 云端 |       |
| 项目创建方式       | HBuilderX |       |

更多关于uni-app中uni.scanCode扫码功能出现黑屏问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

小米9也有同样的问题

更多关于uni-app中uni.scanCode扫码功能出现黑屏问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


红米note7,也有这样问题

同样问题

先提前判断开启一下相机权限,https://ext.dcloud.net.cn/plugin?id=594

同样遇到这个问题,请问有找到解决方法没有?这边发现黑屏后结束进程后台,再次进入又能正常扫码了

你好,解决了吗?

有解决办法了吗

回复 LPFFFF: app模块配置打开 还有app权限配置都要打开

我也遇到了

要打开app权限

这是一个典型的相机资源未正确释放的问题。在连续多次调用uni.scanCode时,相机资源可能没有及时释放,导致系统相机服务崩溃。

建议检查扫码调用的时机和频率,确保在每次扫码完成后才进行下一次调用。可以尝试以下解决方案:

  1. 在调用uni.scanCode前添加延迟,避免连续快速调用
  2. 在扫码成功/失败回调中设置状态锁,防止重复调用
  3. 使用setTimeout控制扫码间隔时间(建议至少500ms)
  4. 在页面onHideonUnload生命周期中主动停止扫码

代码示例:

let isScanning = false

function scanCode() {
    if (isScanning) return
    
    isScanning = true
    uni.scanCode({
        success: (res) => {
            // 处理扫码结果
        },
        fail: (err) => {
            console.log('扫码失败', err)
        },
        complete: () => {
            setTimeout(() => {
                isScanning = false
            }, 500)
        }
    })
}
回到顶部