是一种定义了通信规则和数据格式的应用层协议。它解决了“设备能连但不能用”的问题,使设备之间不仅能建立连接,还能实现特定功能,并确保跨厂商兼容。
很多 Android 开发者只关注连接、读写等 API 操作,却忽视了这些操作背后的通信规则——正是 Profile 在发挥作用。
Profile 是由Bluetooth SIG定义的应用协议集合,规定了某一类蓝牙应用的行为、角色、数据格式等,确保不同厂商设备能“说一样的语言”。
比如 A2DP Profile 用于传输音频,HFP 用于通话,SPP 用于串口通信。只要两台设备支持同一个 Profile,它们就能协同工作。
Profile 位于顶层,是对底层协议的功能封装,开发者只需面向 Profile 编程,不必深入协议细节。
在 Android 蓝牙设置中,不同设备显示不同图标(耳机、键盘、手表),正是系统根据广播中声明的 Profile 类型来判断设备功能的体现。
两者虽机制不同,但部分功能存在对应关系(如 HID 对应 HOGP),现代设备通常同时支持二者(双模)。
SPP(Serial Port Profile)是经典蓝牙中最常用的配置文件之一,用于在两个设备间模拟 RS-232 串口,实现点对点的字节流通信。它基于 RFCOMM 协议,开发者无需关心底层传输,只需读写流即可完成通信。
HFP(Hands-Free Profile)用于蓝牙设备与手机间的通话功能,包括音频传输和通话控制。
经典蓝牙中,大多数Profile(如SPP)都建立在RFCOMM协议之上:
深入掌握蓝牙 Profile,不只是“扫盲”,更是打造高质量应用的关键: