尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【android bluetooth 案例分析 04】【Carplay 详解 3】【Carplay 连接之车机主动连手机】 - 教程

【android bluetooth 案例分析 04】【Carplay 详解 3】【Carplay 连接之车机主动连手机】 - 教程
📅 发布时间:2026/6/19 19:50:39

【android bluetooth 案例分析 04】【Carplay 详解 3】【Carplay 连接之车机主动连手机】 - 教程

1. 背景

在前面的文章中,我们已经介绍了 carplay 在车机中的角色划分, 并实际分析了 手机主动连接车机的案例。 感兴趣可以 查看如下文章介绍。
【android bluetooth 案例分析 04】【Carplay 详解 1】【CarPlay 在车机侧的蓝牙通信原理与角色划分详解】
【android bluetooth 案例分析 04】【Carplay 详解 2】【Carplay 连接之手机主动连车机】

本节 将详细分析 车机 主动 连接 iphone手机 carplay 这一过程。

先回顾一下 carplay 整个流程:

  1. EIR 广播识别

    • iPhone 开启 EIR 广播,包含 UUID_DEVICE_CARPLAY_EIR 2d8d2466-e14d-451c-88bc-7301abea291a
    • 车机通过蓝牙扫描识别支持 CarPlay 的 iPhone
  2. 蓝牙连接

    • 没有配对,需要先配对
    • iPhone 主动连接车机的 SPP Server UUID (UUID_IAP_ACCESSORY 00000000-deca-fade-deca-deafdecacaff)
      • 车机需要先 listenUsingRfcommWithServiceRecord
    • 车机作为 Client 主动连接 iPhone 暴露的 Server UUID
      • (需 iPhone 开启EIR 广播)
  3. IAP2 协议交互

    • 交换设备信息、认证令牌、能力参数(支持哪种 Wi-Fi 架构)
  4. Wi-Fi 建链

    • 手机连接车机热点,或车机连接手机热点,完成 IP 建立
  5. TCP & mDNS 发现 CarPlay 服务

    • 建立 TCP 通信,寻找 _carplay._tcp.local 服务,启动 CarPlay Session
  6. 启动投屏/音频/导航服务

上面总过分为 6 步: 但是涉及到蓝牙的只有 1 、 2、 3 步。 那我们就来分别来介绍一下 在当前 车机主动连手机的情形。这三步是如何具体实操的。

2. 车机 主动 连接 手机

1. EIR 广播

在 【android bluetooth 案例分析 04】【Carplay 详解 2】【Carplay 连接之手机主动连车机】 中已经详细介绍了:

  • 手机 广播 EIR , 车机扫描 的过程。
  • 车机 广播 EIR, 手机扫描 的过程。

这里不再介绍。

2. 蓝牙连接 iap 并通信

没有配对,需要先配对 : 这个是常规操作, 这里不分享了。

这里主要分析一下。 车机 主动连接 手机 iap 的过程:

当我们在车机 carplay app 连接界面 中 点击 连接 手机时:

车机将执行如下 代码:

public static final UUID CLINET_SPP_UUID = UUID.fromString("00000000-deca-fade-deca-deafdecacafe"
)
;
BluetoothSocket mClientSocket = device.createRfcommSocketToServiceRecord(CLINET_SPP_UUID)
;
mClientSocket.connect(
)
;
// 之后就可以拿着 mClientSocket 来进行 iap 通信了

1. createRfcommSocketToServiceRecord 介绍

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID uuid)
;
  • 该函数通过指定的 UUID,创建一个指向远端设备某个特定服务的蓝牙 Socket。

  • 实质上,它是通过 SDP (Service Discovery Protocol) 发现对方设备是否注册了这个 UUID 所代表的服务,并建立一个 RFCOMM 连接(类似串口通信)。

  • createRfcommSocketToServiceRecord 并不会立即建立连接,它只是创建了一个蓝牙 Socket 实例,需要再调用 .connect() 才真正开始连接。

  • 该函数只适用于已配对设备之间的通信,未配对时会抛出异常或被拒绝连接。

  • UUID 必须与对方设备注册的一致,否则 SDP 查询失败,连接将报错。

2. btsnoop 日志分析

在这里插入图片描述

在这里插入图片描述

  • 车机 向 手机 发起 SDP 请求 ,查询 00000000-deca-fade-deca-deafdecacafe 服务。
  • 手机回复 当前 服务的 rfcomm 通道为 1

在这里插入图片描述

  • 车机拿到 手机对应的 rfcomm channel=1 后, 主动发起连接。
  • 连接成功后, 就开始对应 iap 通信。 通过 RFCOMM 通道传输配对、身份认证、Wi-Fi 架构协商、热点信息等数据。
  • 之后手机就可以 将 画面 通过wifi 投屏到车机中。

3. 总结

一般情况下 createRfcommSocketToServiceRecord 函数都是 手机侧主动连接车机 使用的,此时:

功能Server 端Client 端
方法listenUsingRfcommWithServiceRecord(UUID)createRfcommSocketToServiceRecord(UUID)
主体车机iPhone(或其他 Bluetooth Client)
作用注册服务监听连接查找服务并尝试连接
CarPlay 中用途车机开放 IAP2 服务iPhone 主动发起连接

但是 在车机 侧如果 调用 createRfcommSocketToServiceRecord 去连手机时, 正好和上述反了。此时手机侧 是 服务段。 所以猜测手机 使用了 listenUsingRfcommWithServiceRecord 作为服务端了。

  • 本文就是对 该场景的分享。

对应 createRfcommSocketToServiceRecord 函数的分析,我将单独 一篇文章分析。

相关新闻

  • STL-list - 实践
  • 量化投资 —— 实践
  • 2025石材加工厂家最新品牌推荐排行榜:大祥工艺,业务覆盖东北,辽宁盖州,专业浮雕雕刻高级技师

最新新闻

  • MC68060软件包深度解析:浮点库实现与操作系统集成实战
  • C语言数学函数库深度解析:fabs、fmod、hypot的原理、陷阱与工程实践
  • 高中/高三/高考 回忆录
  • 从晶体管到可编程单元:深入解析FPGA芯片的架构层次与设计哲学
  • 02 代码整洁之道阅读笔记
  • 2026年卫生间漏水维修服务适配指南:昆山鼎壹万防水补漏公司及苏州本地服务商综合适配解析 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号