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 回复
红米note7,也有这样问题
同样问题
同样遇到这个问题,请问有找到解决方法没有?这边发现黑屏后结束进程后台,再次进入又能正常扫码了
你好,解决了吗?
有解决办法了吗
回复 LPFFFF: app模块配置打开 还有app权限配置都要打开
我也遇到了
要打开app权限
这是一个典型的相机资源未正确释放的问题。在连续多次调用uni.scanCode时,相机资源可能没有及时释放,导致系统相机服务崩溃。
建议检查扫码调用的时机和频率,确保在每次扫码完成后才进行下一次调用。可以尝试以下解决方案:
- 在调用
uni.scanCode前添加延迟,避免连续快速调用 - 在扫码成功/失败回调中设置状态锁,防止重复调用
- 使用
setTimeout控制扫码间隔时间(建议至少500ms) - 在页面
onHide或onUnload生命周期中主动停止扫码
代码示例:
let isScanning = false
function scanCode() {
if (isScanning) return
isScanning = true
uni.scanCode({
success: (res) => {
// 处理扫码结果
},
fail: (err) => {
console.log('扫码失败', err)
},
complete: () => {
setTimeout(() => {
isScanning = false
}, 500)
}
})
}


