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_M1vs_M2) - 切换 M1↔M2:
registerPropertyCallbackAgain()→ unregister 旧信号 → 注册新信号 ID(延迟 800ms 避免闪烁) - 数据模型:
SteeringModeData(Parcelable + Gson,18 维度)→ 账号云同步 + 分享码分享 - 守门:
isDefaultMxModeEditable()(高配四驱下,官方默认预设不可编辑)
二、4 个自定义基类(custom 包)
| 基类 | 用途 | 继承 |
|---|---|---|
BaseCustomVehicleProgressPrefController | Slider 维度(动力/扭矩比例/能量回收强度) | BaseVehicleProgressPrefController |
BaseCustomSinglePropTabLayPrefController | Tab 档位(转向/悬架/尾翼/ESC/TC/eLSD/能量模式/扭矩模式) | BaseVehicleTabPreferenceController |
BaseCustomNewSwitchPrefController | 开关(防侧倾/扭矩补偿) | BaseVehicleNewSwitchPrefController |
BaseCustomAudioSettingSwitch/SingleAudioTabLay | AudioSettings(运动声浪,非 CarProperty) | — |
所有基类持有 SteeringModeViewModel(共享选中预设),子类实现 getPropertyIdForM1()/getPropertyIdForM2()。
三、18 个自定义维度全表
区块 1:动力与回收
| # | 维度 | Controller | 调节 | 档位/范围 |
|---|---|---|---|---|
| 1 | 动力响应 | AccelerateParam | Slider | 1-100 步10,反向映射(百公里加速时间),MS11-U 默认 35 |
| 2 | 能量回收模式 | CustomEnergyRecoveryMode | Tab 4 档 | 柔和/适中/标准/自定义(仅 Lux/Mann) |
| 3 | 能量回收强度 | CustomEnergyRecoveryStrength | Slider | 0-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)- 切换:
mSelectedSteeringModeLiveData 通知所有维度 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 | 信号 | 说明 |
|---|---|---|
SuspensionHeightPreferenceController | SUSPENSION_HEIGHT | 普通 5 档(低/较低/标准/较高/高),依赖 SUSPENSION_HEIGHT_UNAVAILABLE(bit) |
SuspensionHeightFollowSpeedSwitch | SCU_SUSPENSION_HEIGHT_FOLLOW_SPEED | 随速调节 |
AutomaticSuspensionSwitch | AUTO_LEVELING_ADJUSTMENT_SWITCH_STATUS | 智能升高(地理围栏),需位置权限 |
DamperSettingDialogActivity | — | 避震阻尼 1-10 档(XML 注释掉,工程模式专属) |
ARDPreferenceController | ARD_SWITCH_STATUS | 尾部扩散器 2 档(收起/展开) |
BrakingStrengthTab/Preference | BRAKING_MODE(=REGENERATION_MODE) | 能量回收强度(一级页) |