Profile 这个单词在蓝牙核心规范中出现的非常多,也是让很多同学很费解的一个单词。
Profile 本意是”脸的侧面轮廓“,一定要注意:“脸的侧面轮廓”不等于脸本身(脸本身是非常复杂和细致的),而是对脸的一部分进行抽象、描述和定义。
蓝牙规范是非常复杂的,包含的内容非常多(蓝牙4.0/4.1/4.2/5.0/5.1……),同时蓝牙规范又是十分灵活的,市面上大部分蓝牙产品只需要实现其中很少的一部分就可以实现互联互通,其中大部分可选的规范都可以称之为Profile,所以如果把Profile翻译为“子规范”就可以很好地理解。
为什么蓝牙没有直接选用“子规范”这个名字,因为英文里没有这样一个单词,所以选用了 Profile(而没有用spec,spec作为core spec已经被用了),这就可以很好地理解 Profile 出现这么多的原因,因为蓝牙的可选规范太多了,下面我们会一个个介绍。
蓝牙的 Profile 存在层级之分
Profile定义了一种基于蓝牙的应用,每个Profile规范主要包括针对开发者的接口,消息的格式和标准(例如音频压缩),使用蓝牙协议栈的组件等。
每一种Profile对应于一个UUID,Bluetooth种UUID的概念类似于TCP/IP中端口的概念,每一个UUID运行一种服务。
GAP,Generic Access Profile,通用访问规范
该 Profile 保证不同的蓝牙产品可以发现对方并建立连接。
一般访问应用规范(GAP)定义了蓝牙设备如何发现和建立与其他设备的安全(或不安全)连接。它处理一些一般模式的业务(如询问、命名和搜索)和一些安全性问题(如担保),同时还处理一些有关连接的业务(如链路建立、信道和连接建立)。GAP规定的是一些一般性的运行任务。因此,它具有强制性,并作为所有其它蓝牙应用规范的基础。
GATT,Generic Attribute Profile,通用属性配置规范
定义了属性类型并规定了如何使用,包括了一个数据传输和存储的框架和一些基本操作。
GATT定义了两种角色:
SDAP,Service Discovery Application Profile,服务发现应用规范
通过该Profile,一个Bluetooth设备可以找到其它Bluetooth设备提供的服务,以及查询相关的信息。
SPP,Serial Port Profile,串口规范
定义了如何在两台BT设备之间建立虚拟串口并进行连接。
例如,在两台电脑或者Labtop之间就可以建立这种连接。
GOEP,Generic Object Exchange Profile,通用对象交换规范
这个Profile的名字有些费解,它定义的是数据的传输,包括同步,文件传输,或者推送其它的数据。可以理解为与内容无关的传输层协议,可以被任何应用用来传输自己定义的数据对象。
A2DP,Advenced Audio Distribution Profile,先进音频传输规范
A2DP能提供mono或stereo的音质,一般来讲,在市面的应用产品中,支持A2DP的蓝牙产品都有支持AVRCP。
A2DP定义了两个角色:
AVRCP,Audio/Video Remote Control Profile,音频/视频远程控制规范。
AVRCP是控制音频视频流的协议,包括暂停、停止、启动重放、音量控制及其它类型的远程控制操作。
AVRCP主要是对应一些媒体播放控制,基本可以等价于HID,例如PC的“多媒体键盘”上的音量键、播放暂停键等。
AVRCP事件可以看成HID的特殊情况,具体在Android的keybord layout中定义按键的具体含义。
AVRCP定义了两个角色:
DUN,Dial-up Networking Profile,拨号规范
实现一台蓝牙设备通过另外一个带无线功能的蓝牙设备共享上网。
参照:http://msdn.microsoft.com/en-us/library/cc510743.aspx。
HID,Human Interface Device Profile,人机接口设备
HID是标准的键盘、鼠标等的输入输出,例如可以用这个Profile来实现一些简单的远程按键控制。
Android中HID的事件捕获与backKey等等方式相同,可以在使用View.OnKeyListener的onKey来捕获对应的keyCode。
使用场景:鼠标、键盘、摇杆、简单的按键和指示灯
HSP,Headset Profile,耳机规范
提供手机与耳机之间通话所需的基本功能,实现了最基本的通话操作:接听电话、挂断电话、调节音量、声音在手机/蓝牙耳机之间切换。
HSP定义了两个角色:
HFP,Hands free Profile,免提功能
让蓝牙设备可以控制电话,如接听、挂断、拒接、拨号、免提等。 HSP仅实现了最基本的通话操作:接听电话、挂断电话、调节音量、声音在手机/蓝牙耳机之间切换, HFP在功能上是对HSP的扩展,除了上述功能以外,还包括控制三方通话、耳机端来电显示等高级功能。
HFP定义了两个角色:
OPP,Object push profile,面向对象传输协议
用于传输文件。由于OPP profile又细分为OPPC (client)端和OPPS(server)端profile,这两个profile区别在于只有client端可以发起数据传输的过程,但是附件设备与手机通信的情景中,既有手机发起数据传输请求也有设备侧发起传输请求的需要,所以要在设备中实现OPPC和OPPS两个profile。
OPP定义了两种角色:
其他不常用的请参考wiki:https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles