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

本文主要讨论了在安卓5.0版本后,由于蓝牙MAC地址动态生成带来的挑战,即如何在蓝牙芯片开发中获取手机的唯一标识ID。针对杰理蓝牙AC63和AC695X系列芯片,开发者可以通过协议栈提供的接口ble_list_get_id_addr,利用动态MAC地址生成一个唯一的ID。作者推测安卓5.0后的实现可能在协议栈内部维护了一个映射表。文章邀请对此感兴趣的蓝牙开发者共同探讨解决方案。
摘要由CSDN通过智能技术生成

前言:

安卓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版本之前的生成方式,做了一层接口抽象,其实协议栈内部还是有一个唯一码去标识。

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值