WheelPlay 是一款 Android 端的局域网 CarPlay 服务端应用。它干的事情很简单也很巧妙:在你的安卓设备上跑一个服务,车机浏览器打开就能显示和操作 iPhone 的 CarPlay 界面。不需要在车机上装任何客户端,也不需要额外部署服务器,只要两者在同一局域网内就行。
核心体验:浏览器就是 CarPlay 屏幕
车机浏览器访问 WheelPlay 显示的地址后,可以串流显示 CarPlay 画面、响应触摸操作、支持全屏。首次使用扫二维码或输入配对码完成绑定,之后自动恢复,不用每次重新配。
视频传输有两种模式可选:WebRTC 直通(H.264/HEVC)或 JPEG 兼容模式。直通失败会自动回退 JPEG,音频和触控走独立通道不受影响。追求 60fps 的话选 WebRTC 直通并把协商帧率设为 60,实际能跑到多少取决于 iPhone 输出、网络质量和浏览器解码能力。UDP 不通或编码不兼容时自动降级,不用手动干预。
音频默认由 Android 设备处理,也可以切换到浏览器播放。浏览器麦克风支持通过可信 HTTPS 页面接入 CarPlay 语音输入,但需要本地证书配置——如果车机浏览器不支持可信 HTTPS 或 AudioWorklet,就继续用 Android 麦克风。
三种构建模式之外的定制细节
自定义车厂入口:CarPlay 里的“返回车机”按钮名称和图标可以改。在设置里选图片裁剪为正方形,或者恢复默认的 NIO 样式。下次连接 iPhone 生效,图片存在应用私有目录里。
定位来源切换:默认用 iPhone 自身定位,WheelPlay 不声明也不上报外部位置。也可以选择 Android 设备定位,下次连接并取得精确定位权限后按 iPhone 请求提供。具体融合逻辑由 iOS 和导航 App 决定。
安全区域自定义:四边 0–40% 可调,带实时预览。修改安全区域或麦克风设置会触发重连。
浏览器离线策略:可选保持连接,或等待 1/5 分钟后断开 iPhone。重连浏览器会取消计时器。
Canvas 显示模式(实验性):当车机浏览器的 <video> 元素显示异常时,可勾选此项。视频仍在后台由 <video> 解码,但用 drawImage() 绘制到可见 Canvas 上,触控区域按比例映射。可能增加 GPU/CPU 消耗,状态栏帧率统计不代表 Canvas 实际绘制帧率。这个模式需要实车验证——如果遮罩只覆盖原生视频元素可能有效,如果系统在整个页面叠加遮罩则无法保证。请在车辆停稳后测试,行驶中仅使用必要导航界面。
Tesla 兼容模式(实验性)
内置适配 VPN Hotspot 的 Root 路由方案,需要已 Root 且提供 su/ip/iptables 的设备。开启系统热点让车机连接,启用 Tesla 兼容模式后访问 http://100.96.0.1/。映射端口范围 1–1023,默认 80/443,仅对指定访问 IP 生效。关闭模式或停止服务时自动清理路由规则。普通 Web 监听不依赖 Root,Tesla 模式也不申请 VPN 授权。仍需实机验证。
安全与隐私边界
- 仅适用于可信局域网。HTTP 配对、WebSocket 控制和 JPEG 通道未加密,WebRTC 视频使用 DTLS-SRTP
- 浏览器麦克风必须通过本地 HTTPS/WSS,不要强行跳过证书警告
- 切勿将服务暴露到公网
- 设备记忆保存在浏览器本地存储中,Android 端仅持久保存随机密钥哈希,六位配对码不进入备份
- CarPlay 认证资源在本机校验,不上传、不参与备份
- 同一时间仅允许一个浏览器控制会话
使用要求
- Android 9+
- 车机浏览器需支持现代网页标准和触摸交互
- 两台设备局域网互通
- 无线连接兼容性取决于设备网络能力
- 画面流畅度受设备性能、网络质量和系统后台管理影响
关于 CarPlay 认证资源
源码构建默认不含认证资源,导入校验通过后才会启动 Web 服务和 CarPlay。可在设置中手动选择 identity.pk8 和 certificate.p7b,或从 DiPlay APK 导入(无需安装 DiPlay,文件管理器分享即可)。公开分发的开源安装包不包含认证资产,由用户自行导入。
WheelPlay 解决的是一个很具体的痛点:车机不支持 CarPlay,或者原厂 CarPlay 体验太差,但车机有个还算能用的浏览器。它把 CarPlay 变成了一个网页服务,让浏览器充当显示和交互终端。不是完美替代原生 CarPlay,但在硬件限制下提供了一个可用的折中方案。
最后再强调一次:所有实验性功能请在停车状态下验证。开车的时候,你的注意力应该在路面上,不是在调试 Canvas 渲染或者 Tesla 路由规则上。










