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

Android Camera2 API 如何设置缩小变焦切换至超广角镜头

你设置CONTROL_ZOOM_RATIO为0.5f无响应的核心原因是你当前打开的主广角相机的CONTROL_ZOOM_RATIO_RANGE仅支持[1.0, 10.0]区间,小于1的参数会被相机框架直接忽略,2.0f为放大变焦是符合参数预期的正常表现。

实现超广角效果的正确逻辑

Android平台多镜头设备的每个物理镜头对应独立的Camera ID,你要切换超广角视野不能通过主广角镜头缩小变焦实现,必须先找到超广角镜头对应的Camera ID并打开使用,步骤如下:

  • 枚举设备所有可用的Camera ID,逐个查询CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS参数,焦距数值越小的镜头视野越广,找到数值远小于主广角的ID即为超广角镜头。
  • 打开超广角镜头后,其默认的1.0倍变焦就是原生超广角视野,无需额外设置小于1的变焦比。

SCALER_CROP_REGION参数计算规则

如果你需要在单个镜头下通过SCALER_CROP_REGION实现数字变焦,计算逻辑为:

  1. 先获取当前镜头的SENSOR_INFO_ACTIVE_ARRAY_SIZE,你当前查询到的主广角参数为Rect(0, 0, 4000, 3000),这是该镜头可输出的最大sensor区域。
  2. 变焦比zoom≥1时,裁剪区域的宽高分别为:
    cropWidth = activeArray.width() / zoom
    cropHeight = activeArray.height() / zoom
    
  3. 裁剪区域需要居中,左上角坐标计算方式:
    left = (activeArray.width() - cropWidth) / 2
    top = (activeArray.height() - cropHeight) / 2
    
  4. 最终给SCALER_CROP_REGION传入Rect(left, top, left + cropWidth, top + cropHeight)即可,效果和同数值的CONTROL_ZOOM_RATIO一致。

效果参考

  • 广角效果:
    广角效果
  • 超广角效果:
    超广角效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:57:03