Skip to content

About

Android CarLife/TPMS dashboard for Hyundai Tucson TL 1.6T G4FJ

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CarLink Lab

Android 手机端车辆互联与 TPMS 仪表实验项目,重点面向 2015/2016 Hyundai Tucson TL 1.6T G4FJ 与支持百度 CarLife 的现代/起亚车机。

这是一个面向自有车辆、互操作研究和停车调试的实验项目。它不是百度官方 CarLife 客户端,也无法把 Android 手机合法地伪装成 Apple CarPlay 设备。

当前源码版本:0.19.0(开发版本,Android 8.0+,当前 APK 仅包含 ARM64)。最近完整设备验证记录对应 0.18.0。

电脑端 CarLife 模拟接收器与用法见 desktop-headunit,支持通过 ADB 接收手机或 Android 模拟器上的 APP 视频,也可在没有手机时运行本地自检。

液态玻璃手机首页

0.15.0 手机首页实机截图,背景延伸到顶部状态栏与底部手势区。

功能

  • 支持实验性导航投屏:系统授权共享导航应用或屏幕后,通过现有 CarLife 视频通道显示;可恢复胎压仪表,后台车辆采集继续运行。
  • Android 前台服务维持 CarLife TCP 通道和 WiFi ELM327 连接,并持有 CPU / WiFi 锁。
  • 在手机与 CarLife 车机之间建立本地 TCP 通道,发送 H.264 仪表画面。
  • 通过 WiFi ELM327 轮询 Hyundai Mode 21 TPMS 数据,分别显示四轮胎压与胎温。
  • 读取标准 OBD-II 燃油数据,显示实时油耗、本次消耗量、油价和本次消费;胎压不可用时继续读取燃油。
  • 六个手机页面采用液态玻璃风格卡片、渐变背景与自适应操作区;手机仪表采用浅色玻璃,车机仪表保持深色玻璃。
  • 页面背景延伸到状态栏和手势区,按钮与输入区避开系统栏、摄像头和软键盘。
  • 手机首页提供唯一的功能入口;连接页支持独立轮胎卡片、可折叠日志和后台运行设置。
  • 支持自定义欢迎标题、油价省份和汽油标号,保存 ELM327 地址与端口。
  • 缺失或过期数据显示 N/A 或“—”;胎压异常以颜色区分。

当前进度(2026-10-23)

  • 已实现独立车载桌面和高德独立导航:地点搜索、驾车算路、模拟导航、地图与胎压侧栏,以及手机端导航语音。
  • 独立画面不依赖手机屏幕共享;小米 14 Ultra 配合 Windows 模拟车机的熄屏传输、暂停恢复和重连已有验证记录。
  • 原胎压仪表连接已有用户确认的稳定运行记录;实际 GPS 行驶、后台持续定位和独立导航在真实车机上的解码、延迟与稳定性仍待验证。
  • 尚未实现车机音频通道、触摸反控、语音搜索和多路线选择。
  • 0.19.0 是当前源码版本号,不代表新增功能或实车验收已完成;0.18.0 的设备验证时间为 2026-10-18。

使用和验证记录:高德独立导航、独立车载桌面、导航屏幕共享。

高德导航需要在本地 local.properties 配置 amap.api.key,包名与签名须匹配高德控制台。未配置 Key 仍可构建,但无法初始化导航。Key、签名和安装包不提交到仓库。

0.16.1 更新

  • 使用用户提供的蓝色现代汽车图标替换桌面图标、圆形图标和首页图标;功能沿用 0.16.0。

0.16.0 更新

  • 车辆连接页增加“开始导航投屏”和“恢复胎压仪表”;车机视频通道就绪后开放投屏入口。
  • 新增 Surface 输入的 H.264 屏幕共享编码路径,按车机协商的尺寸发送画面,并在关键帧前携带编码参数。
  • 处理 Android 14 屏幕共享授权及前台服务类型;每次重新投屏都申请新授权,不保存或重放授权 token。
  • 主动停止、系统终止共享、编码失败时恢复仪表;车机停止视频或断开时结束共享,恢复连接后需重新授权。
  • 本轮仅传输画面,导航操作仍在手机完成;不包含导航声音传输、车机反控、导航与仪表同屏或熄屏持续投屏。
  • 使用步骤与实车验证清单见 导航投屏说明。

0.15.0 更新

  • 重构首页、车辆连接、仪表预览、USB 诊断、协议扫描与通道检查的全部页面。
  • 操作按钮保持至少 48dp 的触控尺寸;窄屏或大字体时,多列操作自动改为纵向排列。
  • 重新安排音乐控制与日志按钮,取消播放器负边距,避免控件挤压与重叠。
  • 修正高密度 Android 屏幕上的 WebView 渲染比例,避免预览文字变大、卡片溢出。
  • 支持透明状态栏和手势区,按系统安全区域与键盘高度调整内容留白。
  • 新增蓝紫渐变汽车图标、自适应启动图标、Android 13 单色图标和独立通知图标。
  • 保留现有连接参数、数据读取和后台服务行为;内部版本号提升到 25。

0.14.1 更新

  • 内部版本号提升到 24,支持覆盖安装内部版本号为 23 的旧调试包;功能沿用 0.14.0。

0.14.0 更新

  • 删除手机首页重复的功能按钮,统一界面配色与布局。
  • 打通燃油读取到手机和车机显示的链路,兼容多种标准 OBD 响应格式。
  • 胎温换算从 raw - 40 修正为 raw - 50,消除已知的 10°C 偏差;独立处理每轮缺失温度,拒绝不完整或乱序报文。
  • 系统重启后台服务时恢复保存的连接地址,重新进入页面时恢复服务状态和最后读数。
  • 增加省电限制状态与系统设置入口;停止服务时取消任务并释放资源,连接日志限制长度。
  • 修复蓝牙权限及 USB 广播注册的静态检查错误。

兼容性与验证状态

项目此前面向 2015/2016 Hyundai Tucson TL 1.6T G4FJ、原生支持 CarLife 的 800×480 车机及 WiFi ELM327 进行开发与调试。最低系统版本为 Android 8.0(API 26)。TPMS 使用请求头 7D6、请求 21 06、响应 61 06。

0.15.0 已在小米 14 Ultra 上覆盖安装并逐页检查六个页面。普通字体、1.3 倍字体、320dp 窄屏大字体及 914dp 横屏模拟共 24 次页面测量,按钮无重叠、无文字裁切,触控尺寸达到 48dp。仪表另通过五种尺寸的浏览器检查、17 项标准 OBD / TPMS / 模拟 ELM 回归、APK 构建与 Android Lint。详见 界面检查记录。

上述为历史界面验证记录;最新导航验证范围见“当前进度”及对应版本文档,电脑接收通过不等于真实车机通过。

不同市场、年款、ECU、车机固件和适配器可能使用不同端口、CAN 地址或数据布局。请先保存原始日志,再修改协议代码。

快速开始

构建

要求 JDK 17、Android SDK Platform 35 和对应的 Build Tools。Gradle Wrapper 会下载项目指定的 Gradle 版本;首次构建需要网络及已接受的 SDK 许可。

Windows 原生构建入口:

.\gradlew.bat assembleDebug testDebugUnitTest lintDebug

APK 默认写入 app\build\outputs\apk\debug\app-debug.apk。交付物按日期保存至 D:\CodexMigration\outputs\ 的主题子目录。

调试 APK 保留迁移后单独配置的原项目调试签名。覆盖安装需要与旧版使用相同的签名,仅文件名和版本号一致并不足以保证可覆盖安装。

使用

  1. 手机连接 WiFi ELM327。
  2. 打开 CarLink Lab,点击“连接车辆与实时仪表”。
  3. 设置欢迎标题、油价省份、汽油标号、ELM327 IP 和端口。
  4. 允许应用通知,点击“开始”,确认前台服务通知出现。
  5. 在手机开发者选项中启用 USB 调试。
  6. 通过 USB 连接车机并启动车机端 CarLife。
  7. 停车状态下确认 TPMS、燃油和视频画面。

“仪表外观预览 · 演示数据”使用模拟数据;真实车辆读数位于连接页面及 CarLife 车机画面。

小米 / HyperOS 后台运行

在连接页点击“后台运行设置”,按系统提示允许忽略电池优化;在应用信息中将省电策略设为“无限制”,允许后台自启动,并保留应用通知。菜单名称可能随 HyperOS 版本变化,以手机实际设置为准。

启动连接后,锁屏数分钟,再打开应用确认数据继续更新。前台服务与唤醒锁不能保证绕过所有厂商后台限制;系统强制停止应用后需手动重新启动。

手机竖屏仪表预览(模拟数据)

手机竖屏仪表

数据流

WiFi ELM327 -- OBD/TPMS --> TucsonTpmsDataSource
                                  |
                                  v
                         TpmsSnapshot
                                  |
CarLife head unit <-- H.264 <-- H264FrameEncoder
                                  ^
                                  |
                      WebViewDashboardRenderer
                                  ^
                                  |
                  app/src/main/assets/tpms_template.html

详细说明见 docs/ARCHITECTURE.md。

TPMS 与燃油

本项目当前针对目标车辆使用:

  • 压力:rawPressure / 4 * 6.894757 kPa
  • 温度:rawTemperature - 50 摄氏度
  • 轮位:记录 1-4 对应左前、右前、左后、右后
  • 燃油流量:优先 015E;不可用时使用 0110 MAF 估算。
  • MAF 假设:汽油空燃比 14.7、密度 745 g/L;流量为 MAF / 14.7 / 745 × 3600 L/h。
  • 实时油耗:车速 010D 大于 5 km/h 时,显示 流量 / 车速 × 100 L/100km;不超过 5 km/h 时显示 L/h。
  • 缺失车速时不显示瞬时油耗;缺失流量时不沿用旧值,不完整采样或断连期间不累计该段燃油。
  • 页面在读数超过约 30 秒未更新时清除过期数据显示。
  • 油价默认使用第三方接口,可在设置中更换省份和汽油标号

温度偏移参考 OBDb Tucson 协议定义。该公开定义与项目既有传感器 ID 布局存在差异,当前保留原有压力与轮位布局,具体 ECU 版本需要用实车 2106 报文核对。修正偏移意味着原来的 43°C 将变为约 33°C;不能据此保证读数与环境温度一致。

燃油流量的 MAF 备用计算及累计消耗量属于估算,不能替代车辆标定数据。第三方油价接口可能随时变更或不可用,项目不保证其持续工作。

隐私

  • 不包含遥测、账号系统或广告 SDK。
  • 不主动上传车辆数据。
  • 运行时会访问用户配置的 ELM327 地址和第三方油价接口。
  • 提交 Issue 前请删除日志中的 VIN、位置、手机号、IP、车牌和账号信息。
  • 不要把签名密钥、token、密码或原始私有日志提交到 Git。

法律与安全

  • 与 Baidu、Apple、Hyundai、Kia 或其关联公司无隶属或授权关系。
  • CarLife、CarPlay、Hyundai、Kia 等名称和商标归各自权利人所有。
  • 本项目不包含第三方固件、官方客户端代码或认证芯片绕过方案。
  • 协议逆向仅用于互操作研究和用户自有车辆。
  • 使用者需自行确认当地法律、车辆保修条款和第三方服务条款。
  • 禁止在驾驶过程中操作手机或调试界面。
  • 不得将本项目用于未授权车辆、绕过安全认证或破坏车辆系统。

完整说明见 docs/LEGAL.md。

参与开发

请先阅读 CONTRIBUTING.md、SECURITY.md 和 CODE_OF_CONDUCT.md。

提交协议适配时,请提供可复现步骤和数据来源,不要提交 VIN 或其他隐私信息。发布前检查 docs/OPEN_SOURCE_CHECKLIST.md。

许可证

MIT License,见 LICENSE。第三方依赖和商标不适用 MIT License。

About

Android CarLife/TPMS dashboard for Hyundai Tucson TL 1.6T G4FJ

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages