Android 超广角与深度录制:各厂商向第三方开放了什么
AI 参与说明(Agent:Codex):本文依据 Android、Google 与手机厂商的公开文档整理,属于 AI 辅助生成内容,请结合原始资料交叉验证。查询日期为 2026-09-08。运行记录:模型
gpt-6-astra,reasoning effortultra,执行入口 Codex Desktop。
资料与修订记录
修订(2026-09-09,Agent:Grok):结合官方文档与开发者社区反馈,把结论收成可产品化的判断:哪些路径已经公开、哪些必须逐机验收、哪些仍不能按品牌承诺。补充 Camera2 流组合、
DEPTH_IS_EXCLUSIVE、ARCore Raw Depth API、Shared Camera,以及 Honor / OnePlus / realme 的公开证据范围。运行记录:模型grok-4.6,reasoning effortxhigh,执行入口 T3 Code,提供方 xAI;CLI 版本未取得运行记录。
先说结论
面向可分发的第三方 Android 应用,公开资料支持下面三条,而不是一个品牌级开关。
- “小米、vivo、OPPO、华为都不向第三方开放超广角或深度”不成立。 Android Camera2、ARCore Depth API、Xiaomi Camera SDK、OPPO CameraUnit、Huawei Camera Engine 都构成可核验的开放路径。部分机型还被 Google 明确标为支持 Depth API。Android 多摄指南、ARCore 支持设备表
- “任意第三方应用都能在这些品牌上稳定录制超广角视频,并同步导出真硬件 Depth map”也不成立。 超广角视频、逐帧深度、两路同时输出是三个独立问题。公开资料没有把这个组合保证到全品牌、全机型、全 ROM。
- 没有厂商合作时,最可产品化的公共路径是:在目标真机上枚举 Camera2 实际公开的镜头与视频流;若该精确型号支持 ARCore Depth API,再用 ARCore 所选后摄导出 Raw Depth。 这通常是 ARCore 所选 RGB + 视觉估计或融合深度,不是“指定超广角 Physical camera + 原始 ToF”。指定超广角 RGB 与深度同步,必须按 SKU、地区和 ROM 做 session 验收,或走厂商白名单。
系统相机能拍 0.6×,只回答硬件和预装应用是否可用。第三方应用看到的是 Camera HAL 愿意公开的 Logical camera、Physical camera 和流组合。用户授予 CAMERA 权限,也不等于拿到系统相机的私有接口。Android 多摄指南
flowchart TB
q["第三方要交付的能力"] --> a["1. 超广角视频"]
a --> a1["Camera2 枚举、厂商 SDK,或未公开则不承诺"]
a1 --> b["2. 逐帧 Depth map"]
b --> b1["DEPTH16、Raw Depth API,或算法估计另标等级"]
b1 --> c["3. 超广角 RGB + Depth map"]
c --> c1["必须按 SKU 验收 session"]
c1 --> c2["单项支持不能直接相加"]
先分清几个术语
| 英文术语 | 中文名称 | 简要解释 |
|---|---|---|
| Camera2 | Camera2 | Android 提供的底层相机接口,可查询相机并配置输出 |
| Camera HAL | 相机硬件抽象层 | 连接系统相机接口与厂商硬件实现的底层部分 |
| Logical camera | 逻辑相机 | 系统向应用提供的相机入口,可由多颗实体镜头组成 |
| Physical camera | 物理相机 | 对应实际成像设备的镜头 |
| SYSTEM_CAMERA | SYSTEM_CAMERA | 仅特权系统应用可见的相机能力,第三方公开应用看不到 |
| CONTROL_ZOOM_RATIO | CONTROL_ZOOM_RATIO | 用变焦比请求 HAL 切换或裁切镜头,不一定暴露独立 camera ID |
| DEPTH_OUTPUT | DEPTH_OUTPUT | Camera2 的深度输出能力声明,声明后必须支持 DEPTH16 |
| DEPTH16 | DEPTH16 | 每像素编码距离与置信度的深度图格式 |
| DEPTH_IS_EXCLUSIVE | DEPTH_IS_EXCLUSIVE | 深度与彩色能否在同一 CaptureRequest 里同时输出 |
| Depth map | 深度图 | 像素值表达场景距离,不是普通彩色视频 |
| Bokeh | 焦外虚化 | 让背景看起来模糊的成像效果,不等于向应用导出距离数据 |
| ToF | 飞行时间测距 | 利用光传播时间测量距离的一类硬件技术 |
| ARCore Depth API | ARCore Depth API | Google 提供的深度估计能力,需匹配设备和运行服务 |
| Raw Depth API | Raw Depth API | ARCore 提供的带置信度、允许空洞的深度输出 |
| Shared Camera | Shared Camera | 让应用与 ARCore 共享同一 Camera2 相机 |
| CameraUnit | CameraUnit | OPPO 面向 ColorOS 的第三方影像能力接口 |
| Xiaomi Camera SDK | 小米相机引擎 | 小米向第三方开放镜头与算法能力的授权 SDK |
| Camera Engine | Camera Engine | 华为面向 Android / EMUI 的厂商相机 SDK |
| Camera Kit | Camera Kit | HarmonyOS 原生相机接口 |
| AR Engine | AR Engine | 华为增强现实引擎,部分设备可提供深度估计 |
系统相机能拍,不等于第三方能采
Android 官方把 Zoom、用多摄推算深度、以及 Bokeh 列作不同场景。一段背景虚化的视频,不代表应用拿到了可用于测距或空间重建的 Depth map。Multi-camera API
真正需要分别回答的是:
- 手机自带相机是否能拍?
- 第三方应用能否枚举、选择并打开那颗镜头,读取所需数据?
- 应用能否在指定分辨率和帧率下,同时保存超广角视频与 Depth map?
本文讨论后两项。产品页上的“超广角”“人像虚化”“ToF”只是候选信号,不能直接写成第三方录制承诺。
社区反馈在证明什么
开发者社区反复出现同一类现象:系统相机有超广角,Camera2 却只返回前后两颗;有的应用能用 0.6×,有的完全看不到那颗镜头。这些帖子不能替代厂商合同,但它们与 Android 官方说明一致,足以否定“有硬件就等于第三方能用”。
Android 官方已经写明预装相机可以享有普通应用没有的待遇。 Many phone manufacturers develop first-party camera applications that may use private or hidden APIs, or receive special treatment from the driver implementation that other applications do not have access to. Android 9 起虽然不再允许应用使用私有 API,但 Logical camera 具体提供什么,仍完全取决于厂商的 Camera HAL。Android 多摄指南
Android 11 还提供了更硬的隔离:若 HAL 声明 SYSTEM_CAMERA,该相机只对同时持有 android.permission.SYSTEM_CAMERA(system|signature)和普通 CAMERA 权限的进程可见。第三方公开应用无法发现这类相机。AOSP:System cameras
社区里常见的具体形态是:
| 现象 | 公开含义 | 不能据此写成 |
|---|---|---|
| Camera2 只返回前后两颗,系统相机却有 0.6× | HAL 可能只公开 Logical camera,或把超广角藏进 SYSTEM_CAMERA / 白名单 | 这台手机没有超广角硬件 |
把 CONTROL_ZOOM_RATIO 设到 0.6 后画面变广 | HAL 可能在缩放区间自动切到超广角 Physical camera | 应用已经锁定了那颗 Physical camera,并拿到独立视频流 |
| GCam、mcpro24fps 能用,自己的应用不能用 | 部分 ROM 按包名放行辅助镜头;这是社区长期观察到的白名单行为 | 正式产品可以伪装包名去“解锁” |
| 小米 12S Ultra 上第三方走到超广角传感器的裁切,而不是主摄 | 第三方看到的“广角”未必是系统相机正在用的那颗传感器 | 所有小米机型都把主摄对第三方隐藏 |
| vivo 用户反馈第三方调不到长焦 | 与“未找到 vivo 通用超广角/长焦开放表”相符,属于机型级限制的旁证 | OriginOS 全面禁止深度或全部不开放超广角 |
对应的公开讨论包括:Stack Overflow:Camera2 未返回全部镜头、XDA:12S Ultra 第三方未走主传感器、小众软件:Redmi K70 用 0.6× 切超广角、Open Camera #911、GCam FAQ:辅助镜头与包名限制、SensePose:vivo 第三方镜头限制。正式产品不得用 root、隐藏 API 或伪装包名作为交付方案。
因此,社区反馈的工程含义是:先做 capability probe,再决定产品文案。 不要按品牌、营销型号或系统相机 UI 预先承诺。
两条公共路径分别能承诺什么
Camera2:超广角不是一个标准布尔开关
Android 没有跨 OEM 稳定的 isUltraWide()。普通应用应以运行时枚举为准:读取 cameraIdList、LENS_INFO_AVAILABLE_FOCAL_LENGTHS、CONTROL_ZOOM_RATIO 范围、REQUEST_AVAILABLE_CAPABILITIES,以及 Logical camera 的 getPhysicalCameraIds()。若 Physical camera ID 对应用公开,可用 OutputConfiguration.setPhysicalCameraId() 定向请求。OutputConfiguration.setPhysicalCameraId
没返回独立超广角 ID 时,仍有四种可能:
| 情况 | 是否仍可能得到超广角 | 前提 |
|---|---|---|
| 有独立公开 camera ID | 可以,但视频尺寸和帧率要单独查 | 该 ID 的 StreamConfigurationMap 支持目标 encoder surface |
| 只暴露 Logical camera | 可能 | 用 CONTROL_ZOOM_RATIO 请求,并用 LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID 回读实际镜头 |
| Logical camera 返回 Physical camera ID | 可以尝试定向 | API 28+,且该 ID 属于同一 logical group |
| 没有公开 ID,也没有 physical ID | 标准 API 通常不行 | 只有厂商 SDK / 白名单才可能 |
框架对同一 Logical camera 内“一路 logical YUV/RAW 换成两路同类型同尺寸 physical stream”给出的是最低保证,不是任意 4K 视频加 Depth map 的保证。超出保证的组合必须逐机测试。Android 多摄指南、Multiple camera streams
DEPTH_OUTPUT 能证明什么,不能证明什么
Camera2 的 DEPTH_OUTPUT 是很强的采集候选信号。设备一旦声明这项能力,就必须支持 ImageFormat.DEPTH16;由相机产生时,距离单位为毫米,样本还包含置信度。DEPTH_POINT_CLOUD 是可选输出。ImageFormat.DEPTH16、CameraMetadata:DEPTH_OUTPUT
它不能证明:
- 深度一定来自 ToF 或其他专用硬件。
- 深度相机与所选超广角 RGB 共光心、共视场,或厂商已完成几何标定。
- 可以在 30 / 60 fps 持续输出。官方明确提示 depth 输出通常比普通 color capture 慢。
- 支持 video encoder + DEPTH16 + preview 的目标流组合。
- 系统人像/虚化用的内部深度流,等于标准
DEPTH16。
还要检查 DEPTH_IS_EXCLUSIVE。若为 false,同一 CaptureRequest 可以同时 target 深度与彩色;若为 true,应用必须交错发送,而不是同一帧真正同时采集。CameraCharacteristics.DEPTH_IS_EXCLUSIVE
ARCore:最统一的公开深度入口,但不是原始硬件 SDK
ARCore Depth API can estimate depth from camera motion and incorporate supported hardware depth sensors when available; a dedicated ToF sensor is not required. Raw Depth API 同样不要求 ToF,但在存在受支持硬件传感器时会利用它增强结果。ARCore Depth、Raw Depth
| 项目 | Full Depth API | Raw Depth API |
|---|---|---|
| 返回内容 | 平滑/插值后的全图深度估计 | 更高精度、允许空洞的深度 |
| 逐像素置信度 | 不提供独立置信图 | 提供 Y8 confidence,0–255 |
| 是否每帧都有新深度 | 需看 timestamp | 若 timestamp 未更新,可能是重投影旧数据 |
| 是否要求 ToF | 不要求 | 不要求 |
| 更适合 | 遮挡、AR 效果 | 测量、形状检测、3D 重建候选 |
设备表也分层:列入 ARCore 不等于支持 Depth API;只有标明 Supports Depth API 的条目才是深度候选,并仍须运行时调用 isDepthModeSupported()。Google Play 分区要求设备原厂带 Play Store;China 分区通过可单独下载的 Google Play Services for AR 运行,渠道包括小米、华为、OPPO、vivo 应用商店。截至 2026-09-09,Google 称超过 88% 的活跃设备支持 Depth API,这仍不是“任意镜头都能出深度”。ARCore 支持设备表
能否选超广角? ARCore 返回它选择的 cameraId 和 CameraConfig,过滤项主要是 FPS、GPU 纹理尺寸和深度传感器使用方式,而不是让应用指定某个超广角 Physical camera。Camera configurations
能否与独立 Camera2 超广角并行? Shared Camera 允许应用与 ARCore 共享 ARCore 已选的 camera ID,并用 TEMPLATE_RECORD 建立兼容 session;可以追加自己的 ImageReader。官方默认占用一路 640×480 CPU YUV 和一路通常为 1920×1080 的 GPU 流,自定义 surface 会增加负载,必须在目标设备测试。不要另开一个未共享的 Camera2 session 抢后摄。Shared camera
因此:
- 可做:ARCore 所选 RGB + 应用自己的编码 / YUV surface + Raw Depth。
- 不能直接承诺:任意独立超广角 stream + 同一个 ARCore session 的 depth。
- 不应做:一个 Camera2 session 打开超广角,另一个未共享的 ARCore session 争抢后摄。
厂商支持情况速览
下表是公开证据的边界,不是购机推荐,也不是全量兼容清单。“未确认”表示截至 2026-09-09 没有充分的厂商原始资料,不代表设备或合作渠道一定没有该能力。
| 厂商 | 第三方超广角 | 逐帧深度 | 超广角 RGB + 深度 | 关键授权 |
|---|---|---|---|---|
| 小米 / Redmi | Xiaomi Camera SDK 有 UltraWide 镜头类型和视频尺寸查询;标准 Camera2 仍须真机枚举 | Xiaomi 13 等在设备表中支持 Depth API;SDK 本身未见 Depth map 导出承诺 | 未证实可组合 | SDK 需审核、证书、机型白名单;CAMERA 不够 |
| OPPO | CameraUnit 明确列出 Ultra Wide Angle Capture,但是拍照列 | Find X3 Pro 等支持 Depth API;CameraUnit 未见逐帧深度 API | 未证实 | SDK 可公开下载;机型表明显过时 |
| OnePlus | 社区与公开资料都不足以确认 CameraUnit 或超广角 Physical camera 对普通应用开放 | 若精确型号在 ARCore 表中,可走 Raw Depth | 未证实 | 标准 CAMERA;不要把 OPPO 结论外推 |
| realme | 无公开统一厂商 SDK | 部分机型如 realme 14 5G、14 Pro 5G 标明支持 Depth API | 未证实 | CAMERA + Google Play Services for AR |
| vivo / iQOO | 系统相机有超广角录像参数;未见通用第三方超广角视频开放表。社区多次反馈辅助镜头对第三方锁定 | X100、X100 Pro 在 Google Play 与 China 分区均标明支持 Depth API | 未证实 | 标准路径通常只需 CAMERA;ARCore 另需运行服务 |
| 华为 EMUI | Camera Engine 提供录像、HDR、人物虚化等效果能力,未见锁定超广角 Physical camera 的公开保证 | P30 在设备表中支持 Depth API;Camera Engine 页不是原始深度帧接口 | 未证实 | 账号认证、签署 SDK 协议、下载 SDK |
| HarmonyOS 原生 | Camera Kit 有 CAMERA_TYPE_ULTRA_WIDE 和 createVideoOutput | AR Engine 可读取 Depth map,但当前限定主 RGB 运动深度 | 未证实超广角组合 | 这是原生应用接口,不是 Android APK 承诺 |
| 荣耀 | 应按独立产品线记录;Magic 系列多款在 Google Play 表中支持 Depth API | 走 Camera2 / ARCore,未见公开荣耀 Camera SDK | 未证实 | 旧 ARCore 中国区 Huawei | Honor 条目不能外推到当前 MagicOS |
Android 的 Camera Extensions 已知设备表 只说明部分扩展 API 已知兼容,不能证明超广角已枚举、可录像或可输出 DEPTH16。
小米:有授权路线,但不是任意应用打开就能用
Xiaomi Camera SDK 是面向第三方的镜头访问路线,不只是系统相机宣传。更新于 2024-10-18 的相机引擎技术接入文档 §4.8写明:多摄功能需要联系小米相机团队配置白名单;取得权限后,通过 Camera2 获取镜头 ID,再用 getCameraLensType 区分 RearMain、FrontMain 和 UltraWide。能否同时打开多个镜头,还要由设备返回的能力决定。能力介绍页把超广角列为可访问硬件,并提到录制视频时使用广角镜头。能力介绍
更新于 2026-04-30 的 Camera SDK 接入流程把授权写得很具体:启用服务、提交用途、审核、登记应用指纹证书、按机型申请调试权限,验证通过后再开放更多机型。页面建议的初始调试机型包括小米 Civi 5 Pro、15、15 Pro、15 Ultra,以及 Redmi K80、K80 Pro;申请还需提供 Android 版本与系统相机版本。调试示例里出现的已接入功能就是“广角镜头”。
Xiaomi documents an authorized route to additional physical cameras, not unrestricted access for every application. 厂商授权与用户同意 CAMERA 权限是两件事。2024 年技术文档、客户端指南和 2026 年申请流程也不能未经确认就视为同一代 SDK 的完整契约。
| 需要的能力 | 已确认到哪一层 |
|---|---|
| 超广角照片 | 官方有取得 UltraWide 镜头 ID 的授权路线;拍照规格仍取决于该镜头能力 |
| 超广角视频 | 客户端接入指南提供按镜头和模式查询视频尺寸的接口;能力页也把广角用于录像。这证明 SDK 有视频能力,不是每台 HyperOS 设备都已开放 |
| Depth map | Xiaomi 13 / 13 Pro / 13 Ultra 等在 ARCore 设备表中支持 Depth API;不能解释成 Xiaomi Camera SDK 已开放 Depth map |
| 超广角视频+Depth map | 镜头访问、视频功能、ARCore Depth API 分别有资料,不代表同一采集过程能同时工作 |
OPPO / OnePlus / realme:拍照、预览、视频要分列
CameraUnit 产品页介绍了超广角、双摄、视频 HDR、防抖和无缝变焦。因此“ColorOS 不向第三方开放这些相机能力”并不准确。
OPPO 官方示例仓库把能力分在不同列:
- 照片列的
Ultra Wide Angle Capture是第三方超广角拍照的明确证据。 - 仅预览列的
Multi-Camera (Front & Back)不能据此声称已提供双路视频录制。 - 视频列包含
SAT Zoom、防抖和1080P Video,但没有单独列出超广角视频。
仓库设备名单以 Find X2 / X3、Reno 3–6、A93 等较早机型为主,示例状态为 1.0.0,版权年份为 2021。它证明“曾经公开过相关接口”,不能当成 2026 年 ColorOS、OnePlus 或 realme 的全量承诺。
OnePlus 与 OPPO 生态有联系,不等于 CameraUnit、签名策略和 HAL 暴露一致。2024 年 Stack Overflow 上有开发者反馈 OnePlus 9 / Pro 既不列出超广角,CONTROL_ZOOM_RATIO 也不能切到超广角,并怀疑存在应用白名单。Using Camera2 with physical lenses
realme 更适合走 Camera2 / ARCore。当前 ARCore 表将 realme 14 5G、14 Pro 5G 等标为支持 Depth API;这只证明 ARCore 深度候选,不证明超广角视频。ARCore 支持设备表
vivo / iQOO:深度有正例,超广角视频开放表仍缺
vivo 官方的 X100s 系列常见问题写明 X100s 具备超广角相机,并支持 4K、60 fps 视频。它回答的是这款手机的影像能力,不是第三方接口开放范围,也不能移用到 X100 或整个 X 系列。
深度则有明确的第三方正例。Google 设备表的 Google Play 分区和 Android(China)分区都把 vivo X100、X100 Pro 标为支持 Depth API。China 分区说明这些设备通过 Google Play Services for AR 运行,可从 V-Appstore 等渠道单独下载。因此,“中国版本没有预装 Google Play Store”和“不能使用 ARCore 深度”不是一回事,但也不能省掉所需运行服务。ARCore 支持设备表
社区侧,2026 年的 vivo 第三方相机评述仍把“辅助镜头不对普通应用开放”当作平台限制,而不是某个 App 的 bug。这与“未找到 vivo 通用 Camera SDK”一致,不能外推成 OriginOS 全面禁止深度。
华为与荣耀:先分开 Android APK 和 HarmonyOS 原生
Android / EMUI:Camera Engine 是效果能力路径
Camera Engine 下载页给出 Android 开发环境说明:Kirin 980 或更新芯片、EMUI 10.0 或更新系统,并列明 Mate 20 / 30、P30、Honor V20 等机型。接入包含开发者验证、签署协议与下载 SDK。页面承诺的是大光圈、人像、HDR、视频 HDR、视频人物虚化、超级夜景等系统相机效果,不是逐帧 Depth map 或锁定超广角 Physical camera。
P30 在 ARCore 设备表中支持 Depth API;P30 Pro 在 China 分区也有 Depth API 标记。这条路径依赖 AR 运行服务,不能移用于 HarmonyOS 原生应用。
HarmonyOS 原生:有超广角类型,深度当前限定主 RGB
Camera Kit 的 5.1.1(19) Beta1 API 变更表包含 CAMERA_TYPE_ULTRA_WIDE、getCameraDevice 和 createVideoOutput。该页更新于 2026-09-04;相关条目描述的是增加原子化服务支持,不是宣称超广角能力首次出现。
获取深度图(C/C++)指南从 5.0.5(17) 起为部分 Phone / Tablet 提供深度估计,设备需具备 ARENGINE_FEATURE_TYPE_DEPTH。这是应用能够读取深度数据的原生能力,不只是 Bokeh。AR Engine API 参考对自动深度模式的限制更具体:当前只支持由主 RGB 相机获得的运动深度数据。 Native depth support does not imply ultra-wide depth support.
这些接口不能作为 Android APK 的兼容性承诺。Camera Engine 页写“兼容 EMUI 10.0、支持迁移到 HarmonyOS”,描述的是迁移方向,不是原生 Camera Kit 可被任意 APK 调用。
荣耀
荣耀应独立于华为记录。Google Play 分区已将 HONOR Magic4 Pro、Magic5、Magic7 Lite、Magic8 Pro 等多款标为支持 Depth API;这仍只是 ARCore 路径。本轮没有发现荣耀面向普通第三方的公开 Camera SDK,足以证明超广角视频或逐帧深度输出。旧中国区清单里的 Huawei | Honor 是历史归类,不能推断当前 MagicOS 产品线。
产品上可以怎么做
建议把范围定义为“能力驱动的 Android RGB / 深度采集”,而不是“全品牌超广角硬件深度采集”。
| 等级 | 实际能力 | 对外可以怎么说 |
|---|---|---|
| A | 指定超广角 Physical camera 的 Camera2 视频成功 | 该 SKU 支持超广角视频 |
| B | Logical camera 在目标 zoom 下切到超广角,且 ACTIVE_PHYSICAL_ID 可证明 | 有条件的超广角视频,须记录切镜证据 |
| C | 主后摄 Camera2 视频 + DEPTH16,且 DEPTH_IS_EXCLUSIVE == false | 可导出每帧深度;须标明单位、置信度和是否同帧 |
| D | ARCore 所选相机 RGB + Raw Depth + confidence | 可导出深度估计/测距数据;须标明来源、新帧比例,不是指定超广角 |
| E | 普通 RGB + 单目算法深度 | 只能称算法估计深度,不得与 ToF / DEPTH16 / Raw Depth 混称 |
决策门槛:
- 允许超广角视频:只有实测确认 Physical camera 或 active physical ID、目标编码规格和持续录制稳定性。
- 允许 RGB + Camera2 depth:只有目标 session 稳定成功,或业务接受交错采样并明确标为非同帧。
- 允许 ARCore Raw Depth:只在 Depth mode runtime 成功、新深度帧比例和置信度通过场景验收时。
- 允许超广角 + depth:作为独立 feature flag,必须有每型号、每 ROM、每地区的组合试验报告。
- 不满足时:退化到主摄 RGB 或算法估计深度,并在数据模型和产品语义上分层。
可申请厂商 SDK 时,不要只问“是否开放深度”。至少问清:Android APK 是否可调用、调试包与正式包授权是否一致、大陆 ROM 与海外 ROM 是否分别支持、能否固定超广角 Physical camera、输出是 JPEG / YUV / encoder 还是完整连续视频、深度格式、单位、坐标系、置信度、timestamp、内外参,以及“主摄 RGB + depth”和“超广角 RGB + depth”是否分别为受支持 stream combination。
最小真机验证
不要先根据宣传页筛设备。先在目标 ROM / 地区版本上跑只读 probe,再决定进入采集试验。兼容键至少包含 manufacturer + model + device + build fingerprint + region + ARCore 版本,不要只用“小米 15”这种营销名。
分四个阶段,后一阶段不能被前一阶段替代:
- 文档声明支持:宣传页、ARCore 表、厂商 SDK 机型清单。只标记为候选。
- 能力枚举支持:所有 camera ID 的焦距、physical ID、视频尺寸、
DEPTH_OUTPUT、DEPTH_IS_EXCLUSIVE、ARCoreisDepthModeSupported()与 selectedcameraId。 - 实际录制成功:超广角 preview、超广角 encoder 视频、主摄 RGB + DEPTH16、ARCore RGB + Raw Depth、目标组合“超广角 RGB + 深度”。每项至少覆盖短录、长录和重复启停。
- 产物质量通过验收:确认实际镜头、PTS /
SENSOR_TIMESTAMP/ depth timestamp 的偏移分布、几何对齐、温升和丢帧。ARCore 必须把“新深度”和“重投影深度”分开计数。
验证超广角时,不能只看 UI 的 0.6x。应记录 LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID、对应 Physical camera 的焦距,以及输出是否绑定了该 physical ID。
最后如何回答“这家厂商到底支不支持”
有效结论必须带上型号、地区与系统、接口及授权条件、照片或视频类别、深度来源、能否同时输出。按品牌可以这样说:
- 小米:有厂商开放路线,但有准入和机型条件。 不能把硬件存在、系统相机可用或用户允许相机权限,当成任意第三方应用已经获得相同能力。
- OPPO:有第三方特殊相机能力,但照片、预览、视频的支持类别不同。 超广角照片支持不能直接证明超广角视频,更不能证明同时导出深度。OnePlus / realme 不能自动复用这份结论。
- vivo:已有明确的 Depth API 支持机型,不能说整个品牌不支持深度。 第三方超广角视频的完整开放范围,现有公开资料仍不足以确认。
- 华为:有厂商相机及深度能力路径,但必须分开 Android / EMUI 与 HarmonyOS 原生。 后者的接口定义不是 Android 应用的兼容性承诺。荣耀按独立产品线,优先走 Camera2 / ARCore。
对四家品牌所有设备的“超广角视频+深度同步导出”,上述公开资料没有给出统一保证。这不是“已经证明全部不支持”,而是不能把若干单项支持扩写成不存在的全品牌承诺。社区反馈进一步说明:同一品牌内部,镜头对第三方的可见性也会随机型、ROM 和包名变化。所以可交付的产品结论只能写在 capability snapshot 上,不能写在品牌名上。