蓝牙电话之PBAP-优化通话记录的同步
作者:互联网
优化通话记录的同步流程
PBAP同步的通讯录一般包含联系人 + 通话记录,今天我们就来简单聊聊同步通话记录时的相关优化。
通话记录分为 未接来电、呼入、呼出 这三种类型,每种类型的数据在手机端的存储路径如下图所示:
需要哪种类型的通话记录就使用对应的路径名,因此安卓源码中PBAP的PCE端在pbap连接成功后自动依次同步这三种类型的通话记录
然而实际项目中只是要求同步前N条通话记录过来就行,那这N条通话记录该怎么分配呢?如果每种类型分配 N/3 去同步的话会存在如下两个问题:
- 在手机上排在前N条之后的通话记录被同步过来
- 手机上某种类型的通话记录不足 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