其他分享
首页 > 其他分享> > 蓝牙电话之PBAP-优化通话记录的同步

蓝牙电话之PBAP-优化通话记录的同步

作者:互联网

优化通话记录的同步流程

在这里插入图片描述

PBAP同步的通讯录一般包含联系人 + 通话记录,今天我们就来简单聊聊同步通话记录时的相关优化。

通话记录分为 未接来电呼入呼出 这三种类型,每种类型的数据在手机端的存储路径如下图所示:
在这里插入图片描述

需要哪种类型的通话记录就使用对应的路径名,因此安卓源码中PBAP的PCE端在pbap连接成功后自动依次同步这三种类型的通话记录
在这里插入图片描述

然而实际项目中只是要求同步前N条通话记录过来就行,那这N条通话记录该怎么分配呢?如果每种类型分配 N/3 去同步的话会存在如下两个问题:

  1. 在手机上排在前N条之后的通话记录被同步过来
  2. 手机上某种类型的通话记录不足 N/3 ,则最后同步过来的通话记录总数肯定少于N

出现如上的问题后会导致PCE端的通话记录数据和PSE端前N条不一致,理想的解决方案是使用一条指令将PSE端的前N条通话记录一起同步过来,而PBAP协议也为我们提供了这样的同步路径:CCH_PATH = “telecom/cch.vcf”

使用 CCH_PATH 同步通话记录,PSE端会将CallLog数据一起发送过来,因此需要PCE端做好类型区分工作,查看《PBAP_v1.2.3》协议中3.1.4.1 Call history extension小节中定义了CallLog的时间戳这个属性可以结合三种CallLog类型使用,也就是PSE发送的通话记录的时间戳这个属性中会带有当前这条CallLog的类型
在这里插入图片描述

PCE在解析Vcard数据时就可以通过时间戳中带的类型来标志通话记录TYPE并保存到 VCardEntry ,同步完成后蓝牙服务通过CallLogPullRequest. onPullComplete()将数据取出存储到数据库中。VCard的解析流程都在 frameworks\opt\vcard\java\com\android\vcard 下处理的,感兴趣的同学可以研究下或者私信留言一起讨论,共同学习,一起进步!

更多互联互通技术,欢迎关注微信公众号:Connectivity

在这里插入图片描述

标签:同步,通话记录,蓝牙,PSE,PBAP,类型,PCE
来源: https://blog.csdn.net/weixin_44260005/article/details/121504171