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

CameraX报TimeoutException:无法在5000ms内完成surfaceList,预览黑屏

CameraX 1.1.0 预览黑屏 + TimeoutException 问题

我正在使用CameraX 1.1.0版本,跟随Android官方教程开发。初始日志显示正常,但随后触发了TimeoutException,相机预览始终处于黑屏状态。

测试设备:Pixel 4 API 30模拟器、三星A52s真机,二者均出现该问题。代码与教程内容一致,但使用Java语言编写。

日志信息:

(omitted)
D/CameraStateRegistry: Recalculating open cameras:
Camera                                       State                 
-------------------------------------------------------------------
Camera@f35a3d7[id=0]                         OPEN                   
Camera@e46a673[id=1]                         UNKNOWN               
-------------------------------------------------------------------
Open count: 1 (Max allowed: 1)
D/CameraStateMachine: New public camera state CameraState{type=OPEN, error=null} from OPEN and null
D/CameraStateMachine: Publishing new public camera state CameraState{type=OPEN, error=null}
D/UseCaseAttachState: All use case: [androidx.camera.core.Preview-c7727ae2-d02c-4135-956c-a76c24deb02d40667318] for camera: 0
D/UseCaseAttachState: Active and attached use case: [androidx.camera.core.Preview-c7727ae2-d02c-4135-956c-a76c24deb02d40667318] for camera: 0
D/Camera2CameraImpl: {Camera@f35a3d7[id=0]} Transitioning camera internal state: OPENED --> OPENED
D/CameraStateMachine: New public camera state CameraState{type=OPEN, error=StateError{code=4, cause=java.util.concurrent.TimeoutException: Cannot complete surfaceList within 5000}} from OPEN and StateError{code=4, cause=java.util.concurrent.TimeoutException: Cannot complete surfaceList within 5000}
D/CameraStateMachine: Publishing new public camera state CameraState{type=OPEN, error=StateError{code=4, cause=java.util.concurrent.TimeoutException: Cannot complete surfaceList within 5000}}
解决方案建议

针对这个TimeoutException: Cannot complete surfaceList within 5000导致的预览黑屏问题,给你几个排查方向:

  • 检查PreviewView初始化时机
    确保在ProcessCameraProvider初始化完成后再绑定Preview用例,不要在布局未完全加载时执行绑定操作。比如不要在onCreate直接调用绑定逻辑,而是放在onViewCreated或者PreviewView的post方法里,保证Surface已准备就绪。

  • 确认权限申请流程
    虽然日志显示相机已打开,但仍需确认是否在运行时正确申请了CAMERA权限且用户已授权。部分设备在权限未完全确认时会出现Surface创建超时的情况。

  • 升级CameraX版本
    CameraX 1.1.0存在一些已知的Surface相关bug,建议升级到1.2.0及以上稳定版本,新版本修复了不少超时和兼容性问题。

  • 调整Preview用例配置
    避免给Preview设置设备不支持的极端分辨率,尝试使用setTargetAspectRatio让CameraX自动适配最优尺寸:

    Preview preview = new Preview.Builder()
        .setTargetAspectRatio(AspectRatio.RATIO_16_9)
        .build();
    
  • 模拟器特殊排查
    Pixel 4 API 30模拟器出现问题时,尝试开启摄像头模拟功能,或者切换到API 31及以上版本的模拟器,旧版本模拟器对CameraX的Surface支持存在缺陷。

  • 检查生命周期绑定
    确保将CameraProvider与Activity/Fragment的生命周期正确绑定,避免生命周期不一致导致Surface被提前回收:

    cameraProvider.bindToLifecycle(this, cameraSelector, preview);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:54:21