分享

BLE蓝牙获取手机端唯一码(UUID)...

 xfh888 2023-01-08 发布于江苏

前言:

安卓5.0版本后,为了保护用户隐私,安卓设备蓝牙的MAC地址会动态生成,蓝牙芯片作为从机,没法获取到主机(手机端)UUID,或某一个唯一标识来区别每一台手机。

在手机和蓝牙芯片开发中,如果想要标识每一台手机,就必须给每一台手机一个唯一的标识ID绑定,用于后面软件开发鉴权等,那么如何获取呢?

安卓5.0版本之前,每个手机MAC地址是固定的,每次配对连接都是同一个。在各种渠道上找了很多资料,包括度娘、和芯片代理商、芯片原厂工程师都没有找到5.0后MAC地址动态生成怎么映射到每一台手机,怎么标识每一台手机。

开发事例:

目前开发的蓝牙芯片为杰理蓝牙AC63和AC695X系列,以这两个芯片为事例,其实在ble协议栈中,有提供相关接口,根据动态的MAC地址传入协议栈,从协议栈底层映射出一个唯一的ID。以杰理芯片为例,提供了接口ble_list_get_id_addr,该接口在ble_api.h文件中定义,配对完成后会动态生成一个MAC地址,将该MAC地址传入这个接口,会返回一个出参,这个出参就是给当前连接的主机(手机端)生成的一个唯一码(UUID),接口具体实现没有暴露,猜测应该是在配对时,生成的MAC是根据某种算法生成的,生成后协议栈内部有一个对应的表,每次动态生成的MAC都存在这个表里面,标的索引就是返回的这个唯一码(UUID)。

猜测安卓5.0后,动态生成MAC这个实现的机制,应该是基于5.0版本之前的生成方式,做了一层接口抽象,其实协议栈内部还是有一个唯一码去标识。

欢迎所有对蓝牙开发感兴趣的同仁探讨。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多