Light 灯光模块 · 知识库

本知识库由 4 个 Explore Agent 并行调研 + 源码对抗验证产出(2026-07-12),4 个 Agent 全部成功。 Light 是 5 个车控模块中最复杂的(氛围灯系统极其精巧),故氛围灯单独成篇(03)。

模块定位

Light 模块(settingsPage/micarLightSettings,包名 com.android.micar.settings.light)是「灯光」设置页,入口 LightsSettingsFragment(继承 AudioControlSettingsFragment)。

两大功能域

  • 外部灯miauto.lights 包):大灯模式/雾灯/位置灯/远光自适应/转向灯自动取消/迎宾灯/阅读灯/按键背光
  • 氛围灯(跨 miauto.lights + miauto.display + micar.settings.display 三包,历史命名混乱):总开关/模式/颜色/主题/双拼色/亮度/呼吸/律动/迎宾联动/夜间减弱/照脚灯

核心特色:右栏车模灯光可视化LightsRightFragment 继承 BaseScrollModelRightFragment)——左滚联动右栏换图 + 氛围灯颜色遮罩 + 呼吸/Lottie 律动动画。

关键认知(对抗验证纠正)

常见误解源码真相
车型差异靠 sourceSet 分目录✅ 本模块无 dcddif/xcddif/global 目录,差异完全靠运行时配置字(同 VehicleBody)
「迎宾灯」是一个功能三态歧义WELCOME_LIGHT(外灯 Tab/昆仑 Switch) + WELCOME_LIGHT_SWITCH(氛围灯迎宾联动),分属两组
音乐律动 app 监听音频app 端无 AudioManager/MediaController,车端硬件做音频分析,上报 MUSIC_RHYTHM_STATE + ATMOSPHERE_COLOR_IN_RHYTHM(专辑封面色),app 仅消费做车模预览
26A 是随机代号✅ 26A = Modena-26A 双层氛围灯车型isDualLayerAtmosphereLightEnable,DEVICE_KEPLER)
灯光状态用实际灯泡信号✅ 右栏车模用仪表 Warning 信号(POSITION/LOW/HIGH/FOG_BEAM_STATUS),注释明示「单泡故障不应影响设置项展示」
READING_LEAM 正确❌ 拼写错误(应为 LAMP);BEAM_AUTOADJUST 命名误导(值=氛围灯模式)

车型代号映射(破译,来自 DeviceUtil)

DeviceUtil 常量平台灯光相关
DEVICE_KUNLUNKunLun(昆仑)迎宾灯用 Switch(OFF/BRIEF),非 Tab
DEVICE_WATTModena不显示照脚灯
DEVICE_HERTZModena-U不显示照脚灯
DEVICE_KEPLERModena-26A / Modena-27A 出海双层氛围灯(26A 组)
DEVICE_FARADAYModena-27B 出海
DEVICE_SUIRENLemans Base

文档导航

文档内容
01-代码结构与子系统入口 Fragment、XML 25 项全表、16 Controller 逐解、右栏车模机制
02-信号梳理45 个 LightCtrl 信号穷举、7 子域分组、Controller→信号映射、枚举值
03-氛围灯系统专题三层架构、双拼色同步精巧设计、256 色色盘、音乐律动真相
04-功能差异与对抗验证25 功能、12 车型差异规则、配置字、3 套不可用原因、对抗记录

关键文件索引

类型路径
入口 FragmentmicarLightSettings/.../lights/LightsSettingsFragment.java
主 XML.../res/xml/miauto_lights_settings_fragment.xml
右栏 Fragment.../lights/LightsRightFragment.kt(车模可视化)
右栏 Controller.../vehicle/LightsRightFragmentController.kt
氛围灯 ViewModel.../display/livedata/AtmosphereData.java(6 个 LiveData 总线)
双拼色中枢.../display/ColorPickManager.kt(object 单例)
跨进程同步.../display/AtmosphereLightSyncReceiver.kt
可见性 Helper.../common/LightPreferenceVisibleStatusHelper.java
信号映射.../common/LightsVehiclePropertysMap.java
信号域定义base/settingsBaseLib/.../vehicle/MiCarPropertyIds.java(LightCtrl 21-122 行)