Highlight
下一代 CarPlay 为车辆所有屏幕提供内容,通过四层 UI 架构(Overlay、Remote、Local、Punch-through)和专用合成器实现 iPhone 与车机系统的无缝集成。
核心内容
自 CarPlay 发布以来,汽车发生了巨大变化——屏幕更大、数量更多、功能更丰富。传统 CarPlay 只需要一个 iPhone 视频流输出到车机系统。但下一代 CarPlay 的目标是为所有驾驶员屏幕提供内容:仪表盘、中控、副驾屏等,形成完全集成的界面。
架构上的最大变化是从单视频流扩展到多流。下一代 CarPlay 需要为车内每个屏幕各提供一个独立的 iPhone 视频流。这看似只是数量增加,实则带来了新的技术挑战:如何让本地渲染的车机 UI 和远程渲染的 iPhone UI 在视觉上融为一体?
Apple 的解决方案是将 UI 拆分为四层。Overlay UI 是最顶层,包含车辆特定的警告灯和关键指示器,完全由车机系统渲染。Remote UI 是 iPhone 提供的丰富内容层,地图、音频、胎压、行程信息都在这里。Local UI 是车机本地渲染的驾驶相关仪表和指示器,特点是低延迟、抗 Wi-Fi 干扰、快速启动。Punch-through UI 允许将车辆特有的 UI(如驾驶辅助、外部摄像头)无缝嵌入体验中。
这四层由一个专用合成器(Compositor)统一处理,它接收 iPhone 视频流、本地渲染 UI 和 Punch-through UI,用 OpenGL 合成为统一输出帧,再交给系统合成器显示到每个屏幕上。最关键的技术是帧级同步——iPhone 通过 UI sync 通道精心编排 UI 元素在屏幕上的移动,无论渲染源是哪里,都能在 60fps 下保持连贯。
详细内容
下一代 CarPlay 的架构建立在现有 CarPlay 基础之上,但增加了大量新能力。它是一个无线体验,支持增强的 Siri、缓冲媒体播放和 HEVC 视频流。最重要的架构变化是 UI 渲染和合成方式。
四层 UI 架构
(03:03)UI 被拆分为四层,每层都有特定用途:
Overlay UI 是最顶层,包含车辆特定的警告灯(telltales)和关键指示器。这些元素可能重新设计或重新定位以匹配新体验,但完全由车机系统渲染。
Remote UI 是 iPhone 提供的丰富内容层。地图和音频应用在这里运行,还包括胎压、行程信息等功能。每个屏幕需要一个独立的 iPhone 视频流。
Local UI 是车机本地渲染的驾驶相关仪表。它提供低延迟、高频率响应,不受 Wi-Fi 干响,启动极快。(05:03)Local UI 基于一个 OpenGL 渲染器,配合从 iPhone 传输的资源包(包含图像和行为脚本)。资源包对每辆车是特定的,配对时传输,使用前车辆会验证其真实性。
Punch-through UI 允许将车辆特有功能(如驾驶辅助、外部摄像头)无缝集成到体验中。这些像素完全由车辆渲染,但通过精心设计的过渡动画与整体体验融合。
合成器架构
(08:02)这三层(Remote、Local、Punch-through)由一个专用合成器处理,它使用 OpenGL 为每个屏幕提供统一的输出帧。Overlay UI 直接进入车辆合成器,跳过这个专用合成器。
帧级同步
(08:51)为了实现流畅的布局过渡和动画,系统使用帧级同步。每个 iPhone 视频帧都带有显示时间戳。下一代 CarPlay 增加了一个名为 UI sync 的专用低延迟通道,从 iPhone 连接到每个显示屏。行为脚本解释这些信息,逐帧匹配 Local UI、Punch-through UI 和 Remote UI,达到 60fps 或更高。
车辆状态协议
(11:03)下一代 CarPlay 依赖车辆系统始终提供最新的状态信息。根据信息渲染位置,有多个接口可用。仪表盘有专用接口,中控 Local UI 有类似接口,Remote UI 则通过扩展的 Communication plug-in 支持。这种设计还保护了隐私——数据只在需要的地方使用,许多情况下不会离开车辆。
(18:29)Apple 提供了丰富的车辆状态类别供开发者使用:
Audio settings
Charging
Climate control
Closures
Drive state
Driver assistance
Electric engine
Fuel
High voltage battery
Internal combustion engine
Media
Notification history
Notifications
Now playing information
Paired devices
Request content
Seat
Tire
Trip computer
UI control
Units
Vehicle motion
Vehicle resources
关键点:
- 这些类别覆盖了车辆的所有主要状态信息
- 数据通过车辆状态协议传输,UI 直接反映车辆状态
- 高频更新(如速度表)需要持续提供精确值
- UI 不做数学运算,直接显示车辆发送的值
自定义和配置
(21:55)车厂可以通过 Automaker App 在 iPhone 上运行自定义 UI,利用 iOS 的完整能力。自定义设置通过 Automaker Settings API 实现,完全自定义标签、图标、功能和结构。ProminenceInfo API 可以将重要设置提升到顶层。深度链接设置可以引导用户到车厂自己的 iOS App。
(25:08)自定义通知也完全灵活——标签、图标、按钮都可定制。开发者决定显示内容、时机和移除时机,可选择本地渲染或远程渲染。
核心启发
-
分层架构设计是复杂系统的关键。下一代 CarPlay 将 UI 分为四层,每层职责清晰:Overlay 安全关键由车机控制,Remote 内容丰富由 iPhone 提供, Local 低延迟由本地渲染,Punch-through 展现车辆特色。这种分层让不同渲染源能无缝协作。
-
帧级同步实现跨渲染源的流畅动画。无论像素来自 iPhone 还是车机,通过 UI sync 通道和 presentation timestamp,系统能在 60fps 下保持所有层同步。这对实时 UI 系统是重要参考。
-
资源包验证机制平衡灵活性和安全。OpenGL 渲染器配合可更新的资源包,让 UI 能随时间进化,而验证机制确保只有授权资源才能执行。这种设计让车厂能持续改进体验,同时保持系统安全。
-
状态驱动 UI 让显示和逻辑解耦。车辆状态协议作为单一数据源,UI 只是状态的反映。这种单向数据流让 UI 简单可预测——“UI simply shows what you provide”(17:07)。
-
隐私保护内嵌于架构之中。数据只在需要的地方使用,许多情况下不离开车辆。这种隐私优先设计是架构的基础层,从车辆状态接口的分发逻辑就决定了数据最小化原则。
关联 Session
- Say hello to the next generation of CarPlay design system — 探索下一代 CarPlay 设计系统,了解仪表盘、布局、动态内容如何深度定制
- Optimize CarPlay for vehicle systems — 学习如何将 CarPlay 集成到现代车辆系统,为下一代 CarPlay 做准备
- Q&A: CarPlay — 与 Apple 工程师进行 2 小时文字问答,获取代码级指导
- Meet AccessorySetupKit — 了解如何通过 AccessorySetupKit 提升配件配对体验,与车载系统集成相关
评论
GitHub Issues · utterances