Repository navigation
v0.2.31: 增强车机真实蓝牙MAC探测与无蓝牙热点投屏,修复无线CarPlay仅画面无声
·
32 commits
to main
since this release
🚀 v0.2.31 更新说明 (Release Notes)
1. 🔊 修复无线 CarPlay 仅有画面没有声音,必须切原车蓝牙媒体页才出声的底层根因 (Issue #65)
- 根因分析:在 Android 5.1 / 老旧车机系统上,系统原生的
BluetoothAdapter.getAddress()往往返回占位符地址(如02:00:00:00:00:00)或受权限沙箱限制返回 null。旧版 DiPlay 降级使用基于公钥生成的虚拟 MAC 地址并在 AirPlay/info及 iAP2 特征中广播该虚拟地址。- 由于广播的蓝牙 MAC 与车机实际被 iPhone 配对的原车硬件蓝牙 MAC 不匹配,iOS 系统将原车硬件蓝牙识别为独立的 A2DP 音频设备,而不是与当前 CarPlay 会话绑定的音频通道,因此 iOS 拒绝建立 AirPlay Wi-Fi 音频流(未发送
SETUP type=100 audio)。 - 而老款车机底层 MCU 硬件混音器仅在原车蓝牙音乐 App 处于前台时才将蓝牙通道输出到功放,导致切到 DiPlay 画面时完全无声。
- 由于广播的蓝牙 MAC 与车机实际被 iPhone 配对的原车硬件蓝牙 MAC 不匹配,iOS 系统将原车硬件蓝牙识别为独立的 A2DP 音频设备,而不是与当前 CarPlay 会话绑定的音频通道,因此 iOS 拒绝建立 AirPlay Wi-Fi 音频流(未发送
- 深度精准修复:
- 新增多级车机真实硬件蓝牙 MAC 探测解析器(
BluetoothAddressResolver):深度反射BluetoothAdapter.mService.getAddress()、检索Settings.Secure/System、读取系统底层属性(persist.sys.bluetooth.address、ro.bt.bdaddr_path、persist.bt.mac等)与/data/misc/bluetooth/bdaddr等系统底层节点,精准识别并优先采用车机真实蓝牙 MAC; - 在【设置】->【连接设置】中新增原车蓝牙地址 (Car Bluetooth address) 自定义配置项,自动展示当前探测到的车机真实硬件蓝牙 MAC,并支持车主手动输入覆盖或一键恢复自动探测,确保 AirPlay / iAP2 握手声学设备身份完全统一。
- 新增多级车机真实硬件蓝牙 MAC 探测解析器(
2. 🚗 支持车机无蓝牙/第三方App受限热点无线 CarPlay 流程推进 (Issue #66)
- 根因分析:部分定制车机(如北京现代库斯途等)开启车机自带 Wi-Fi 热点且 iPhone 已连接该热点,但系统将原生蓝牙权限严格限制在系统私有应用内,导致第三方 App 无法获取已配对蓝牙设备。旧版代码在
startWirelessSession中由于找不到已配对蓝牙直接抛出IOException("Bluetooth adapter is unavailable")或IOException("No unambiguous bonded iPhone found")中断流程,未能启动 Bonjour 广播与 AirPlay 服务端监听。 - 深度精准修复:
- 重构无线启动流,解除必须依赖蓝牙握手的强硬校验;当检测到蓝牙不可用或无已配对设备时,自动平滑回退至 Wi-Fi 发现与 AirPlay 监听模式;
- 提前装载 iAP 隧道控制器(
media.setIapTunnelHandler),让已连入车机热点的 iPhone 可以直接发起 AirPlay / iAP 隧道连接,免除因蓝牙受阻导致的连接中断。
3. 🛠️ 完善老款车机(全志 T3 / Android 5.1)系统服务与 TLS 1.2 兼容 (Issue #67)
- 兼容 Android 5.1 及以下系统(避免高版本 API
getSystemService(Class)),修复蓝牙适配器探测; - Lockdown 通信优先探测 TLSv1.2 SSLContext,避免老旧固件抛出
TLS engine supports neither TLSv1.2 nor TLSv1.3。
校验信息:
- 文件名:
DiPlay-v0.2.31-legacy-release.apk - SHA-256:
bbe587035cedd455334deea2f89e9e8d905e096fb34c352691039650b5f5a171 - 签名方案: v1 (JAR) + v2 (APK Signature) 双重签名,兼容 Android 4.4 ~ Android 14+