Flutter使用torch_light库触发EnableTorchExistentUserException CAMERA_IN_USE (4)错误求助
兄弟,我之前也碰到过类似的相机占用问题,给你几个实用的排查和解决思路,你可以挨个试试:
先排查项目内部的相机资源泄漏
如果你的项目里还用到了camera插件(比如做扫码、拍照功能),大概率是相机控制器没有正确释放资源导致的。一定要在页面销毁或者不用相机的时候,调用dispose()方法释放相机实例:@override void dispose() { _cameraController?.dispose(); super.dispose(); }很多时候就是这个小细节没做好,导致相机一直被占用,torch_light拿不到控制权。
优化你的flash方法,强制确保资源释放
可以在开启闪光灯前先尝试关闭(避免之前的调用残留占用),同时加上状态检查,最后用finally块保证一定会关闭闪光灯,修改后的代码如下:flash() async { try { // 先尝试关闭闪光灯,清理可能的残留占用 await TorchLight.disableTorch(); // 先检查闪光灯是否可用 if (await TorchLight.isTorchAvailable()) { await TorchLight.enableTorch(); await Future.delayed(const Duration(milliseconds: 3000)); await TorchLight.disableTorch(); } } catch (e) { print('Flash Error: $e'); } finally { // 无论成功失败,最后都尝试关闭,防止资源泄漏 try { await TorchLight.disableTorch(); } catch (e) { // 忽略关闭失败的情况 } } }排查系统后台的相机占用进程
有时候即使你关闭了所有前台应用,某些系统服务或者后台进程(比如微信的扫码后台服务、美颜相机的残留进程)还会拿着相机锁。你可以去Android的「设置-应用和服务-权限管理-相机」里查看最近使用相机的应用列表,把可疑的后台进程强制停止,或者直接重启设备试试——我之前就是重启后解决了这个莫名其妙的占用问题。检查权限配置是否完整
确保你的AndroidManifest.xml文件里已经添加了必要的权限:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.flash" android:required="false" />另外,别忘了在Flutter端用动态权限申请插件(比如permission_handler)请求相机权限,确保应用已经获得了相机的使用权限。
尝试升级或回退torch_light库版本
有时候这类问题是库本身的bug导致的,你可以去pub.dev看看torch_light的最新版本,升级后试试;如果最新版本还有问题,回退到之前的稳定版本说不定能解决。
内容来源于stack exchange

