Skip to content

v0.2.31: 增强车机真实蓝牙MAC探测与无蓝牙热点投屏,修复无线CarPlay仅画面无声

Choose a tag to compare

@programmerguohuajing programmerguohuajing released this 10 Oct 08:10
· 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 探测解析器(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 握手声学设备身份完全统一。

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+