最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。
文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先贴一个HFP实现的主要功能的图。
从此图也可以看到基本上都是与电话相关的功能。
这是SPEC中Service Level Connection建立的交互过程。其中HF为Hand Free,AG为Audio Gateway,这里可以认为是蓝牙耳机(HF)和手机(AG)。
从图中可以看到SLC的建立是以RFCOMM连接建立为基础,RFCOMM是串口模拟协议,这里不做讨论。然后开始进行AT命令的发送与回复。
接下来就到了喜闻乐见的代码阶段分析阶段了
为此我做了一张图
图中可以看到SLC建立的起点是从connect开始,就是当耳机和手机已经处于paired状态。这时候你点击该设备,安卓中应该都是此时开始连接。
这张图可能有的代码有一些跳跃,如果不明白的可以参照一下下面接听电话的代码流程图&#