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

如何在ARCore会话中禁用多摄像头支持?解决Pixel 8 Pro微距自动切换问题

在ARCore中强制锁定广角摄像头、禁用微距切换的解决方案

核心问题分析

你调用的setStereoCameraUsage是针对立体深度摄像头的控制,而Pixel 8 Pro的微距切换属于广角摄像头模组的近距离对焦能力触发,并非多摄像头硬件切换,因此该API无法解决问题。需要从CameraConfig筛选、对焦模式锁定两个维度入手。


1. 筛选仅支持广角的CameraConfig

遍历ARCore支持的所有摄像头配置,排除带有微距、变焦特性的选项,强制选择纯广角配置:

Session session = new Session(context);
List<CameraConfig> allConfigs = session.getSupportedCameraConfigs();
CameraConfig targetConfig = null;

for (CameraConfig config : allConfigs) {
    // 仅考虑后置摄像头
    if (config.getCameraLensFacing() == CameraConfig.LensFacing.BACK) {
        // 排除支持微距或变焦的配置
        boolean hasMacro = config.getFeatures().contains(CameraConfig.Feature.MACRO);
        boolean hasZoom = config.getFeatures().contains(CameraConfig.Feature.ZOOM);
        if (!hasMacro && !hasZoom) {
            targetConfig = config;
            break;
        }
    }
}

// 应用筛选后的配置
if (targetConfig != null) {
    session.setCameraConfig(targetConfig);
}

2. 锁定对焦模式,禁用自动微距触发

即使选定广角配置,系统仍可能因近距离自动对焦触发微距模式,需手动锁定对焦参数:

// 在ARCore会话启动后调用
CameraCaptureSession captureSession = session.getCameraCaptureSession();
if (captureSession != null && captureSession.getDevice() != null) {
    try {
        CaptureRequest.Builder requestBuilder = captureSession.getDevice()
                .createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
        
        // 关闭自动对焦,固定焦距
        requestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF);
        // 设置固定对焦距离(0.0f为无限远,可根据你的使用场景调整为合适的近距离值)
        requestBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, 0.0f);
        
        // 应用配置
        captureSession.setRepeatingRequest(requestBuilder.build(), null, null);
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

3. 验证配置生效

在会话启动后,检查当前摄像头特性是否符合预期:

CameraConfig activeConfig = session.getCameraConfig();
Log.d("ARCoreCamera", "当前启用的摄像头特性:" + activeConfig.getFeatures());

若日志输出中无MACRO和ZOOM特性,说明配置已生效。


额外注意事项

  • 确保使用ARCore 1.36及以上版本,旧版本对CameraConfig特性的支持不完善。
  • 需在AndroidManifest中声明android.hardware.camera.ar特性,并已获取CAMERA权限。
  • Pixel 8 Pro的微距是广角摄像头的硬件能力,仅靠ARCore配置无法完全屏蔽硬件层面的触发,锁定对焦是关键补充手段。

内容的提问来源于stack exchange,提问作者Marta Opalińska

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:22:49