PBAP:Phone Book Access Profile的简称,电话本访问协议,是一种基于OBEX的上层协议,该协议可以同步手机这些具有电话本功能设备上的通讯录和通话记录等信息。
整体架构如下:
PBAP定义了两种角色
Phone Book Server Equipment (PSE):拥有电话本源数据的设备,作为服务端,比如手机。
Phone Book Client Equipment (PCE):向PSE端请求电话本信息的设备,作为客户端,比如车载蓝牙。
PSE如果是手机等带有SIM卡的设备,那其存储源数据的地方可能是手机也可能是SIM卡,因此在同步数据时需要考虑的更全面。
设备数据存储形式如下图所示:
上图中各个电话簿对象缩写说明如下表:
所以在同步获取相关数据时需要指明从哪个路径下获取对应的数据,即从手机同步还是从SIM卡中同步数据。
- 手机路径:telecom/xxx.vcf
- SIM卡路径:SIM1/telecom/xxx.vcf
因此根据同步的路径和同步对象的不同,我们大致可以得出四种不同的同步命令:
- 同步手机中的通讯录
- 同步SIM卡中的通讯录
- 同步手机中的通话记录
- 同步SIM卡中的通话记录
PCE通过SDP对PSE进行服务发现,PSE的SDP格式如下:
常用到的可以通过Supported Repositories字段知道PSE是否支持
Speed dial(快速拨号):以一个按键代替某号码,进行快速拨号
Favorites(收藏联系人)等功能。
同步通讯录或者通话记录,请求格式如下;通过指定Name值表示请求通讯录或者通话记录
Name:telecom/pb.vcf、SIM1/telecom/pb.vcf、telecom/ich.vcf、SIM1/telecom/ich.vcf等等
PropertySelector:可选参数如下
Format:vCard 2.1 或者 vCard 3.0
MaxListCount:表示想获取的条目的最大值,65535表示没有限制,0表示PCE想知道指定的pb/ich/och等在PSE中的数量
示例
如下示例表示请求手机中的通讯录的数量
如下示例表示请求手机中SIM卡一个通讯录信息
如下示例表示请求手机中七个播出的通话记录信息
回复格式如下
如果PCE指定的PropertySelector PSE支持的话,必须回复;如果不支持的话,可以忽略。但是有些是强制支持的。
vCard 2.1 VERSION ,N 和 TEL.
vCard 3.0 VERSION, N, FN 和 TEL.
示例
如下示例表示回复手机中的通讯录,包含此通讯录的电话/姓/名。
通话记录回复包含三种属性
• MISSED 未接
• RECEIVED 接听
• DIALED 拨打
以2005年3月20号10点为例,回复格式如下
For vCard 2.1:
X-IRMC-CALL-DATETIME;MISSED:20050320T100000
For vCard 3.0:
X-IRMC-CALL-DATETIME;TYPE=MISSED:20050320T100000
示例
如下表示一通在2022年12月03号14:34:51拨出10000的电话