04 · 自定义驾驶模式专题(SU7 Ultra Individual)

高性能车深度自定义(对标保时捷/法拉利 Individual)。M1/M2 两个预设槽,每维度独立 CAN 信号,可分享预设。

一、M1/M2 双槽位机制(核心)

  • 两个自定义槽:M1(DriveMode.CUSTOM_1) / M2(DriveMode.CUSTOM_2),最多 10 个预设(MAX_LIST_SIZE=10
  • 官方默认预设:M1=经典/湿滑(高配 SU7 Ultra),M2=新手(限速 140km/h)
  • 每维度两套 CAN 信号:每个自定义维度在 M1 和 M2 下有独立信号(如 ACCELERATION_STRENGTH_M1 vs _M2
  • 切换 M1↔M2registerPropertyCallbackAgain() → unregister 旧信号 → 注册新信号 ID(延迟 800ms 避免闪烁)
  • 数据模型SteeringModeData(Parcelable + Gson,18 维度)→ 账号云同步 + 分享码分享
  • 守门isDefaultMxModeEditable()(高配四驱下,官方默认预设不可编辑)

二、4 个自定义基类(custom 包)

基类用途继承
BaseCustomVehicleProgressPrefControllerSlider 维度(动力/扭矩比例/能量回收强度)BaseVehicleProgressPrefController
BaseCustomSinglePropTabLayPrefControllerTab 档位(转向/悬架/尾翼/ESC/TC/eLSD/能量模式/扭矩模式)BaseVehicleTabPreferenceController
BaseCustomNewSwitchPrefController开关(防侧倾/扭矩补偿)BaseVehicleNewSwitchPrefController
BaseCustomAudioSettingSwitch/SingleAudioTabLayAudioSettings(运动声浪,非 CarProperty)

所有基类持有 SteeringModeViewModel(共享选中预设),子类实现 getPropertyIdForM1()/getPropertyIdForM2()

三、18 个自定义维度全表

区块 1:动力与回收

#维度Controller调节档位/范围
1动力响应AccelerateParamSlider1-100 步10,反向映射(百公里加速时间),MS11-U 默认 35
2能量回收模式CustomEnergyRecoveryModeTab 4 档柔和/适中/标准/自定义(仅 Lux/Mann)
3能量回收强度CustomEnergyRecoveryStrengthSlider0-100 步10,混动最小 1(仅 Lux/Mann)

区块 2:操控

| 4 | 转向手感 | SteerAssistantParam | Tab 3 档 | 轻/中/重(EPS_STRENGTH_LIGHT/MEDIUM/STRONG) |

区块 3:底盘

| 5 | 悬架高度 | SuspensionHeightParam | Tab 2-3 档 | 低配 2 档(较低/标准),高配 3 档(+低) | | 6 | 悬架阻尼 | SuspensionDampingParam | Tab 3-4 档 | 默认 3(舒适/运动/运动+),+经济 4 档 | | 7 | 主动防侧倾 | CustomAntiRoll | Switch | ON/OFF(仅 FULL_ACTIVE 悬架) | | 8 | 电动尾翼 ARS | CustomARS | Tab 5 档 | 收起/低/中/高/自动 |

区块 4:四驱扭矩分配(仅四驱且非 Kunlun)

| 9 | 扭矩分配模式 | TractionRatioModeParam | Tab 2 档 | 手动(MANUAL_2)/自动(AUTO) | | 10 | 扭矩分配比例 | TractionRatioParam | Slider | 0-100 步10,前|后(MAX-progress) | | 11 | 驱动分配补偿 | TractionRatioManualCompensation | Switch | MANUAL(纯手动)/MANUAL_2(手动+补偿) |

区块 5:赛车级动力学(多档位自由度选择)

| 12 | ESC 稳定辅助 | CustomESC(VDC) | Tab 2-3 档 | 低配(中性/稳定),高配四驱(灵活/中性/稳定) | | 13 | TC 牵引力 | CustomTC(TCS) | Tab 2-3 档 | 低配(中性/稳定),高配(灵活/中性/稳定) | | 14 | eLSD 限滑差速 | CustomELSD | Tab 2 档 | 中性(NEUTER)/稳定(STABLE) |

ESC/TC/eLSD 是多档位自由度选择(稳定→中性→灵活逐级释放电子系统介入),赛道日/漂移级细粒度控制。值:VDC 0-4,TCS 0-7。

区块 6:运动声浪(AudioSettings 接口,非 CarProperty)

| 15 | 声浪开关 | MotionWaveParamSwitch | Switch | ON(仅车内)/OFF | | 16 | 声浪风格 | CustomMotionWaveModeTab | Tab 2/4 | 4 风格(电音/经典/科幻/浑厚) 或 双风格(电音/轰鸣,仅 Kepler) | | 17 | 车内音量 | CustomMotionWaveInsideCarVolume | Slider 1-10 | >7 红色警告 | | 18 | 车外音量 | CustomMotionWaveOutsideCarVolume | Slider 1-10 | 社交属性 |

四、运动声浪 MotionWave 真相(非防晕车)

⚠️ MotionWave = 模拟引擎声浪(让电动车有 V8/V12 声效),不是防晕车。防晕车是 ANT_MTNSICK_MODE 驾驶场景模式。

  • AudioSettings 接口IMiCarAudioSettingsCallback/AUDIO_SETTINGS_REQUEST),非 CarProperty
  • 车内声浪(驾驶氛围)+ 车外声浪(社交属性,给车外行人听)
  • 配置:CarConfigManager.isESEEnable() + isEseInteriorAndExteriorEnable(MS11P 强制) + isDualStyleTypes(仅 Kepler) + isShieldMotionWave(逃生方案屏蔽,Kepler/Mach)
  • 仅 Sport/Sport+/Battle/Standard 模式可开

五、预设管理

入口:CustomSteeringModeMenu(仅四驱高配)

CustomSteeringModeMenuPreferenceController 提供 4 动作:

  • 编辑CustomModeListDialog(预设列表,创建/编辑/删除/分享)
  • 添加EditSteeringModeNameDialog
  • 导入ModeImportDialog(输入分享码)
  • 分享 → 直接拉分享页

低配(两驱)

无 menu,直接编辑 M1/M2,标题拼接模式名(如”个性1 我的需求A”)。

创建/切换/删除

  • SteeringModeViewModel.createNewSteeringMode()(限制 MAX_LIST_SIZE=10)
  • 切换:mSelectedSteeringMode LiveData 通知所有维度 Controller → registerPropertyCallbackAgain(true)(800ms 重注册)
  • 名称持久化:Settings.Global.putString(SP_KEY_CUSTOM_STEERING_MODE_1/2) + 跨进程同步

六、预设分享系统(SteeringModeShare)

com.android.micar.settings.driving.custom.share 包:

  • SteeringModeShareFragment:6 种状态(分享中/成功/失败/导入中/成功/失败/无网络/HyperMind 跳转)
  • 成功页:模式名 + 9 位分享码(每 3 位空格,如 001 151 001)+ 作者 + 设备 + 雷达图 + 11 维度双列
  • 通过 ModeShareService + SteeringModeShareViewModel(协程+Flow)
  • 分享/导入通过 SteeringModeShareDataHelper 转 propVal→中文显示名
  • 支持 HyperMind 跳转

七、官方预设快速恢复(CustomSteeringModeExtend)

CustomSteeringModeExtendPrefController:一级页”恢复为经典/新手模式”高亮入口。

  • 仅四驱高配 + 当前 M1/M2 + 另一槽非默认预设时可见
  • 点击 → updateCurrentModeAndSetVehicle() 全量下发默认预设所有信号 + Toast

八、驾驶模式对比表(SteeringModeContrast)

SteeringModeContrastDialog + SteeringModeContrastController

  • TableLayout:行=维度,列=驾驶模式(舒适/经济/标准/运动/运动+/M1/M2)
  • 行由 ContrastDataMaker 实现类动态生成(AccelerateParam/SteerAssistant/Suspension/ARS/TractionRatio/ESC/TC/ELSD/MotionWave/EnergyRecovery)
  • 按配置隐藏列

九、暗门(隐藏功能)

SteeringModeExtendPreferenceController(主驾驶模式 Tab 容器):

  • 标题图标点击 → SteeringModeContrastDialog(对比表,Kunlun/Lux/Mann 不展示)
  • 标题暗门点击setTitleSecretDoorClickListener)→ 强制关闭驾驶安全保护(条件:isSafeDrivingOn() && isMileageNotAllowedAndParking()

十、其他底盘 Controller(一级页,非自定义)

Controller信号说明
SuspensionHeightPreferenceControllerSUSPENSION_HEIGHT普通 5 档(低/较低/标准/较高/高),依赖 SUSPENSION_HEIGHT_UNAVAILABLE(bit)
SuspensionHeightFollowSpeedSwitchSCU_SUSPENSION_HEIGHT_FOLLOW_SPEED随速调节
AutomaticSuspensionSwitchAUTO_LEVELING_ADJUSTMENT_SWITCH_STATUS智能升高(地理围栏),需位置权限
DamperSettingDialogActivity避震阻尼 1-10 档(XML 注释掉,工程模式专属)
ARDPreferenceControllerARD_SWITCH_STATUS尾部扩散器 2 档(收起/展开)
BrakingStrengthTab/PreferenceBRAKING_MODE(=REGENERATION_MODE)能量回收强度(一级页)