01 · 代码结构与子系统

一、入口 Fragment

DrivingSettingsFragmentmiauto.driving 包)

@VoiceSearchProvider @Module(TAG_DRIVING) @RouterProvider(path=...) @MonitorFragment
public class DrivingSettingsFragment extends TopLevelSettingsFragment implements IPageRouteHandler

getRightFragment()BaseDrivingRightFragment(驾驶模式可视化);radar/view 下有 DrivingRadarRightFragment(雷达图,自定义模式用)。getPreferenceKeyResIdsToRemove() 按车型三选一互斥裁剪(MS11P/Kunlun·LeMansGT/其他)。

二、三大包分工(命名混乱,需注意)

职责
com.android.car.settings.miauto.driving主驾驶模式 Tab、一级页 Controller(悬架/能量回收/制动/蠕行/坡道/MotionWave 普通版)、车主模式入口、DrivingFragmentViewModel
com.android.micar.settings.driving驾驶场景模式引擎(DriveModeBase + DriveMode/DriveModeButtonIcon + TerrainMode + LaunchMode + SafetyExam + 拖挂 + ARS/ARD)
com.android.micar.settings.driving.custom自定义驾驶模式(CustomSteeringMode + 4 基类 + 18 维度 + 预设管理/分享)
com.android.micar.settings.driving.contrast驾驶模式对比表
com.android.micar.settings.dmsDMS 驾驶员监测(疲劳/分心)
com.android.micar.settings.avmAVM 全景影像
com.android.micar.settings.vehicle各种模式 Open/Close/Failed Dialog

三、Controller 继承层级(核心)

CarPropertyMgrPreferenceController<V>
├─ BaseVehicleTabPreferenceController (Tab)
│  ├─ DriveModeBasePreferenceController (1950行,场景模式核心抽象) ← 驾驶场景模式
│  │  ├─ DriveModePreferenceController (10模式文字Toggle)
│  │  ├─ DriveModeButtonIconPreferenceController (9模式大ICON)
│  │  └─ TerrainModePreferenceController (5地形,独立)
│  ├─ SteeringModePreferenceController (主驾驶模式Tab)
│  │  └─ SteeringModeExtendPreferenceController (带对比表+暗门)
│  ├─ BaseCustomSinglePropTabLayPrefController ← 自定义Tab基类
│  │  ├─ CustomEnergyRecoveryMode / SteerAssistantParam / SuspensionHeightParam
│  │  ├─ SuspensionDampingParam / CustomARS / CustomESC / CustomTC / CustomELSD
│  │  └─ TractionRatioModeParam / CustomMotionWaveModeTab
│  └─ BrakingStrengthTab / EnergyModeTab / AvmNarrowRoad / AvmBlindSpotTab
├─ BaseVehicleNewSwitchPrefController (Switch)
│  ├─ MotionWaveParamSwitch / DrivingAtmosphere / DrivingSteeringAssist
│  ├─ SuspensionHeightFollowSpeed / AutomaticSuspension / SimulatedGearShift
│  ├─ BaseCustomNewSwitchPrefController ← 自定义Switch基类
│  │  ├─ CustomAntiRoll / TractionRatioManualCompensation
│  │  └─ CustomSteeringMode (入口)
│  └─ BaseLockBeep-style: AvmDelayClose / AvmReverseTransparency / AvmBlindSpot
├─ BaseVehicleProgressPrefController (Slider)
│  ├─ AccelerateParam / BrakingStrength / BrakePedalFeel
│  ├─ SuspensionHeight / TractionRatioParam
│  └─ BaseCustomVehicleProgressPrefController ← 自定义Slider基类
│     ├─ CustomEnergyRecoveryStrength
│     └─ CustomMotionWaveInsideCar/OutsideCarVolumeSlider
├─ BaseVehicleButtonToggleGroupPropController (多按钮)
│  └─ AvmRearViewButtonToggle
├─ BaseAudioSettingsSwitchPrefController / BaseAudioSettingsTabLayPrefController (AudioSettings非CarProperty)
│  ├─ MotionWaveSwitch / MotionWaveModeTab / MotionWaveInsideCarVolumeSlider (普通版)
│  └─ BaseCustomAudioSettingSwitch / BaseCustomSingleAudioTabLay ← 自定义Audio基类
│     └─ CustomMotionWaveParamSwitch / CustomMotionWaveModeTab (M1/M2版)
└─ (直接继承)
   ├─ DriveModePreferenceController(主模式入口,列表版)
   ├─ CustomSteeringModeMenuPreferenceController (菜单:编辑/添加/导入/分享)
   ├─ LaunchModePreferenceController (弹射教程入口)
   ├─ SafetyExamReviewPreferenceController (安全考试)
   ├─ OwnerModeEntranceController (车主模式,标题随信号切)
   └─ ARS/ARD/TowModeWarning/DamperSetting...

⚠️ SpecialSteeringModePreferenceController.java / ..UPreferenceController.java0 字节空文件(历史占位),真正生效的是 DriveModePreferenceController / DriveModeButtonIconPreferenceController

四、主 XML 11 个 Category(miauto_driving_settings_fragment.xml)

Category关键 Controller
①驾驶模式+能量模式SteeringModeExtend + CustomSteeringMode + CustomSteeringModeExtend + EnergyModeTab + EV优先 + 强制充电
②地形模式TerrainMode(5 选 1)
③驾驶场景模式(按钮版)DriveModeButtonIcon + TowModeWarning
④驾驶参数SteerAssistant + BrakingStrengthTab/Preference + CreepSpeed + RampAssist + BrakePedalFeel
⑤转向辅助DrivingSteeringAssist + SteerAssistant(MX11/Kunlun)
⑥动效音波+氛围+模拟换挡MotionWaveSwitch/Mode/Volume + DrivingAtmosphere + SimulatedGearShift
⑦悬架SuspensionHeight + FollowSpeed + Automatic + ARS + ARD
⑧AVM全景影像AvmDelayClose + ReverseTransparency + NarrowRoad + ShortRangeObstacleWarning(跨模块) + RearViewButtonToggle + RearViewAuto + BlindSpot
⑨DMSDmsFatigue(Pref+Switch) + DmsDistraction(Pref+Switch)
⑩驾驶模式(列表版)+弹射DriveModePreferenceController + TowWarning + LaunchMode
⑪安全考试+车主模式SafetyExamReview + OwnerModeEntrance

自定义页 XML(micar_custom_steering_mode_fragment)含 18 维度,详见《04-自定义驾驶模式专题》。

五、关键 Fragment/Dialog

作用
DrivingRadarRightFragment自定义模式雷达图右栏(多维度可视化)
CustomSteeringModeFragment自定义模式参数页(二级)
SteeringModeShareFragment预设分享(9 位码 + 雷达图)
LaunchModeGuideFragment / DragRacingModeGuideFragment弹射/直线竞速教程(二级页)
EnergyModeEvPriorityFragment / EnergyModeForceChargeFragment强制纯电/充电(二级页,增程车)
DamperSettingDialogActivity避震阻尼(注释掉,工程模式)
模式 Dialog(20+)EcoMode/WetMode/OffRoadMode/HdcMode/WadingMode/CrabRowMode/MotionSicknessMode/DragRacingMode/TowMode 的 Open/Close/Failed/Request + TowBarExtend/Retract + EcoMode/WetMode SmartOpen
SteeringModeContrastDialog驾驶模式对比表(行=维度,列=模式)
CustomModeListDialog预设管理(编辑/删除/分享)
EditSteeringModeNameDialog预设命名

六、ViewModel

ViewModel作用
DrivingFragmentViewModel主页状态
SteeringModeViewModel自定义预设核心(M1/M2 切换、创建/删除/分享,MAX_LIST_SIZE=10)
DamperSettingViewModel避震阻尼

七、代码异味(对抗验证)

#异味
1三大包命名混乱(miauto.driving / micar.settings.driving / micar.settings.driving.custom)
2SpecialSteeringMode*.java 0 字节空文件(历史占位未删)
3STEERING_MODE=DRIVE_MODE、BRAKING_MODE=REGENERATION_MODE(命名陷阱)
4SUSPENSION_DAMP_NORMAL=运动、SUSPENSION_DAMP_SPORT=运动+(信号名与 UI 语义错位)
5MotionWave 普通版(MotionWaveSwitch 系)与自定义版(CustomMotionWave 系)两套并存
6DamperSetting(避震阻尼 1-10 档)注释掉,工程模式专属
7暗门:SteeringModeExtendPreferenceController 标题暗门点击→强制关闭驾驶安全保护
8跨模块引用:AVM 组用 MiCarAutoPilotShortRangeObstacleWarning(autopilot 模块)
9AI 生成密集:roof/password 式的 BATTLE/Track/Drag/Launch 相关(DeepSeek/Claude)