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

如何判断物理镜头是否支持REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR?

解决Pixel手机物理镜头手动对焦能力判断问题

要判断单个物理镜头是否支持REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR,你需要直接获取物理镜头自身的CameraCharacteristics——逻辑相机的特性会合并所有组成镜头的能力,所以直接查询会永远返回true。具体操作步骤如下:

  • 从逻辑相机特性中提取物理镜头ID列表:
    通过CameraCharacteristics.LENS_INFO_PHYSICAL_CAMERA_IDS可以获取当前逻辑相机包含的所有物理镜头ID数组。

  • 遍历每个物理镜头ID,单独获取其特性并检查能力:
    使用CameraManager.getCameraCharacteristics(physicalCameraId)获取单个物理镜头的专属特性,再检查该特性中的手动对焦支持情况。

代码示例

val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val logicalCameraId = "你的后置逻辑相机ID" // 例如"0",需根据实际场景获取

// 获取逻辑相机的特性
val logicalCharacteristics = cameraManager.getCameraCharacteristics(logicalCameraId)
// 提取所有物理镜头的ID
val physicalCameraIds = logicalCharacteristics.get(CameraCharacteristics.LENS_INFO_PHYSICAL_CAMERA_IDS)

physicalCameraIds?.forEach { physicalId ->
    // 获取单个物理镜头的特性
    val physicalCharacteristics = cameraManager.getCameraCharacteristics(physicalId)
    // 判断该物理镜头是否支持手动传感器控制
    val supportsManualSensor = physicalCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES)
        ?.contains(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR) == true
    
    if (!supportsManualSensor) {
        // 此物理镜头即为不支持手动对焦的目标镜头
        println("物理镜头 $physicalId 不支持手动传感器控制")
    }
}

注意事项

  • 该方案要求Android 8.0(API Level 26)及以上版本,因为LENS_INFO_PHYSICAL_CAMERA_IDS是API 26新增的特性。
  • 确保已申请CAMERA权限,否则无法访问相机特性信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:27:06