不少人的车机是安卓系统,屏幕不小、功能够用,可就是接不上CarPlay,想用手机导航和听歌只能靠蓝牙凑合。DiPlay是一款跑在兼容安卓车机上(尤其是比亚迪DiLink)的CarPlay接收端,走的是软件路线,不用额外加装硬件,有线连接和无线连接都有公开预览可用。它适合已经装好安卓车机、又想用回iPhone的车主,也适合喜欢自己折腾车机的朋友。

软件特点
老车机不用换:DiPlay直接把这类车机变成CarPlay接收端,省掉换主机或者加装模块的麻烦。
有线无线都能接:公开预览同时提供有线和无线两种连接方式,插线图个稳定,无线图个上车自动连。
要自己装APK:软件需要安装到车机上使用,不是免安装的网页工具,装完在车机上打开即可,不用再配别的东西。
完全免费,代码开源:项目采用GPL-3.0协议开源,源码放在GitHub上公开,使用不花钱。
适配范围广,持续维护:它面向的是兼容的安卓车机,主要是比亚迪,但是社区发布了支持很多其他车型的版本。
Features
面向 Android 和 Android Automotive OS 的 CarPlay 主机应用。
支持 CH341 桥接 MFI 芯片、原生
/dev/i2c-N设备连接的 MFI 芯片、本地证书/私钥文件和 Remote MFI 认证(API 见下)。支持 CarPlay 有线或无线连接。
支持触发 CarPlay Ultra (未测试/未完成的协议栈,但是确实可以在 iPhone 上触发 CarPlay Ultra 的提示)。
支持语音、导航、音乐多通道音频输出并 mapping 至 Android 的对应通道。
支持动态 Activity resize ,并自动重新握手至新的分辨率。
支持主屏和仪表的独立网页输出(浏览器直接解码 H.264/H.265,主屏支持触控和音频)。
支持车机位置回传。
支持 Android 9 (API 28) 。
使用方法
通过蓝牙将 iPhone 与车机配对。
CarPlay 视频流尚未启动时,点击右下角的设置按钮;也可以用三指向下滑动打开设置页面。
确认所有设置均已按需配置。 如需启用另一种手势,打开
More gestures to Settings page:单指从屏幕左侧 1/8 区域的上 1/4 开始,沿左侧下滑,在下 1/4 区域抬起。滑动到底部,选择
Save & Reconnect。按照你选择的方式连接 MFi 芯片。
等待连接完成,然后开始使用。
网页显示
在设置的
Web displays中开启Main display和/或Instrument display,填写分辨率,点击Save & Reconnect。浏览器设备与 Android 接入同一局域网,打开设置里显示的地址(
https://<IP>:8080/main或/cluster,带访问 key,可复制)。证书为自签名,每个浏览器首次打开会提示不安全,选择继续访问即可。
主屏网页:支持双指以内触控;打开后手机音频转到网页播放,点一下屏幕即可出声(浏览器限制)。麦克风仍使用 Android。
仪表网页仅显示,需要 iPhone 提供第二屏视频流。
建议使用较新的 Chrome / Edge / Safari;浏览器不支持 H.265 时,在设置中关闭 HEVC (H.265)。
当前进度
他运转👍,已在车机/手机平台测试,如果出现部分车机不适配的情况欢迎 issue (并附上你的 log ,位于 /sdcard/Android/data/com.shilapi.xcertplay/files/logs/xcertplay.log)
转接板:CH341-to-MFI
本地 MFI 文件
在 MFI certificate & signing target 中选择 Local files,然后通过两个 Choose 按钮使用 Android 系统文件选择器选择证书和私钥。当前支持 DER PKCS#7 证书(.p7b) 及与之匹配的、未加密 DER PKCS#8 私钥(.pk8)。应用会在开始连接手机前校验两者是否 匹配,并在 MFI 重连时重新读取文件。
建议把私钥放在受保护的位置。应用不会把证书或私钥复制到偏好设置,只会保存 Android 授予的持久读取权限和文档 URI。
工程结构
Remote MFI 功能
Remote MFi 客户端把远程服务当作一块 MFi 芯片远程调用,抑或是采用 BAA 认证,通过远程进行认证免去了本地连接 MFI 芯片进行认证的流程。
端点
(可选)采用标准 Bearer Authentication 进行验证。
当前仅测试了 BAA Authentication
环境要求
启动 Gradle 需要 JDK 17 或更高版本;daemon 通过 Gradle toolchain 解析 Java 25。
Android SDK Platform 37。
Android 9(API 28)或更高版本。 在 Android 9 上不可用 Wi-Fi P2P 5 GHz 模式,应用会改用 LocalOnlyHotspot。
Android NDK
28.2.13676358。硬件验证需要支持 USB Host/OTG 的 Android 设备以及 MFi 硬件。
构建
在 Windows PowerShell 中:
$env:JAVA_HOME = "C:\Program Files\Android\Android Studio\jbr"
.\gradlew.bat :shared:testDebugUnitTest :common:testDebugUnitTest :common:lintDebug :mobile:lintDebug :automotive:lintDebug :mobile:assembleDebug :automotive:assembleDebug在 macOS 或 Linux 中:
./gradlew :shared:testDebugUnitTest :common:testDebugUnitTest :common:lintDebug :mobile:lintDebug :automotive:lintDebug :mobile:assembleDebug :automotive:assembleDebug构建未签名 release APK:
.\gradlew.bat :mobile:assembleRelease :automotive:assembleRelease致谢
感谢 LIVI 项目为本项目提供了重要参考。 感谢 showcase 项目为本项目的 BAA 认证提供重要参考。
许可证
本项目采用 GNU General Public License v3.0 许可。
项目开源地址:xcertplay/README.zh-CN.md at master · shilapi/xcertplay