POCO X8 Pro(Android 16)Camera2 API逻辑相机调用物理相机异常问题
POCO X8 Pro(Android 16/HyperOS)Camera2 API逻辑多相机问题
设备相机配置示例
CameraManager.getCameraIdList()返回:
["0", "1"]
对于逻辑相机"0",调用CameraCharacteristics.getPhysicalCameraIds()返回:
["2", "3"]
预期行为(依据Android Camera2文档)
由于物理相机ID"2"和"3"未出现在CameraManager.getCameraIdList()的返回结果中,它们应仅作为逻辑相机"0"的一部分被使用。正确用法如下:
cameraManager.openCamera("0", stateCallback, handler)
创建会话时:
val outputs = mutableListOf<OutputConfiguration>() outputs.add( OutputConfiguration(previewSurface).apply { setPhysicalCameraId("2") } ) val config = SessionConfiguration( SessionConfiguration.SESSION_REGULAR, outputs, executor, stateCallback ) cameraDevice.createCaptureSession(config)
POCO X8 Pro实际行为
会话创建成功,CameraCaptureSession.StateCallback.onConfigured()被调用,但紧接着CameraDevice.StateCallback.onError()触发,错误码为:
ERROR_CAMERA_DEVICE
随后相机关闭。
意外行为
直接打开物理相机ID"2":
cameraManager.openCamera("2", stateCallback, handler)
相机可正常工作,尽管"2"并未出现在CameraManager.getCameraIdList()的返回结果中。
问题总结
该行为与Android Camera2文档不符。未在getCameraIdList()中列出的物理相机ID,通常仅能通过逻辑相机的setPhysicalCameraId()方法访问,但在POCO X8 Pro上:
- 官方逻辑相机+
setPhysicalCameraId()流程触发ERROR_CAMERA_DEVICE错误 - 直接调用
openCamera("2")可正常工作
给小米工作人员的排查建议
请排查POCO X8 Pro是否存在Camera HAL/Camera2元数据问题,并确认物理相机ID应:
- 若支持直接打开,则应被包含在
getCameraIdList()结果中;或 - 通过文档规定的逻辑相机+
setPhysicalCameraId()方法可正常调用。
附:其他小米设备(如Xiaomi 15T Pro)可能也受此影响。
设备信息
- 设备名称:POCO X8 Pro
- 操作系统:Xiaomi HyperOS 3.0.5.0
- POCO专属系统版本:3.0.5.0.WPJEUXM
- Android版本:16 (BP2A.250605.031.A3)
- Android安全更新:2026-03-01
内容的提问来源于stack exchange,提问作者user924
相关产品推荐
相关产品推荐

