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

Android 12新机型(如S22 Ultra)后台Camera2录制失效求助

三星S22 Ultra等新Android12机型后台相机录制异常原因及分析

你的实现在多数Android12设备正常,但三星S22 Ultra这类机型后台触发CameraDevice.StateCallback#ERROR_CAMERA_DEVICE,核心是三星One UI 4.x(适配Android12)的私有管控规则,和以下几个关键变化有关:

1. 后台相机的UI关联检测收紧

三星在One UI 4.0及后续版本中,新增了后台相机会话的UI绑定检测:

  • 当应用进入后台后,系统会检查相机CaptureRequest的Target列表中是否曾关联过UI类Surface(比如SurfaceView的Surface)
  • 你的代码中前台会添加SurfaceView的Surface,后台仅跳过添加但未重新配置相机会话,系统会判定相机仍和已失效的UI组件关联,直接强制关闭相机设备
  • 三星S10的One UI版本更早,尚未加入该限制,所以后台录制正常

2. Persistent Surface的后台使用限制

你用到的MediaCodec.createPersistentInputSurface()在三星新机型上有兼容性差异:

  • 原生Android12允许后台使用Persistent Surface录制,但三星要求后台相机会话只能绑定纯录制用途的Surface,不能有任何前台UI Surface的配置残留
  • 你的相机会话在前后台共用同一套配置逻辑,后台时虽未添加UI Surface,但会话的历史配置记录被系统识别,触发权限拦截

3. 后台相机会话的生命周期校验增强

三星新机型对后台相机的可用性检测更严格:

  • 应用后台后,SurfaceView的Surface会被销毁(holder变为null),系统会检查相机会话关联的所有Surface是否处于活跃状态
  • 由于之前的会话曾绑定过已失效的UI Surface,系统判定会话无效,抛出ERROR_CAMERA_DEVICE错误关闭相机

可行的修复方向

  • 后台重新初始化相机会话:应用切换到后台时,销毁当前相机会话,重新创建仅绑定recorderSurface的CaptureRequest,彻底清除UI Surface的关联记录
  • 拆分前后台相机配置:不要在同一相机会话中动态添加/移除UI Surface,分别为前台(带SurfaceView)和后台(仅录制Surface)创建独立的相机配置流程
  • 确认后台权限:检查三星机型的应用权限设置,确保开启了“允许后台活动”权限,部分三星机型中该权限和后台相机访问联动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:27:29